Skip to content

Instantly share code, notes, and snippets.

@hiredman
Created January 23, 2012 22:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiredman/e6a92b792d43775ad615 to your computer and use it in GitHub Desktop.
Save hiredman/e6a92b792d43775ad615 to your computer and use it in GitHub Desktop.
add-dep
(defvar favorite-libraries
'(("clj-http" . "0.2.3")
("chesire" . "2.0.2")
("org.clojure/core.match" . "0.2.0-alpha6"))
"the libs you like for easy adding to projects")
(defun get′ (as k)
(when k
(cdr (assoc k as))))
(defun add-clojure-dependency ()
"look for the project.clj for the current project and add the given
dependency to :dependencies"
(interactive)
(let* ((project-dir (locate-dominating-file default-directory
clojure-project-root-file))
(project-file (concat project-dir clojure-project-root-file)))
(if project-dir
(let* ((project-name (ido-completing-read "Dependency name: "
(mapcar
(lambda (x) (car x))
favorite-libraries)))
(known-version (get′ favorite-libraries project-name))
(project-version (ido-completing-read "Dependency version: "
(if known-version
(list known-version)
'())))
(buf (current-buffer)))
(progn
(find-file project-file)
(save-excursion
(goto-char (point-min))
(search-forward ":dependencies ")
(forward-sexp)
(backward-char 1)
(insert "\n")
(indent-relative)
(insert (concat "[" project-name " \"" project-version "\"]"))
(save-current-buffer)
(bury-buffer))
(shell-command
"lein deps"
"*lein deps*")
(setq favorite-libraries
(cons (cons project-name project-version)
(assq-delete-all project-name favorite-libraries)))
(switch-to-buffer buf)))
(message "Project not found"))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment