mirror of
https://github.com/janet-lang/janet
synced 2024-09-28 15:08:40 +00:00
853b33b67c
This means we no longer need to guess paths after install. Custom directory layouts can now be better supported at install time without need for environment variables.
34 lines
905 B
Plaintext
34 lines
905 B
Plaintext
# Patch jpm to have the correct paths for the current install.
|
|
# usage: janet patch-jpm.janet output --libdir=/usr/local/lib/x64-linux/ --binpath
|
|
|
|
(def- argpeg
|
|
(peg/compile
|
|
'(* "--" '(to "=") "=" '(any 1))))
|
|
|
|
(def- args (tuple/slice (dyn :args) 3))
|
|
(def- len (length args))
|
|
(var i :private 0)
|
|
|
|
(def install-paths @{})
|
|
|
|
# Get flags
|
|
(each a args
|
|
(if-let [m (peg/match argpeg a)]
|
|
(let [[key value] m]
|
|
(put install-paths (keyword key) value))))
|
|
|
|
(def- replace-peg
|
|
(peg/compile
|
|
~(% (* '(to "###START###")
|
|
(constant ,(string/format "# Inserted by tools/patch-jpm.janet\n(def install-paths %j)" install-paths))
|
|
(thru "###END###")
|
|
'(any 1)))))
|
|
|
|
(def source (slurp ((dyn :args) 1)))
|
|
(def newsource (0 (peg/match replace-peg source)))
|
|
|
|
(spit ((dyn :args) 2) newsource)
|
|
|
|
(unless (= :windows (os/which))
|
|
(os/shell (string `chmod +x "` ((dyn :args) 2) `"`)))
|