Function: package-dir-info

package-dir-info is a byte-compiled function defined in package.el.gz.

Signature

(package-dir-info)

Documentation

Find package information for a directory.

The return result is a package-desc.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(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
            (let ((file (pop files)))
              ;; The file may be a link to a nonexistent file; e.g., a
              ;; lock file.
              (when (file-exists-p file)
                (insert-file-contents file)
                ;; When we find the file with the data,
                (when (setq info (ignore-errors (package-buffer-info)))
                  ;; stop looping,
                  (setq files nil)
                  ;; set the 'dir kind,
                  (setf (package-desc-kind info) 'dir))))))
        (unless info
          (error "No .el files with package headers in `%s'" default-directory))
        ;; and return the info.
        info))))