~ruther/guix-local

05332843546c8c7731994ca68a581b1becd99b6b — Nicolas Graves 5 months ago 6aaed93
import: utils: Add git-repository-url? procedure.

* guix/import/utils.scm (git-repository-url?): Add procedure.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 14 insertions(+), 0 deletions(-)

M guix/import/utils.scm
M guix/import/utils.scm => guix/import/utils.scm +14 -0
@@ 74,6 74,7 @@
            peekable-lambda
            peek-body

            git-repository-url?
            download-git-repository
            git-origin
            git->origin


@@ 187,6 188,19 @@ thrown."
(define (peek-body proc)
  (procedure-property proc 'body))

(define (git-repository-url? url)
  "Guess if the URL looks like a Git repository."
  (or (string-prefix? "https://github.com/" url) ; Most common.
      (string-prefix? "https://cgit." url)
      (string-prefix? "https://git." url)
      (string-prefix? "https://gitlab." url)
      (string-prefix? "https://codeberg.org/" url)
      (string-prefix? "https://git.sr.ht/" url)
      (string-prefix? "https://bitbucket.org/" url)
      (string-prefix? "https://framagit.org/" url)
      ;; Fallback.
      (string-suffix? ".git" url)))

(define (download-git-repository url ref)
  "Fetch the given REF from the Git repository at URL.  Return three values :
the commit hash, the downloaded directory and its content hash."