54 lines
1.4 KiB
BlitzBasic
54 lines
1.4 KiB
BlitzBasic
;;; -*- mode:clojure -*-
|
|
;;;
|
|
;;; USAGE:
|
|
;;;
|
|
;;; bb -cp . -m override-deps -- [DEP-NAME INFO]…
|
|
;;;
|
|
;;; This script takes a series of deps substitutions on the command
|
|
;;; line, applies them to a deps.edn file (read on stdin), and spits
|
|
;;; the result to stdout.
|
|
;;;
|
|
;;; It is used to build the Doerg server with Nix, since Clj-nix does
|
|
;;; not resolve the local deps itself.
|
|
|
|
(ns override-deps
|
|
(:require [rewrite-clj.zip :as z]
|
|
[babashka.fs :as fs]
|
|
[clojure.edn :as edn]))
|
|
|
|
(defn apply-overrides [zloc overrides]
|
|
(loop [os (seq overrides)
|
|
loc zloc]
|
|
(if-some [[[k v] & xs] os]
|
|
(recur xs (z/assoc loc k v))
|
|
loc)))
|
|
|
|
(defn args->overrides [args]
|
|
(assert (even? (count args)))
|
|
(->> args (map edn/read-string) (apply hash-map)))
|
|
|
|
(defn -main [& args]
|
|
(let [zloc (-> (slurp *in*) z/of-string)
|
|
overrides (args->overrides args)]
|
|
(-> zloc
|
|
z/down
|
|
(z/find-value :deps) z/right
|
|
(apply-overrides overrides)
|
|
z/root-string
|
|
print)))
|
|
|
|
|
|
|
|
(comment
|
|
"Example overrides"
|
|
(def overrides '{net.deertopia/doerg "blah!!!!"
|
|
ring/ring-defaults {:mvn/version "xxxxx"}}))
|
|
|
|
(comment
|
|
"Behaviour of `args->overrides`."
|
|
(= (args->overrides ["net.deertopia/doerg" "{:mvn/version \"abc\"}"
|
|
"ring/ring-defaults" "{:local/root \"/path/to/jar\"}"])
|
|
'{ring/ring-defaults {:local/root "/path/to/jar"}
|
|
net.deertopia/doerg {:mvn/version "abc"}}))
|
|
|