diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 0590ed19909..2d2d78ad150 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -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."