diff options
Diffstat (limited to 'sandbox/cobra')
-rw-r--r-- | sandbox/cobra/README.md | 34 | ||||
-rw-r--r-- | sandbox/cobra/hello/index.sh | 1 | ||||
-rwxr-xr-x | sandbox/cobra/index.sh | 16 |
3 files changed, 51 insertions, 0 deletions
diff --git a/sandbox/cobra/README.md b/sandbox/cobra/README.md new file mode 100644 index 00000000..f9bb8026 --- /dev/null +++ b/sandbox/cobra/README.md @@ -0,0 +1,34 @@ + +# 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/sandbox/cobra/hello/index.sh b/sandbox/cobra/hello/index.sh new file mode 100644 index 00000000..df2dea7c --- /dev/null +++ b/sandbox/cobra/hello/index.sh @@ -0,0 +1 @@ +echo 'Hello, world!' diff --git a/sandbox/cobra/index.sh b/sandbox/cobra/index.sh new file mode 100755 index 00000000..1118a823 --- /dev/null +++ b/sandbox/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 |