aboutsummaryrefslogtreecommitdiff
path: root/libexec/recit-commands
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xlibexec/recit-commands42
1 files changed, 42 insertions, 0 deletions
diff --git a/libexec/recit-commands b/libexec/recit-commands
new file mode 100755
index 0000000..edc18dd
--- /dev/null
+++ b/libexec/recit-commands
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+# Usage: recit commands
+# Summary: List all recit commands
+# Help: This command is mostly used for autocompletion in various shells, and for `recit help`.
+# Also, this command helps find commands that are named the same as potentially builtin shell commands (which, cd, etc)
+
+set -e
+
+# Provide recit completions
+if [ "$1" = "--complete" ]; then
+ echo --sh
+ echo --no-sh
+ exit
+fi
+
+if [ "$1" = "--sh" ]; then
+ sh=1
+ shift
+elif [ "$1" = "--no-sh" ]; then
+ nosh=1
+ shift
+fi
+
+shopt -s nullglob
+
+{ for path in ${PATH//:/$'\n'}; do
+ for command in "${path}/recit-"*; do
+ command="${command##${path}/recit-}"
+ if [ -n "$sh" ]; then
+ if [ ${command:0:3} = "sh-" ]; then
+ echo ${command##sh-}
+ fi
+ elif [ -n "$nosh" ]; then
+ if [ ${command:0:3} != "sh-" ]; then
+ echo ${command##sh-}
+ fi
+ else
+ echo ${command##sh-}
+ fi
+ done
+ done
+} | sort | uniq