mirror of
https://github.com/penpot/penpot.git
synced 2025-01-08 16:00:19 -05:00
78 lines
2.2 KiB
Clojure
Executable file
78 lines
2.2 KiB
Clojure
Executable file
#!/usr/bin/env bb
|
|
|
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) UXBOX Labs SL
|
|
|
|
(ns build
|
|
(:require
|
|
[clojure.string :as str]
|
|
[clojure.java.io :as io]
|
|
[clojure.pprint :refer [pprint]]
|
|
[babashka.fs :as fs]
|
|
[babashka.process :refer [$ check]]))
|
|
|
|
(defn split-cp
|
|
[data]
|
|
(str/split data #":"))
|
|
|
|
(def classpath
|
|
(->> ($ clojure -Spath)
|
|
(check)
|
|
(:out)
|
|
(slurp)
|
|
(split-cp)
|
|
(map str/trim)))
|
|
|
|
(def classpath-jars
|
|
(let [xfm (filter #(str/ends-with? % ".jar"))]
|
|
(into #{} xfm classpath)))
|
|
|
|
(def classpath-paths
|
|
(let [xfm (comp (remove #(str/ends-with? % ".jar"))
|
|
(filter #(.isDirectory (io/file %))))]
|
|
(into #{} xfm classpath)))
|
|
|
|
(def version
|
|
(or (first *command-line-args*) "%version%"))
|
|
|
|
;; Clean previous dist
|
|
(-> ($ rm -rf "./target/dist") check)
|
|
|
|
;; Create a new dist
|
|
(-> ($ mkdir -p "./target/dist/deps") check)
|
|
|
|
;; Copy all jar deps into dist
|
|
(run! (fn [item] (-> ($ cp ~item "./target/dist/deps/") check)) classpath-jars)
|
|
|
|
;; Create the application jar
|
|
(spit "./target/dist/version.txt" version)
|
|
(-> ($ jar cvf "./target/dist/deps/app.jar" -C ~(first classpath-paths) ".") check)
|
|
(-> ($ jar uvf "./target/dist/deps/app.jar" -C "./target/dist" "version.txt") check)
|
|
(run! (fn [item]
|
|
(-> ($ jar uvf "./target/dist/deps/app.jar" -C ~item ".") check))
|
|
(rest classpath-paths))
|
|
|
|
;; Copy logging configuration
|
|
(-> ($ cp "./resources/log4j2.xml" "./target/dist/") check)
|
|
|
|
;; Create classpath file
|
|
(let [jars (->> (into ["app.jar"] classpath-jars)
|
|
(map fs/file-name)
|
|
(map #(fs/path "deps" %))
|
|
(map str))]
|
|
(spit "./target/dist/classpath" (str/join ":" jars)))
|
|
|
|
;; Copy run script template
|
|
(-> ($ cp "./scripts/run.template.sh" "./target/dist/run.sh") check)
|
|
|
|
;; Copy run script template
|
|
(-> ($ cp "./scripts/manage.template.sh" "./target/dist/manage.sh") check)
|
|
|
|
;; Add exec permisions to scripts.
|
|
(-> ($ chmod +x "./target/dist/run.sh") check)
|
|
(-> ($ chmod +x "./target/dist/manage.sh") check)
|
|
|
|
nil
|