From e98b51e220feeca897582e1dd879ebc76e5f6dfd Mon Sep 17 00:00:00 2001 From: Richard Hartmann Date: Thu, 29 Aug 2013 20:20:00 +0200 Subject: [PATCH] vcsh: Implement shortnames for commands vcsh st will now expand to vcsh status --- vcsh | 73 ++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/vcsh b/vcsh index 9bef842..3e2a6b6 100755 --- a/vcsh +++ b/vcsh @@ -374,46 +374,61 @@ if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xnone' ] && fatal "'\$VCSH_GITIGNORE' must equal 'exact', 'none', or 'recursive'" 1 fi -if [ "$1" = 'clone' ]; then - [ -z "$2" ] && fatal "$1: please specify a remote" 1 - export VCSH_COMMAND="$1" +export VCSH_COMMAND="$1" + +[ "$VCSH_COMMAND" = 'clon' ] || [ "$VCSH_COMMAND" = 'clo' ] || [ "$VCSH_COMMAND" = 'cl' ] && VCSH_COMMAND='clone' +[ "$VCSH_COMMAND" = 'commi' ] || [ "$VCSH_COMMAND" = 'comm' ] || [ "$VCSH_COMMAND" = 'com' ] || [ "$VCSH_COMMAND" = 'co' ] && VCSH_COMMAND='commit' +[ "$VCSH_COMMAND" = 'delet' ] || [ "$VCSH_COMMAND" = 'dele' ] || [ "$VCSH_COMMAND" = 'del' ] || [ "$VCSH_COMMAND" = 'de' ] && VCSH_COMMAND='delete' +[ "$VCSH_COMMAND" = 'ente' ] || [ "$VCSH_COMMAND" = 'ent' ] || [ "$VCSH_COMMAND" = 'en' ] && VCSH_COMMAND='enter' +[ "$VCSH_COMMAND" = 'hel' ] || [ "$VCSH_COMMAND" = 'he' ] && VCSH_COMMAND='help' +[ "$VCSH_COMMAND" = 'ini' ] || [ "$VCSH_COMMAND" = 'in' ] && VCSH_COMMAND='init' +[ "$VCSH_COMMAND" = 'pul' ] && VCSH_COMMAND='pull' +[ "$VCSH_COMMAND" = 'pus' ] && VCSH_COMMAND='push' +[ "$VCSH_COMMAND" = 'renam' ] || [ "$VCSH_COMMAND" = 'rena' ] || [ "$VCSH_COMMAND" = 'ren' ] || [ "$VCSH_COMMAND" = 're' ] && VCSH_COMMAND='rename' +[ "$VCSH_COMMAND" = 'ru' ] && VCSH_COMMAND='run' +[ "$VCSH_COMMAND" = 'statu' ] || [ "$VCSH_COMMAND" = 'stat' ] || [ "$VCSH_COMMAND" = 'sta' ] || [ "$VCSH_COMMAND" = 'st' ] && VCSH_COMMAND='status' +[ "$VCSH_COMMAND" = 'upgrad' ] || [ "$VCSH_COMMAND" = 'upgra' ] || [ "$VCSH_COMMAND" = 'upgr' ] || [ "$VCSH_COMMAND" = 'upg' ] && VCSH_COMMAND='upgrade' +[ "$VCSH_COMMAND" = 'versio' ] || [ "$VCSH_COMMAND" = 'versi' ] || [ "$VCSH_COMMAND" = 'vers' ] || [ "$VCSH_COMMAND" = 'ver' ] || [ "$VCSH_COMMAND" = 've' ] && VCSH_COMMAND='version' +[ "$VCSH_COMMAND" = 'whic' ] || [ "$VCSH_COMMAND" = 'whi' ] || [ "$VCSH_COMMAND" = 'wh' ] && VCSH_COMMAND='which' +[ "$VCSH_COMMAND" = 'write' ] || [ "$VCSH_COMMAND" = 'writ' ] || [ "$VCSH_COMMAND" = 'wri' ] || [ "$VCSH_COMMAND" = 'wr' ] && VCSH_COMMAND='write-gitignore' + + +if [ "$VCSH_COMMAND" = 'clone' ]; then + [ -z "$2" ] && fatal "$VCSH_COMMAND: please specify a remote" 1 GIT_REMOTE="$2" [ -n "$3" ] && VCSH_REPO_NAME="$3" || VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git) export VCSH_REPO_NAME export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git" -elif [ "$1" = 'version' ]; then +elif [ "$VCSH_COMMAND" = 'version' ]; then echo "$SELF $VERSION" exit -elif [ "$1" = 'which' ]; then - [ -z "$2" ] && fatal "$1: please specify a filename" 1 - [ -n "$3" ] && fatal "$1: too many parameters" 1 - export VCSH_COMMAND="$1" +elif [ "$VCSH_COMMAND" = 'which' ]; then + [ -z "$2" ] && fatal "$VCSH_COMMAND: please specify a filename" 1 + [ -n "$3" ] && fatal "$VCSH_COMMAND: too many parameters" 1 export VCSH_COMMAND_PARAMETER="$2" -elif [ "$1" = 'delete' ] || - [ "$1" = 'enter' ] || - [ "$1" = 'init' ] || - [ "$1" = 'list-tracked-by' ] || - [ "$1" = 'rename' ] || - [ "$1" = 'run' ] || - [ "$1" = 'upgrade' ] || - [ "$1" = 'write-gitignore' ]; then - [ -z $2 ] && fatal "$1: please specify repository to work on" 1 - [ "$1" = 'rename' -a -z "$3" ] && fatal "$1: please specify a target name" 1 - [ "$1" = 'run' -a -z "$3" ] && fatal "$1: please specify a command" 1 - export VCSH_COMMAND="$1" +elif [ "$VCSH_COMMAND" = 'delete' ] || + [ "$VCSH_COMMAND" = 'enter' ] || + [ "$VCSH_COMMAND" = 'init' ] || + [ "$VCSH_COMMAND" = 'list-tracked-by' ] || + [ "$VCSH_COMMAND" = 'rename' ] || + [ "$VCSH_COMMAND" = 'run' ] || + [ "$VCSH_COMMAND" = 'upgrade' ] || + [ "$VCSH_COMMAND" = 'write-gitignore' ]; then + [ -z $2 ] && fatal "$VCSH_COMMAND: please specify repository to work on" 1 + [ "$VCSH_COMMAND" = 'rename' -a -z "$3" ] && fatal "$VCSH_COMMAND: please specify a target name" 1 + [ "$VCSH_COMMAND" = 'run' -a -z "$3" ] && fatal "$VCSH_COMMAND: please specify a command" 1 export VCSH_REPO_NAME="$2" export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git" [ "$VCSH_COMMAND" = 'rename' ] && { export VCSH_REPO_NAME_NEW="$3"; export GIT_DIR_NEW="$VCSH_REPO_D/$VCSH_REPO_NAME_NEW.git"; } [ "$VCSH_COMMAND" = 'run' ] && shift 2 -elif [ "$1" = 'commit' ] || - [ "$1" = 'list' ] || - [ "$1" = 'list-tracked' ] || - [ "$1" = 'pull' ] || - [ "$1" = 'push' ]; then - export VCSH_COMMAND="$1" -elif [ "$1" = 'status' ]; then - export VCSH_COMMAND="$1" +elif [ "$VCSH_COMMAND" = 'commit' ] || + [ "$VCSH_COMMAND" = 'list' ] || + [ "$VCSH_COMMAND" = 'list-tracked' ] || + [ "$VCSH_COMMAND" = 'pull' ] || + [ "$VCSH_COMMAND" = 'push' ]; then + : +elif [ "$VCSH_COMMAND" = 'status' ]; then export VCSH_REPO_NAME="$2" elif [ -n "$2" ]; then export VCSH_COMMAND='run' @@ -422,7 +437,7 @@ elif [ -n "$2" ]; then [ -d $GIT_DIR ] || { help; exit 1; } shift 1 set -- "git" "$@" -elif [ -n "$1" ]; then +elif [ -n "$VCSH_COMMAND" ]; then export VCSH_COMMAND='enter' export VCSH_REPO_NAME="$1" export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git" -- 2.39.2