X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/875822eef55e3a00043c56ebfb02d983580c5b9c..558f3284dc552756546eb02be32ec3e737e7a3b0:/vcsh diff --git a/vcsh b/vcsh index 62310a7..c4423fd 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() { @@ -61,32 +74,37 @@ leave() { if [ "$1" = 'help' ] || [ $# -eq 0 ]; then help [ "$1" = 'help' ] - return $? + exit $? elif [ "$1" = 'list' ]; then for i in $VCSH_BASE/*.git; do echo $(basename $i .git) done - return 0 + exit 0 elif [ "$1" = 'run' ]; then use $2 shift 2 "$@" leave - return 0 + exit 0 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;} + if [[ -n $ZSH_VERSION ]]; then + vcsh_exit() { + vcsh exit; + zle reset-prompt; + } + fi zle -N vcsh_exit bindkey '^d' 'vcsh_exit' fi use $2 buildPS1 - return 0 + exit 0 elif [ "$1" = 'clone' ]; then GIT_REMOTE="$2" @@ -124,11 +142,11 @@ elif [ "$1" = 'exit' ]; then fi leave buildPS1 - return 0 + exit 0 else help - return 3 + exit 3 fi