#!/bin/sh
# Compatible with pijul 1.0.0-alpha.38.
# For new versions, update the cmds list.
# if PJ_ASK is set, we ask before executing pijul
# PJ_ALIASES :: [Alias]
# Alias = (=) Name SimpleCmd
# Cmd = SimpleCmd | Alias
# cmds :: [Cmd]
#cmds="add apply branches checkout clone credit dependencies diff dist fork grep help init key log ls mv patch prune pull push record remove revert rollback sign status tag unrecord ${PJ_ALIASES:-}" # pijul 0.12
cmds="add apply archive change channel clone credit diff fork git help init log ls mv pull push record remote remove reset tag unrecord ${PJ_ALIASES:-}"
cmds="$( echo "$cmds" \
| tr ' ' \\n \
| sed 's/^\([a-z]\+\)$/=&/g' \
| sort --field-separator== --key=2 \
| sed 's/^=//g' | tr \\n ' ' \
)"
al="$1"
shift
for c in $cmds; do
case "$c" in "$al"* )
cands="$cands $c" # candidates
;;
esac
done
candsDeduped="$( echo "$cands" \
| sed -E -e 's/\b([a-z]+)=([a-z]+)/\2/g' -e 's/ /\n/g' \
| sed '/^$/d' | uniq \
)"
i="$(echo "$candsDeduped" | wc -l)"
if [ "$i" = 1 ]; then
cands="$candsDeduped"
i=1
fi
if [ -z "$al" ]; then
exec pijul
elif [ "$i" -gt 1 ]; then
echo "pj: did you mean one of these"
for c in $cands; do
printf '\t%s\n' "$c"
done
else
cmd="${cands##*=}" # exec alias command
if [ "$PJ_ASK" ]; then
printf 'press return to pijul %s %s ' "$cands" "$*"
# shellcheck disable=SC2034
# (`nothing` unused)
read -r nothing
fi
exec pijul "$cmd" "$@"
fi
# vim: tw=0