Skip to content

Instantly share code, notes, and snippets.

@jaycfields
Created September 27, 2012 23:40
Show Gist options
  • Save jaycfields/3797114 to your computer and use it in GitHub Desktop.
Save jaycfields/3797114 to your computer and use it in GitHub Desktop.
lein tar
(ns leiningen.tar
(:require leiningen.jar leiningen.clean
[clojure.java.io :as io])
(:use clojure.java.shell))
(defn normalize-path [root path]
(let [f (io/file path)]
(.getAbsolutePath (if (.isAbsolute f) f (io/file root path)))))
(defn tar [project & args]
(let [build-version (-> (System/getenv "BUILD_VERSION")
(or (first args))
(or "0.0.0.0"))
release (str (:description project) "-" build-version)
build-dir (normalize-path (:root project) (str "deploy/" release))
jars-dir (normalize-path build-dir "jars")
jar-file (leiningen.jar/jar project)
tar-file (clojure.java.io/file (:root project) (str release ".tar.gz"))]
(.delete tar-file)
(sh "rm" "-rf" build-dir)
(sh "mkdir" "-p" jars-dir)
(sh "cp" "-R" (normalize-path (:root project) "src/web") build-dir)
(sh "cp" "-R" (normalize-path (:root project) "lib/jars") build-dir)
(sh "mv" jar-file jars-dir)
(sh "tar" "--gzip" "--create"
(str "--file=" (.getName tar-file))
(str "--directory=" (normalize-path (:root project) "deploy/")) release)
(println "Wrote" (.getName tar-file))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment