AtlatestRepositorysigil-forgejo

sigil-forgejo / tree / src / forgejotopics.sgl

1;;; (forgejo topics) - Forgejo repository topic management.
2;;;
3;;; List, add, and replace topics on repositories.
4
5(define-library (forgejo topics)
6 (import (sigil core)
7 (sigil string)
8 (sigil array)
9 (forgejo client))
11 (export forgejo-list-topics
12 forgejo-replace-topics
13 forgejo-add-topic
14 forgejo-delete-topic)
16 (begin
18 ;;; List topics on a repository.
19 ;;;
20 ;;; Returns the topic list response.
21 (define (forgejo-list-topics base-url token owner repo)
22 (forgejo-get/json token
23 (forgejo-api-url base-url "repos" owner repo "topics")))
25 ;;; Replace all topics on a repository.
26 ;;;
27 ;;; topics: a list of topic name strings
28 (define (forgejo-replace-topics base-url token owner repo topics)
29 (forgejo-put/json token
30 (forgejo-api-url base-url "repos" owner repo "topics")
31 #{ topics: (list->array topics) }))
33 ;;; Add a single topic to a repository.
34 (define (forgejo-add-topic base-url token owner repo topic)
35 (forgejo-put/json token
36 (forgejo-api-url base-url "repos" owner repo "topics" topic)
37 #{}))
39 ;;; Remove a single topic from a repository.
40 (define (forgejo-delete-topic base-url token owner repo topic)
41 (forgejo-delete token
42 (forgejo-api-url base-url "repos" owner repo "topics" topic)))
44 ))