diff options
Diffstat (limited to 'cobra')
-rw-r--r-- | cobra/README | 33 | ||||
-rw-r--r-- | cobra/hello/index.sh | 1 | ||||
-rwxr-xr-x | cobra/index.sh | 16 |
3 files changed, 50 insertions, 0 deletions
diff --git a/cobra/README b/cobra/README new file mode 100644 index 00000000..145ecd14 --- /dev/null +++ b/cobra/README @@ -0,0 +1,33 @@ + +# usage +cobra [target...] + +# description +cobra tries to satisfies all specified targets and all of it dependencies. + +# targets +targets can be a lot of different things, e.g. directories + +## dirctory targets +try to do the right thing when the cobra search path contains a directory +that contains an index.{js,sh,py,etc.} file. + +## cobra search path +like your sh's PATH + +## example: cobra as some kind of make +$ echo $COBRA_PATH +. +$ ls . +foo/ bar/ baz/ +$ cat foo/cobra.json +{ "deps": "bar", "baz" } +$ cat bar/cobra.json +No such file or directory +$ cat baz/cobra.json +No such file or directory +$ cobra foo +[cobra bar] +[cobra baz] +[cobra foo] +$ exit diff --git a/cobra/hello/index.sh b/cobra/hello/index.sh new file mode 100644 index 00000000..df2dea7c --- /dev/null +++ b/cobra/hello/index.sh @@ -0,0 +1 @@ +echo 'Hello, world!' diff --git a/cobra/index.sh b/cobra/index.sh new file mode 100755 index 00000000..1118a823 --- /dev/null +++ b/cobra/index.sh @@ -0,0 +1,16 @@ +#! /bin/sh +set -euf +trap "echo 'You are made of stupid!' >&2; exit 23" EXIT + +COBRA_PATH="${COBRA_PATH-$PWD}" + +## main +for target; do + for path in $COBRA_PATH; do + if test -d "$path/$target"; then + if index="$path/$target/index.sh" && test -f "$index"; then + exec /bin/sh "$index" + fi + fi + done +done |