AtlatestRepositorysigil-forgejo
sigil-forgejo / tree / src / forgejopulls.sgl
1
;;; (forgejo pulls) - Forgejo pull request API.2
;;;3
;;; List, get, create, and merge pull requests.5
(define-library (forgejo pulls)6
(import (sigil core)7
(sigil string)8
(forgejo client))10
(export forgejo-list-pulls11
forgejo-get-pull12
forgejo-create-pull13
forgejo-merge-pull14
forgejo-pull-is-fork?)16
(begin18
;;; List pull requests for a repository.19
(define (forgejo-list-pulls base-url token owner repo)20
(forgejo-get/json token21
(forgejo-api-url base-url "repos" owner repo "pulls")))23
;;; Get a single pull request by number.24
(define (forgejo-get-pull base-url token owner repo number)25
(forgejo-get/json token26
(forgejo-api-url base-url "repos" owner repo "pulls"27
(number->string number))))29
;;; Create a new pull request.30
(define (forgejo-create-pull base-url token owner repo title body31
head base)32
(forgejo-post/json token33
(forgejo-api-url base-url "repos" owner repo "pulls")34
#{ title: title35
body: body36
head: head37
base: base }))39
;;; Merge a pull request.40
(define (forgejo-merge-pull base-url token owner repo number)41
(forgejo-post/json token42
(forgejo-api-url base-url "repos" owner repo "pulls"43
(number->string number) "merge")44
#{ Do: "merge" }))46
;;; Check if a pull request is from a fork.47
(define (forgejo-pull-is-fork? pr-data)48
(let* ((head (dict-ref pr-data head: #f))49
(repo (and head (dict-ref head repo: #f))))50
(if repo51
(eq? #t (dict-ref repo fork: #f))52
#f)))54
))