X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/90b3be1ad388780e796da3d69ed546e757b6dad5..23a624ca1d40fa9cefd7229ac6152b79278a6517:/packages/context-coloring/scripts/download-dependencies.el diff --git a/packages/context-coloring/scripts/download-dependencies.el b/packages/context-coloring/scripts/download-dependencies.el index 54211cca1..2ab24e2f4 100644 --- a/packages/context-coloring/scripts/download-dependencies.el +++ b/packages/context-coloring/scripts/download-dependencies.el @@ -17,36 +17,45 @@ ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . -;; This script downloads some dependencies for development so they don't need to -;; be version-controlled. +;; Download dependencies for development. + +;; Dependencies don't need to be version-controlled. They are also +;; bleeding-edge, which is good because that is what most MELPA users are using. ;;; Code: -(defconst directory (file-name-directory (or load-file-name buffer-file-name)) +(defconst download-dependencies-directory + (file-name-directory (or load-file-name buffer-file-name)) "This file's directory.") -(defun resolve-path (path) +(defun download-dependencies-resolve-path (path) "Resolve a path relative to this file's directory." - (expand-file-name path directory)) + (expand-file-name path download-dependencies-directory)) -(defun strip-headers () +(defun download-dependencies-strip-headers () "Remove the http headers included in the output of `url-retrieve-synchronously'." (goto-char 1) - (kill-paragraph 1) ; The headers are 1 paragraph. I hope. - (kill-line) ; A line separates the headers from the file's content. - ) - -;; Download any missing dependencies. -(let ((files '("https://raw.githubusercontent.com/mooz/js2-mode/master/js2-mode.el" - "https://raw.githubusercontent.com/rejeep/ert-async.el/master/ert-async.el"))) - (make-directory (resolve-path "../libraries") t) - (dolist (file files) - (let* ((basename (file-name-nondirectory file)) - (destination (resolve-path (concat "../libraries/" basename)))) - (when (null (file-exists-p destination)) - (with-current-buffer (url-retrieve-synchronously file) - (strip-headers) - (write-file destination)))))) + (kill-paragraph 1) ; The headers are 1 paragraph. I hope. + (kill-line)) ; A line separates the headers from the file's content. + +(defun download-dependencies-get-dependencies () + "Read the `dependencies' file as a list of URLs." + (with-temp-buffer + (insert-file-contents (download-dependencies-resolve-path "./dependencies")) + (split-string (buffer-substring-no-properties (point-min) (point-max))))) + +(defun download-dependencies () + "Download dependencies for development." + (let ((files (download-dependencies-get-dependencies))) + (make-directory (download-dependencies-resolve-path "../libraries") t) + (dolist (file files) + (let* ((basename (file-name-nondirectory file)) + (destination (download-dependencies-resolve-path + (concat "../libraries/" basename)))) + (unless (file-exists-p destination) + (with-current-buffer (url-retrieve-synchronously file) + (download-dependencies-strip-headers) + (write-file destination))))))) ;;; download-dependencies.el ends here