branch: elpa-admin
commit cc633282cac9e535a8da1f6c0df873790cc762ac
Author: Stefan Monnier <[email protected]>
Commit: Stefan Monnier <[email protected]>
* GNUmakefile (.gitignore): New rule
(all): Use it.
* admin/archive-contents.el (archive-gitignore-externals): New function.
* .gitignore: Update.
---
GNUmakefile | 6 +++++-
admin/archive-contents.el | 24 ++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/GNUmakefile b/GNUmakefile
index d23d523..7d6d100 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -8,7 +8,7 @@ SITE_DIR=site
.PHONY: archive-tmp changelogs process-archive archive-full org-fetch clean
all do-it
-all: all-in-place
+all: all-in-place .gitignore
CR_EXCEPTIONS=copyright_exceptions
.PHONY: check_copyrights
@@ -81,6 +81,10 @@ archive-full: archive-tmp org-fetch
#mkdir -p archive/admin
#cp admin/* archive/admin/
+.gitignore: externals-list
+ $(EMACS) -l $(CURDIR)/admin/archive-contents.el \
+ --eval '(archive-gitignore-externals "$<" "$@")'
+
# FIXME: Turn it into an `external', which will require adding the notion of
# "snapshot" packages.
org-fetch: archive-tmp
diff --git a/admin/archive-contents.el b/admin/archive-contents.el
index 2b1ffec..6f19177 100755
--- a/admin/archive-contents.el
+++ b/admin/archive-contents.el
@@ -761,5 +761,29 @@ If WITH-CORE is non-nil, it means we manage :core packages
as well."
(_ (message "Unknown external package kind `%S' for %s"
kind name)))))))
+;;; Manage .gitignore
+
+(defun archive-gitignore-externals (elf gf)
+ (let* ((el (read (find-file-noselect elf)))
+ (exts (delq nil
+ (mapcar (lambda (x)
+ (if (eq :external (nth 1 x)) (car x)))
+ el)))
+ (core (delq nil
+ (mapcar (lambda (x)
+ (if (eq :core (nth 1 x)) (car x)))
+ el))))
+ (with-current-buffer (find-file-noselect gf)
+ (goto-char (point-min))
+ (when (re-search-forward
+ "#.*External.*git.*\n\\(packages/[^*/\n]+/?\n\\)+"
+ nil 'move)
+ (replace-match ""))
+ (insert "# External packages with their own .git tree [autogenerated].\n"
+ (mapconcat (lambda (p) (format "packages/%s/\n" p))
+ (sort (append exts core) #'string<)
+ ""))
+ (save-buffer))))
+
(provide 'archive-contents)
;;; archive-contents.el ends here