if [ "$1" = '-d' ] || [ "$1" = '--debug' ]; then
set -vx
VCSH_DEBUG=1
- shift 1
elif [ "$1" = '-v' ];then
VCSH_VERBOSE=1
elif [ "$1" = '-c' ];then
VCSH_OPTION_CONFIG=$OPTARG
fi
+ shift 1
done
source_all() {
options:
-c <file> Source file
-d Enable debug mode
- -d Enable verbose mode
+ -v Enable verbose mode
commands:
clone <remote> \\
[<repo>] Clone from an existing repository
- delete Delete an existing repository
- enter Enter repository; spawn new instance of \$SHELL
+ delete <repo> Delete an existing repository
+ enter <repo> Enter repository; spawn new instance of \$SHELL
help Display this help text
init <repo> Initialize a new repository
list List all repositories
<newname> Rename repository
run <repo> \\
<command> Use this repository
- setup Set up repository with recommended settings
+ setup <repo> Set up repository with recommended settings
which <substring> Find substring in name of any tracked file
write-gitignore \\
<repo> Write .gitignore.d/<repo> via git ls-files
run() {
hook pre-run
use
- $VCSH_EXTERNAL_COMMAND
+ "$@"
hook post-run
}
export VCSH_REPO_NAME="$2"
export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
[ "$VCSH_COMMAND" = 'rename' ] && export GIT_DIR_NEW="$VCSH_REPO_D/$3.git"
- [ "$VCSH_COMMAND" = 'run' ] && shift 2 && export VCSH_EXTERNAL_COMMAND="$*"
+ [ "$VCSH_COMMAND" = 'run' ] && shift 2
[ "$VCSH_COMMAND" = 'write-gitignore' ]
elif [ "$1" = 'list' ] ||
[ "$1" = 'list-tracked' ]; then
export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
[ -d $GIT_DIR ] || { help; exit 1; }
shift 1
- export VCSH_EXTERNAL_COMMAND="git $*"
+ set -- "git" "$@"
elif [ -n "$1" ]; then
export VCSH_COMMAND='enter'
export VCSH_REPO_NAME="$1"
verbose "$VCSH_COMMAND begin"
export VCSH_COMMAND=$(echo $VCSH_COMMAND | sed 's/-/_/g')
hook pre-command
-$VCSH_COMMAND
+$VCSH_COMMAND "$@"
hook post-command
verbose "$VCSH_COMMAND end, exiting"