X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/e3bf7a0bc56990f02434c5dd55d3d9e0badbc716..2db7eb61c0ba0c9c48f6a0a1b08064c10a6dec8a:/vcsh diff --git a/vcsh b/vcsh index 0bf5a14..3d08f22 100755 --- a/vcsh +++ b/vcsh @@ -4,6 +4,18 @@ SELF=$(basename $0) [ -z $XDG_CONFIG_HOME ] && XDG_CONFIG_HOME="$HOME/.config" +for dir in $XDG_CONFIG_HOME $XDG_CONFIG_HOME/vcsh $XDG_CONFIG_HOME/vcsh/repo.d +do + + if [ ! -d $dir ]; then + if [ -e $dir ]; then + echo "$SELF: error: $dir exists but is not a directory" >&2 + return 2 + else + mkdir $dir || (echo "$SELF: error: could not create $dir" >&2; return 2) + fi + fi +done VCSH_BASE="$XDG_CONFIG_HOME/vcsh/repo.d" help() { @@ -40,12 +52,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 +92,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 +101,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 +114,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