diff options
author | Philip Kaludercic <philipk@posteo.net> | 2022-10-07 19:19:44 +0200 |
---|---|---|
committer | Philip Kaludercic <philipk@posteo.net> | 2022-10-08 11:57:38 +0200 |
commit | 432252c23f9855d9f43dabd600415305ab0c8b91 (patch) | |
tree | b1d641a8e0b63f8026fb1b8735910a9b5e876779 /lisp/emacs-lisp | |
parent | 077c1533dffc4d1fbd05c8ec29e47bef09934bb8 (diff) | |
download | emacs-432252c23f9855d9f43dabd600415305ab0c8b91.tar.gz emacs-432252c23f9855d9f43dabd600415305ab0c8b91.tar.bz2 emacs-432252c23f9855d9f43dabd600415305ab0c8b91.zip |
Extend package-vc heuristics to multiple source forges
* package-vc.el (package-vc-probable-repository-regexp): Rename to
'package-vc-heusitic-alist'.
(package-vc-heusitic-alist): Add support for multiple VC backends.
(package-vc-sourced-packages-list): Use 'package-vc-heusitic-alist'
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/package-vc.el | 66 |
1 files changed, 41 insertions, 25 deletions
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 2d3769448d2..d9903b3ca3d 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -50,24 +50,44 @@ :group 'package :version "29.1") -(defcustom package-vc-probable-repository-regexp - (rx bos "http" (? "s") "://" - (or (: (? "www.") "github.com" - "/" (+ (or alnum "-" "." "_")) - "/" (+ (or alnum "-" "." "_"))) - (: "codeberg.org" - "/" (+ (or alnum "-" "." "_")) - "/" (+ (or alnum "-" "." "_"))) - (: (? "www.") "gitlab" (+ "." (+ alnum)) - "/" (+ (or alnum "-" "." "_")) - "/" (+ (or alnum "-" "." "_"))) - (: "git.sr.ht" - "/~" (+ (or alnum "-" "." "_")) - "/" (+ (or alnum "-" "." "_")))) - (or (? "/") ".git") eos) - "Regular expression matching URLs that are repositories." - :version "29.1" - :type 'regex) +(defcustom package-vc-heusitic-alist + `((,(rx bos "http" (? "s") "://" + (or (: (? "www.") "github.com" + "/" (+ (or alnum "-" "." "_")) + "/" (+ (or alnum "-" "." "_"))) + (: "codeberg.org" + "/" (+ (or alnum "-" "." "_")) + "/" (+ (or alnum "-" "." "_"))) + (: (? "www.") "gitlab" (+ "." (+ alnum)) + "/" (+ (or alnum "-" "." "_")) + "/" (+ (or alnum "-" "." "_"))) + (: "git.sr.ht" + "/~" (+ (or alnum "-" "." "_")) + "/" (+ (or alnum "-" "." "_"))) + (: "git." (or "savannah" "sv") "." (? "non") "gnu.org/" + (or "r" "git") "/" + (+ (or alnum "-" "." "_")) (? "/"))) + (or (? "/") ".git") eos) + . Git) + (,(rx bos "http" (? "s") "://" + (or (: "hg.sr.ht" + "/~" (+ (or alnum "-" "." "_")) + "/" (+ (or alnum "-" "." "_"))) + (: "hg." (or "savannah" "sv") "." (? "non") "gnu.org/hgweb/" + (+ (or alnum "-" "." "_")) (? "/"))) + eos) + . Hg) + (,(rx bos "http" (? "s") "://" + (or (: "bzr." (or "savannah" "sv") "." (? "non") "gnu.org/r/" + (+ (or alnum "-" "." "_")) (? "/"))) + eos) + . Bzr)) + "Heuristic mapping URL regular expressions to VC backends." + :type `(alist :key-type (regexp :tag "Regular expression matching URLs") + :value-type (choice :tag "VC Backend" + ,@(mapcar (lambda (b) `(const ,b)) + vc-handled-backends))) + :version "29.1") (defun package-vc-commit (pkg) "Extract the commit of a development package PKG." @@ -223,14 +243,10 @@ The output is written out into PKG-FILE." ;; heuristic and use the URL header, that might already be ;; pointing towards a repository, and use that as a backup (and-let* ((url (alist-get :url extras)) - ((string-match-p package-vc-probable-repository-regexp - url))) - ;; XXX: Currently `package-vc-probable-repository-regexp' - ;; only contains Git repositories, so we can infer the - ;; repository type. This might work for now, but is not a - ;; particularly resilient approach. + (backend (alist-get url package-vc-heusitic-alist + nil nil #'string-match-p))) (setf (alist-get :vc (package-desc-extras (cadr pkg))) - (list 'Git url)) + (list backend url)) t)))) package-archive-contents)) |