emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] elpa-admin 897fef4a23 3/3: * elpa-admin.el (elpaa--core-files): S


From: Stefan Monnier
Subject: [elpa] elpa-admin 897fef4a23 3/3: * elpa-admin.el (elpaa--core-files): Simplify
Date: Thu, 28 Sep 2023 15:48:07 -0400 (EDT)

branch: elpa-admin
commit 897fef4a23009d496bc8e718077f05f9f096ceb8
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * elpa-admin.el (elpaa--core-files): Simplify
    
    (elpaa--core-files): Prefer `nconc` over `append` and precompute a regexp
    rather than recompute them for every file.
    (elpaa--core-files, elpaa--get-devel-version): Be careful to add a /
    at the end of `default-directory`.
---
 elpa-admin.el | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/elpa-admin.el b/elpa-admin.el
index df42432be6..9cbc805ba4 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -921,43 +921,46 @@ of the current `process-environment'.  Return the 
modified copy."
 Core folders are recursively searched, excluded files are ignored."
   (let* ((file-patterns (ensure-list (elpaa--spec-get pkg-spec :core)))
          (excludes (elpaa--spec-get pkg-spec :excludes))
-         (emacs-repo-root (expand-file-name "emacs"))
-         (default-directory emacs-repo-root)
+         (default-directory (expand-file-name "emacs/"))
          (core-files nil))
 
-    ;; ensure we look at files from a core package
+    ;; Ensure we look at files from a core package.
     (cl-assert file-patterns)
 
-    ;; we look at each file or files in folder and add them
-    ;; to core-files
+    ;; We look at each file or files in folder and add them
+    ;; to core-files.
     (dolist (item file-patterns)
       (if (file-directory-p item)
-          (setq core-files (append core-files (directory-files-recursively 
item ".*")))
+          (setq core-files (nconc (directory-files-recursively item ".*")
+                                  core-files))
         (push item core-files)))
 
-    ;; remove all files which match a wildcard in the excludes
-    (setq core-files (seq-remove
-                      (lambda (file-name)
-                        (seq-some
-                         (lambda (wildcard)
-                           (string-match-p (wildcard-to-regexp wildcard) 
file-name))
-                         excludes))
-                      core-files))
-    core-files))
+    ;; Remove all files which match a wildcard in the excludes.
+    (if (null excludes)
+        core-files
+      (let ((re (concat "\\(?: "
+                        (mapconcat #'wildcard-to-regexp excludes "\\)\\|\\(?:")
+                        "\\)")))
+        (seq-remove
+         (lambda (file-name)
+           (string-match-p re file-name))
+         core-files)))))
 
 (defun elpaa--get-devel-version (dir pkg-spec)
   "Compute the date-based pseudo-version used for devel builds."
   (let* ((gitdate
           (with-temp-buffer
             (if (plist-get (cdr pkg-spec) :core)
-                (let
-                    ((core-files (elpaa--core-files pkg-spec))
-                     (default-directory (expand-file-name "emacs")))
+                (let ((core-files (elpaa--core-files pkg-spec))
+                      (default-directory (expand-file-name "emacs/")))
                   ;; For core packages, don't use the date of the last
                   ;; commit to the branch, but that of the last commit
                   ;; to the core files.
                   (apply #'elpaa--call t "git" "log" "--pretty=format:%cI" 
"--no-patch"
                          "-1" "--" core-files))
+              ;; FIXME: Why follow symlinks?  I have the nagging feeling that
+              ;; this used to be needed for the :core case only, so not needed
+              ;; here any more.
               (let* ((ftn (file-truename      ;; Follow symlinks!
                            (expand-file-name (elpaa--main-file pkg-spec) dir)))
                      (default-directory (file-name-directory ftn)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]