1
0
mirror of https://github.com/janet-lang/janet synced 2024-06-17 18:59:56 +00:00
janet/auxbin/jpm

44 lines
1.4 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env janet
# CLI tool for building janet projects. Wraps cook.
2019-05-29 15:04:38 +00:00
(import cook)
(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:
--modpath : The directory to install modules to. Defaults to $JANET_MODPATH or (dyn :syspath)
--headerpath : The directory containing janet headers. Defaults to $JANET_HEADERPATH or (dyn :headerpath)
2019-05-29 15:04:38 +00:00
--binpath : The directory to install binaries and scripts. Defaults to $JANET_BINPATH.
--optimize : Optimization level for natives. Defaults to $OPTIMIZE or 2.
--compiler : C compiler to use for natives. Defaults to $COMPILER 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))
2019-05-29 02:12:42 +00:00
(def todo @[])
(each arg args
(if (string/has-prefix? "--" arg)
2019-06-02 17:26:51 +00:00
(if-let [m (peg/match argpeg arg)]
(let [[key value] m]
(setdyn (keyword key) value))
(print "invalid argument " arg))
2019-05-29 02:12:42 +00:00
(array/push todo arg)))
2019-05-29 15:04:38 +00:00
(cook/import-rules "./project.janet")
2019-05-29 02:12:42 +00:00
2019-05-29 15:04:38 +00:00
(if (empty? todo) (help))
(each rule todo (cook/do-rule rule))