Skip to content

Instantly share code, notes, and snippets.

@schmir
Created February 26, 2015 14:25
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 schmir/ba10a59f53254f797cc9 to your computer and use it in GitHub Desktop.
Save schmir/ba10a59f53254f797cc9 to your computer and use it in GitHub Desktop.
(require '[boot.pod :as pod]
'[boot.tmpdir :as tmpdir]
'[clojure.java.io :as io]
'[clojure.string :as string])
(task-options!
pom {:project 'steinmetz
:version "0.1.0"}
repl {:init-ns 'user}
aot {:namespace #{}}
jar {:main 'steinmetz.fx.Splash})
(set-env!
:source-paths #{"java-src"}
:resource-paths #{"resources" "src"}
:repositories [["clojars" "http://clojars.org/repo/"]
["maven-central" "http://repo1.maven.org/maven2/"]
["springsource-release" "http://repository.springsource.com/maven/bundles/release"]
["springsource-external" "http://repository.springsource.com/maven/bundles/external"]]
:dependencies '[[org.clojure/clojure "1.6.0"]
[org.clojure/data.zip "0.1.1"]
[commons-validator "1.4.1"]
[fipp "0.5.2"]
[http-kit "2.1.19"]
[instaparse "1.3.5"]
[compojure "1.3.2"]
[liberator "0.12.2"]
[org.clojure/core.memoize "0.5.7"]
[org.clojure/data.csv "0.1.2"]
[com.cemerick/friend "0.2.1"]
[org.clojars.pntblnk/clj-ldap "0.0.9"]
[authenticator "0.1.1"]
[org.clojure/tools.namespace "0.2.9"] ; ring-devel depends on an older version
[ring/ring-core "1.3.2"]
[ring/ring-devel "1.3.2"]
[trptcolin/versioneer "0.1.1"]
[clj-time "0.9.0"]
[selmer "0.8.0"]
[environ "1.0.0"]
[robert/bruce "0.7.1"]
[com.oracle/javafx-runtime "2.2.0"]
[de.systemexit/controlsfx "8.20.8p2"]
[com.informix.jdbc/com.springsource.com.informix.jdbc "3.0.0.JC3"]
[org.clojure/java.jdbc "0.3.6"]
[com.taoensso/timbre "3.4.0"]
[honeysql "0.4.3"]])
(deftask dot-lein-env
"copy the .git/.lein-env to .lein-env if the latter is non-existent"
[]
(with-pre-wrap fileset
(try
(let [target-path (java.nio.file.Paths/get "" (into-array String [".lein-env"]))
git-path (java.nio.file.Paths/get ".git" (into-array String [".lein-env"]))]
(when-not (java.nio.file.Files/exists target-path (into-array java.nio.file.LinkOption []))
(if (.startsWith (System/getProperty "os.name") "Windows")
(do
(println "Copying" (str git-path) "to" (str target-path))
(spit (str target-path) (slurp (str git-path))))
(do
(println "Symlinking" (str git-path) "to" (str target-path))
(java.nio.file.Files/createSymbolicLink target-path git-path (into-array java.nio.file.attribute.FileAttribute [])))))))
fileset))
(deftask gen-dbneu
"generate resources/META-INF/steinmetz/dbneu-schema.edn"
[]
(with-pre-wrap fileset
(eval
'(do
(require 'steinmetz.informix-inspect)
(steinmetz.informix-inspect/spit-dbneu)))
fileset))
(deftask spit-ang-table
"generate resources/META-INF/steinmetz/static-tables/ang.edn"
[]
(with-pre-wrap fileset
(eval
'(do
(require 'steinmetz.informix-inspect)
(steinmetz.informix-inspect/spit-ang-table)))
fileset))
(deftask dev-inject
"inject some useful functions to clojure.core with '>' as prefix
This injects some functions like >refresh, >doc, >pprint,
>print-table"
[]
(with-pre-wrap fileset
(set-env!
:dependencies #(vec (concat % '[[im.chit/vinyasa "0.3.3"]
[pjstadig/humane-test-output "0.6.0"]
[org.clojure/tools.namespace "0.2.9"]
[criterium "0.4.3"]])))
(eval
'(do
(require 'clojure.tools.namespace.repl)
(require '[vinyasa.inject :as inject])
(apply clojure.tools.namespace.repl/set-refresh-dirs (boot.core/get-env :directories))
(inject/in clojure.core >
[criterium.core quick-bench]
[clojure.tools.namespace.repl refresh]
[clojure.repl apropos dir doc find-doc source pst [root-cause >cause]]
[clojure.java.javadoc javadoc]
[clojure.pprint pprint]
[clojure.pprint print-table]
[clojure.java.shell sh])))
fileset))
(deftask dev-profile
"enable development profile, add dev directory to classpath
This injects some functions like >refresh, >doc, >pprint,
>print-table"
[]
(comp
(dot-lein-env)
(with-pre-wrap fileset
(set-env! :source-paths #(conj % "dev"))
(load-file "patch-proxy-name.clj")
fileset)
(dev-inject)
(with-pre-wrap fileset
(require 'user :reload)
fileset)))
(deftask dev-repl
"start development repl"
[]
(comp (dev-profile) (repl)))
(deftask count-files
"print the number of files in the fileset, use for debugging"
[]
(with-pre-wrap fileset
(println "files" (count (ls fileset)))
fileset))
(deftask package
""
[]
(let [tgt (temp-dir!)]
(with-pre-wrap fileset
(empty-dir! tgt)
(let [jars (by-ext [".jar"] (output-files fileset))
jar (first jars)]
(info "Running javapackage. This may take a while.\n")
(println (clojure.java.shell/sh
"javapackager" "-deploy" "-vendor" "zvk steinmetz" "-title" "steinmetz"
"-description" "zvk steinmetz arbeitsplatz"
"-srcfiles" (.getPath (tmpdir/file jar))
"-outdir" (.getPath tgt)
"-outfile" "steinmetz"
"-appclass" "steinmetz.fx.Splash"
"-name" "steinmetz" "-native" "image")))
(-> fileset (add-resource tgt) commit!))))
(deftask installer
""
[]
(let [tgt (temp-dir!)
iss-template (slurp "steinmetz.iss")
iss-src-path (str (io/file (str tgt) "steinmetz.iss"))]
(with-pre-wrap fileset
(empty-dir! tgt)
(let [exe (->> fileset output-files (by-name ["steinmetz.exe"]) first)
dir (.getParent (io/file (str (:dir exe)) (:path exe)))
iss-src (-> iss-template
(string/replace "$OUTPUTDIR" (str tgt))
(string/replace "$DIR" dir)
(string/replace "$VERSION" "0.1"))]
(spit iss-src-path iss-src)
(info "Running Inno Setup. This may take a while.\n")
(println (clojure.java.shell/sh "iscc" iss-src-path)))
(-> fileset (add-resource tgt) commit!))))
(deftask fast-release
"build a release without aot compiling"
[]
(comp (pom) (javac) (uber) (jar :file "steinmetz-test.jar")))
(deftask release
"build a release (with aot compiling)"
[]
(comp (pom) (javac) (aot :all true) (sift :to-source [#".*\.clj$"]) (uber) (jar :file "steinmetz.jar")))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment