mirror of
https://github.com/janet-lang/janet
synced 2024-12-01 04:19:55 +00:00
09ab391d13
First steps to recursive rules. Just needs normalized paths relative to the directory of the imported file.
41 lines
1.3 KiB
Plaintext
Executable File
41 lines
1.3 KiB
Plaintext
Executable File
#!/usr/bin/env janet
|
|
|
|
# CLI tool for building janet projects. Wraps cook.
|
|
|
|
(import cook :prefix "")
|
|
|
|
(import-rules "./project.janet")
|
|
|
|
(def- argpeg
|
|
(peg/compile
|
|
'(* "--" '(some (if-not "=" 1)) "=" '(any 1))))
|
|
|
|
(defn- help
|
|
[]
|
|
(print "usage: jpm [targets]... --key=value ...")
|
|
(print "Available targets are:")
|
|
(each k (sort (keys (dyn :rules @{})))
|
|
(print " " k))
|
|
(print `
|
|
|
|
Keys are:
|
|
--prefix : The prefix to install to. Defaults to $PREFIX or /usr/local
|
|
--libdir : The directory to install. Defaults to $LIBDIR or $prefix/lib/janet
|
|
--includedir : The directory containing janet headers. Defaults to $INCLUDEDIR or module/*headerpath*.
|
|
--bindir : The directory to install binaries and scripts. Defaults to $BINDIR or $prefix/bin
|
|
--optimize : Optimization level for natives. Defaults to $OPTIMIZE or 2.
|
|
--compiler : C compiler to use for natives. Defaults to $CC or cc.
|
|
--linker : C linker to use for linking natives. Defaults to $LINKER or cc.
|
|
--cflags : Extra compiler flags for native modules. Defaults to $CFLAGS if set.
|
|
--lflags : Extra linker flags for native modules. Defaults to $LFLAGS if set.
|
|
`))
|
|
|
|
(def args (tuple/slice process/args 2))
|
|
(each arg args
|
|
(if (string/has-prefix? "--" arg)
|
|
(let [[key value] (peg/match argpeg arg)]
|
|
(setdyn (keyword key) value))
|
|
(do-rule arg)))
|
|
|
|
(if (empty? args) (help))
|