1
0
mirror of https://github.com/janet-lang/janet synced 2025-09-13 00:06:06 +00:00

On nix platforms, patch jpm with path information.

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.
This commit is contained in:
Calvin Rose
2020-06-14 14:04:23 -05:00
parent 19f3568e18
commit 853b33b67c
4 changed files with 62 additions and 8 deletions

33
tools/patch-jpm.janet Normal file
View File

@@ -0,0 +1,33 @@
# 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) `"`)))