summaryrefslogtreecommitdiffstats
path: root/sandbox/cobra
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/cobra')
-rw-r--r--sandbox/cobra/README.md34
-rw-r--r--sandbox/cobra/hello/index.sh1
-rwxr-xr-xsandbox/cobra/index.sh16
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