X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/e3bf7a0bc56990f02434c5dd55d3d9e0badbc716..a2edd7a55c46574bf49a9d03b0cd9e3defd514df:/vcsh diff --git a/vcsh b/vcsh index 0bf5a14..5acd515 100755 --- a/vcsh +++ b/vcsh @@ -3,7 +3,20 @@ #set -x SELF=$(basename $0) + [ -z $XDG_CONFIG_HOME ] && XDG_CONFIG_HOME="$HOME/.config" +for check_directory in $XDG_CONFIG_HOME $XDG_CONFIG_HOME/vcsh $XDG_CONFIG_HOME/vcsh/repo.d +do + if [ ! -d $check_directory ]; then + if [ -e $check_directory ]; then + echo "$SELF: error: $check_directory exists but is not a directory" >&2 + exit 2 + else + mkdir $check_directory || (echo "$SELF: error: could not create $check_directory" >&2; exit 2) + fi + fi +done + VCSH_BASE="$XDG_CONFIG_HOME/vcsh/repo.d" help() { @@ -40,12 +53,12 @@ use() { init() { [[ -e $GIT_DIR ]] && - echo "$(basename $0): fatal: $GIT_DIR exists" && + echo "$SELF: fatal: $GIT_DIR exists" && return 21 export GIT_WORK_TREE="$HOME" mkdir -p $GIT_WORK_TREE cd $GIT_WORK_TREE || - (echo "$(basename $0): fatal: could not enter $GIT_WORK_TREE" && + (echo "$SELF: fatal: could not enter $GIT_WORK_TREE" && exit 20) || exit 20 cd $GIT_WORK_TREE git init @@ -80,7 +93,7 @@ elif [ "$1" = 'use' ]; then if [[ -o NO_IGNORE_EOF ]]; then export VCSH_NO_IGNORE_EOF=1 setopt IGNORE_EOF - vcsh_exit() {vcsh exit; zle reset-prompt} + vcsh_exit() {vcsh exit; zle reset-prompt;} zle -N vcsh_exit bindkey '^d' 'vcsh_exit' fi @@ -89,7 +102,7 @@ elif [ "$1" = 'use' ]; then return 0 elif [ "$1" = 'clone' ]; then - export GIT_REMOTE="$2" + GIT_REMOTE="$2" REPO_NAME="$3" [[ -z $REPO_NAME ]] && REPO_NAME=$(basename $GIT_REMOTE .git) export REPO_NAME @@ -102,11 +115,11 @@ elif [ "$1" = 'clone' ]; then git fetch for i in $(git ls-tree -r origin/master | awk '{print $4}'); do [[ -e $i ]] && - echo "$(basename $0): error: $i exists." && + echo "$SELF: error: $i exists." && CONFLICT=1; done [[ -n $CONFLICT ]] && - echo "$(basename $0): fatal: will stop after fetching and not try to merge!\n" && + echo "$SELF: fatal: will stop after fetching and not try to merge!\n" && exit 3 git merge origin/master vcsh use $REPO_NAME