X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/11dbed76e7c17ee9a919da0cf4301c20d942df3c..6be39b197ce25f6b91718245037a9ec45c014b2c:/admin/archive-contents.el diff --git a/admin/archive-contents.el b/admin/archive-contents.el index acfe34dba..74e473ea8 100755 --- a/admin/archive-contents.el +++ b/admin/archive-contents.el @@ -1,6 +1,6 @@ ;;; archive-contents.el --- Auto-generate an Emacs Lisp package archive. -*- lexical-binding:t -*- -;; Copyright (C) 2011-2014 Free Software Foundation, Inc +;; Copyright (C) 2011-2015 Free Software Foundation, Inc ;; Author: Stefan Monnier @@ -531,6 +531,7 @@ Rename DIR/ to PKG-VERS/, and return the descriptor." (cond ((member file '("." ".." "elpa.rss" "index.html" "archive-contents"))) ((string-match "\\.html\\'" file)) + ((string-match "\\.sig\\'" file)) ((string-match "-readme\\.txt\\'" file) (let ((name (substring file 0 (match-beginning 0)))) (puthash name (gethash name packages) packages))) @@ -588,10 +589,15 @@ Rename DIR/ to PKG-VERS/, and return the descriptor." "existing checkout.") reference))))) (defun archive--cleanup-packages (externals-list) - "Cleanup packages not registered in the EXTERNALS-LIST." + "Remove subdirectories of `packages/' that do not correspond to known packages. +This is any subdirectory inside `packages/' that's not under +version control nor listed in EXTERNALS-LIST." (let ((default-directory (expand-file-name "packages/"))) (dolist (dir (directory-files ".")) (cond + ((or (not (file-directory-p dir)) (file-symlink-p dir)) + ;; We only add/remove plain directories in elpa/packages (not symlinks). + nil) ((member dir '("." "..")) nil) ((assoc dir externals-list) nil) ((file-directory-p (expand-file-name (format "%s/.git" dir))) @@ -605,6 +611,7 @@ Rename DIR/ to PKG-VERS/, and return the descriptor." (progn (delete-directory dir 'recursive t) (message "Deleted all of %s" dir)) (message "Keeping leftover unclean %s:\n%s" dir status)))) + ;; Check if `dir' is under version control. ((not (zerop (call-process "git" nil nil nil "ls-files" "--error-unmatch" dir))) (message "Deleted untracked package %s" dir) @@ -698,7 +705,7 @@ Rename DIR/ to PKG-VERS/, and return the descriptor." (pcase file-pattern ((pred (stringp)) (cons file-pattern "")) (`(,file ,dest . ,_) (cons file dest)) - (t (error "Unrecognized file format for package %s: %S" + (_ (error "Unrecognized file format for package %s: %S" name file-pattern)))) (if (stringp file-patterns) ;; Files may be just a string, normalize. @@ -717,6 +724,7 @@ Rename DIR/ to PKG-VERS/, and return the descriptor." file dest emacs-repo-root package-root exclude-regexp)))))) (defun archive-add/remove/update-externals () + "Remove non-package directories and fetch external packages." (let ((externals-list (with-current-buffer (find-file-noselect "externals-list") (read (buffer-string)))))