aboutsummaryrefslogtreecommitdiff
path: root/src/cpt
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpt')
-rwxr-xr-xsrc/cpt44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/cpt b/src/cpt
new file mode 100755
index 0000000..a2dad72
--- /dev/null
+++ b/src/cpt
@@ -0,0 +1,44 @@
+#!/bin/sh -ef
+# shellcheck disable=1091
+
+if command -v cpt-lib >/dev/null; then . cpt-lib; else ./cpt-lib; fi
+
+[ "$1" ] && { arg=$1; shift; }
+case "$arg" in
+ --help|-h|'')
+ log "Carbs Packaging Tool"
+ set --
+ for path in $(SEARCH_PATH=$PATH pkg_find cpt-* all -x); do
+ set -- "${path#*/cpt-}" "$@"
+ max=$((${#1} > max ? ${#1} : max))
+ done
+
+ for path; do
+ # These are the files to be ignored.
+ contains "lib readlink stat" "$path" && continue
+
+ printf "%b->%b %-${max}s " "${color:+\033[1;31m}" "${color:+\033[m}" "${path#*/cpt-}"
+ sed -n 's/^# *//;2p' "$(command -v "cpt-$path")"
+ done | sort -uk1 >&2
+ exit
+ ;;
+
+ --version|-v|version) version ;;
+
+ # Reserve these arguments for the following tools.
+ a) arg=alternatives ;;
+ b) arg=build ;;
+ c) arg=checksum ;;
+ d) arg=download ;;
+ f) arg=fetch ;;
+ i) arg=install ;;
+ l) arg=list ;;
+ r) arg=remove ;;
+ s) arg=search ;;
+ u) arg=update ;;
+esac
+
+util=$(SEARCH_PATH=$PATH pkg_find "cpt-$arg"* "" -x 2>/dev/null) ||
+ die "'cpt $arg' is not a valid command"
+
+"$util" "$@"