AtlatestRepositorysigil-forgejo

sigil-forgejo / tree / src / forgejorepos.sgl

1;;; (forgejo repos) - Forgejo repository API.
2;;;
3;;; Get, list, create, and delete repositories.
4
5(define-library (forgejo repos)
6 (import (sigil core)
7 (sigil string)
8 (forgejo client))
9
10 (export forgejo-get-repo
11 forgejo-list-repos
12 forgejo-create-repo
13 forgejo-create-org-repo
14 forgejo-rename-repo
15 forgejo-delete-repo)
17 (begin
19 ;;; Get repository information.
20 (define (forgejo-get-repo base-url token owner repo)
21 (forgejo-get/json token
22 (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 token
27 (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, suitable
31 ;;; 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 token
34 (forgejo-api-url base-url "user" "repos")
35 #{ name: name
36 description: description
37 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, suitable
42 ;;; 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 token
45 (forgejo-api-url base-url "orgs" org "repos")
46 #{ name: name
47 description: description
48 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 token
54 (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 token
60 (forgejo-api-url base-url "repos" owner repo)))
62 ))