Skip to content

Instantly share code, notes, and snippets.

@abhi18av
Created August 22, 2016 05:27
Show Gist options
  • Save abhi18av/fe2e3f5868471c4efb81d8675fbfe079 to your computer and use it in GitHub Desktop.
Save abhi18av/fe2e3f5868471c4efb81d8675fbfe079 to your computer and use it in GitHub Desktop.
build.boot ( for cljsjs draftjs package )
(set-env!
:resource-paths #{"resources"}
:dependencies '[[cljsjs/boot-cljsjs "0.5.2" :scope "test"]])
(require '[cljsjs.boot-cljsjs.packaging :refer :all])
(def +lib-version+ "0.8.1")
(def +version+ (str +lib-version+ "-0"))
(def +checksum+ "d88f8ee03b9188b2a942ca9d83d5188c")
(task-options!
pom {:project 'cljsjs/draft
:version +version+
:description "A React framework for building text editors"
:url "http://facebook.github.io/draft-js"
:scm {:url "https://github.com/cljsjs/packages"}
:license {"BSD" "http://opensource.org/licenses/BSD-3-Clause"}})
;; TODO: Should eventually be included in boot.core
(defn with-files
"Runs middleware with filtered fileset and merges the result back into complete fileset."
[p middleware]
(fn [next-handler]
(fn [fileset]
(let [merge-fileset-handler (fn [fileset']
(next-handler (commit! (assoc fileset :tree (merge (:tree fileset) (:tree fileset'))))))
handler (middleware merge-fileset-handler)
fileset (assoc fileset :tree (reduce-kv
(fn [tree path x]
(if (p x)
(assoc tree path x)
tree))
(empty (:tree fileset))
(:tree fileset)))]
(handler fileset)))))
(defn package-part [{:keys [extern-name namespace project dependencies requires]}]
(with-files (fn [x]
(or (= extern-name (.getName (tmp-file x)))
(re-find #"^draft.*/build/" (tmp-path x))))
(comp
(sift :move {(re-pattern (format "^draft.*/build/%s.js$" (name project))) (format "cljsjs/%1$s/development/%1$s.inc.js" (name project))
(re-pattern (format "^draft.*/build/%s.min.js$" (name project))) (format "cljsjs/%1$s/production/%1$s.min.inc.js" (name project))})
(sift :include #{#"^cljsjs"})
(deps-cljs :name namespace :requires requires)
(pom :project project :dependencies (or dependencies []))
(show :fileset true)
(jar))))
(deftask package-draft []
(package-part
{:extern-name "draft.ext.js"
:namespace "cljsjs.draft"
:project 'cljsjs/draft}))
(deftask package []
(comp
(download :url (format "https://github.com/facebook/draft-js/archive/master.zip" +lib-version+)
:checksum +checksum+
:unzip true)
(package-draft)
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment