Files
dokku/plugins/shell/commands
2016-02-23 07:50:06 -08:00

62 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
[[ " shell help shell:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
case "$1" in
shell)
INPUTRC="$PLUGIN_ROOT/inputrc"
HISTFILE=~/.dokku_history
history -r || true
trim()
{
sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g'
}
trap 'history -w' EXIT
while true; do
trap '' SIGINT
read -rep "dokku> " line || {
echo; true; break
}
trap - SIGINT
line=$(echo "$line" | trim)
CMD=$(echo "$line" | awk '{ print $1 }')
[[ -z $CMD ]] && continue
[[ "$line" != "$(fc -ln -1 | trim)" ]] && history -s "$line"
case $CMD in
# shell builtins
clear)
clear
;;
quit|exit)
break
;;
# Not a built-in, run as regular dokku command
*)
dokku "$line" || true
esac
done
;;
help | shell:help)
cat<<EOF
shell, Spawn dokku shell
EOF
;;
*)
exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
;;
esac