]> code.delx.au - gnu-emacs/commitdiff
* emacs-lisp/package.el (package-dir-info): New function.
authorArtur Malabarba <bruce.connor.am@gmail.com>
Tue, 13 Jan 2015 01:26:58 +0000 (23:26 -0200)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Sat, 17 Jan 2015 00:19:17 +0000 (22:19 -0200)
Find package information for a directory. The return result is a
`package-desc'.

lisp/ChangeLog
lisp/emacs-lisp/package.el

index 93796e67a3d99750341d08914315dadc43e5fb16..dce08a4225513f8ce9d212480d56bdf55f5cf3e0 100644 (file)
@@ -3,6 +3,8 @@
        * emacs-lisp/package.el (package--read-pkg-desc): New
        function. Read a `define-package' form in current buffer. Return
        the pkg-desc, with desc-kind set to KIND.
+       (package-dir-info): New function. Find package information for a
+       directory. The return result is a `package-desc'.
 
 2015-01-16  Jorgen Schaefer  <contact@jorgenschaefer.de>
 
index d5906675596c0f92249706c31afa90b8f19a440d..77b15c104efe1101175ff1abf62d12540fd56bf1 100644 (file)
@@ -1281,6 +1281,24 @@ The return result is a `package-desc'."
           (package--read-pkg-desc 'tar)
         (kill-buffer (current-buffer))))))
 
+(defun package-dir-info ()
+  "Find package information for a directory.
+The return result is a `package-desc'."
+  (cl-assert (derived-mode-p 'dired-mode))
+  (let* ((desc-file (package--description-file default-directory)))
+    (if (file-readable-p desc-file)
+        (with-temp-buffer
+          (insert-file-contents desc-file)
+          (package--read-pkg-desc 'dir))
+      (let ((files (directory-files default-directory t "\\.el\\'" t))
+            info)
+        (while files
+          (with-temp-buffer
+            (insert-file-contents (pop files))
+            (if (setq info (ignore-errors (package-buffer-info)))
+                (setq files nil)
+              (setf (package-desc-kind info) 'dir))))))))
+
 (defun package--read-pkg-desc (kind)
   "Read a `define-package' form in current buffer.
 Return the pkg-desc, with desc-kind set to KIND."