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