AtlatestRepositorysigil-forgejo
sigil-forgejo / tree / src / forgejorepos.sgl
1
;;; (forgejo repos) - Forgejo repository API.2
;;;3
;;; Get, list, create, and delete repositories.5
(define-library (forgejo repos)6
(import (sigil core)7
(sigil string)8
(forgejo client))10
(export forgejo-get-repo11
forgejo-list-repos12
forgejo-create-repo13
forgejo-create-org-repo14
forgejo-rename-repo15
forgejo-delete-repo)17
(begin19
;;; Get repository information.20
(define (forgejo-get-repo base-url token owner repo)21
(forgejo-get/json token22
(forgejo-api-url base-url "repos" owner repo)))24
;;; List repositories for a user.25
(define (forgejo-list-repos base-url token owner)26
(forgejo-get/json token27
(forgejo-api-url base-url "users" owner "repos")))29
;;; Create a new repository for the authenticated user.30
;;; auto_init defaults to #f so the returned repo is empty, suitable31
;;; for pushing an already-populated local repo without a force-push.32
(define (forgejo-create-repo base-url token name description)33
(forgejo-post/json token34
(forgejo-api-url base-url "user" "repos")35
#{ name: name36
description: description37
default_branch: "master"38
auto_init: #f }))40
;;; Create a new repository under an organization.41
;;; auto_init defaults to #f so the returned repo is empty, suitable42
;;; for pushing an already-populated local repo without a force-push.43
(define (forgejo-create-org-repo base-url token org name description)44
(forgejo-post/json token45
(forgejo-api-url base-url "orgs" org "repos")46
#{ name: name47
description: description48
default_branch: "master"49
auto_init: #f }))51
;;; Rename a repository.52
(define (forgejo-rename-repo base-url token owner repo new-name)53
(forgejo-patch/json token54
(forgejo-api-url base-url "repos" owner repo)55
#{ name: new-name }))57
;;; Delete a repository.58
(define (forgejo-delete-repo base-url token owner repo)59
(forgejo-delete token60
(forgejo-api-url base-url "repos" owner repo)))62
))