-setup() {
- git config core.worktree "$GIT_WORK_TREE"
- git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
- git config vcsh.vcsh 'true'
- touch "$HOME/.gitignore.d/$VCSH_REPO_NAME"
- git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
-}
-
-init() {
- verbose "init() begin"
- [ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10
- export GIT_WORK_TREE="$HOME"
- mkdir -p "$GIT_WORK_TREE"
- cd "$GIT_WORK_TREE" || fatal "could not enter '$GIT_WORK_TREE'" 11
- cd "$GIT_WORK_TREE"
- git init
- setup
- verbose "init() end"
-}
-
-use() {
- verbose "use() begin"
- if [ ! -d "$GIT_DIR" ]; then
- error "no repository found for '$VCSH_REPO_NAME'"
- return 12
- fi
- export GIT_DIR
- export GIT_WORK_TREE="$(git config --get core.worktree)"
- export VCSH_DIRECTORY="$VCSH_REPO_NAME"
- verbose "use() end"
-}
-
-
-if [ "$1" = 'clone' ]; then
- export VCSH_COMMAND="$1"
- GIT_REMOTE="$2"
- export GIT_REMOTE
- VCSH_REPO_NAME="$3"
- [ -z "$VCSH_REPO_NAME" ] && VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git)
- export VCSH_REPO_NAME
- export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
-elif [ "$1" = 'delete' ] ||
- [ "$1" = 'enter' ] ||
- [ "$1" = 'init' ] ||
- [ "$1" = 'run' ] ||
- [ "$1" = 'seed-gitignore' ] ||
- [ "$1" = 'setup' ]; then
- [ -z $2 ] && fatal "$1: please specify repository to work on" 1
- export VCSH_COMMAND="$1"
- export VCSH_REPO_NAME="$2"
- export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
- shift 2
- export VCSH_EXTERNAL_COMMAND="$*"
- if [ "$VCSH_COMMAND" = 'run' ]; then
- [ -z "$VCSH_EXTERNAL_COMMAND" ] && fatal "$1 $2: please specify a command" 1
- fi
-elif [ "$1" = 'help' ] ||
- [ "$1" = 'list' ]; then
- export VCSH_COMMAND="$1"
-else
- [ -z $1 ] && help && exit 0
- export VCSH_COMMAND='run'
- export VCSH_REPO_NAME="$1"
- export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
- [ -d $GIT_DIR ] || { help; exit 1; }
- shift 1
- export VCSH_EXTERNAL_COMMAND="git $*"
-fi
-
-
-for check_directory in "$VCSH_BASE" "$HOME/.gitignore.d"
-do
- if [ ! -d "$check_directory" ]; then
- if [ -e "$check_directory" ]; then
- fatal "'$check_directory' exists but is not a directory" 13
- else
- info "attempting to create '$check_directory'"
- mkdir -p "$check_directory" || fatal "could not create '$check_directory'" 50
- fi
- fi
-done
-
-
-if [ "$VCSH_COMMAND" = 'clone' ]; then
- verbose "clone begin"