diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 0fbead9a78c4f30ce0e1d02680a913249c49dbf7..88ebd9dd0633890cdd6b30d845bc934b3e803698 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -3,6 +3,8 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories ## SYNOPSIS +`vcsh` [<options>] <command> + `vcsh` clone <url> [<repo>] `vcsh` delete <repo> @@ -21,7 +23,7 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories `vcsh` rename <repo> <newname> -`vcsh` run <repo> <command> +`vcsh` run <repo> <shell command> `vcsh` setup <repo> @@ -29,7 +31,7 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories `vcsh` write-gitignore <repo> -`vcsh` <repo> <gitcommand> +`vcsh` <repo> <git command> `vcsh` <repo> @@ -59,6 +61,17 @@ an interactive user. ## OPTIONS +* -c: + Source <file> prior to other configuration files + +* -d: + Enable debug mode + +* -v: + Enable verbose mode + +## COMMANDS + * clone: Clone an existing repository. diff --git a/vcsh b/vcsh index 358135a48ed814b63218d0fef0b6a68023afae0e..9a4f4aae437597fad43cb959a9a0707faea7b99b 100755 --- a/vcsh +++ b/vcsh @@ -11,6 +11,35 @@ # full compability with git. In case git ever changes its licensing terms, # this software will most likely follow suit. +SELF=$(basename $0) + +fatal() { + echo "$SELF: fatal: $1" >&2 + exit $2 +} + +# We need to run getops as soon as possible so we catch -d and other +# options that will modify our behaviour. +# Commands are handled at the end of this script. +while getopts "c:dv" flag; do + if [ "$1" = '-d' ] || [ "$1" = '--debug' ]; then + set -vx + VCSH_DEBUG=1 + shift 1 + elif [ "$1" = '-v' ];then + VCSH_VERBOSE=1 + elif [ "$1" = '-c' ];then + # Source $OPTARG if it can be read and has an absolute or relative + # path or is in $PATH + if [ -r "$OPTARG" ]; then + . "$OPTARG" + else + fatal "Can not read configuration file '$OPTARG'" 1 + fi + fi +done + + [ -n "$VCSH_DEBUG" ] && set -vx [ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config" [ -r "$XDG_CONFIG_HOME/vcsh/config" ] && . "$XDG_CONFIG_HOME/vcsh/config" @@ -20,11 +49,15 @@ [ -z "$VCSH_BASE" ] && VCSH_BASE="$HOME" [ -z "$VCSH_GITIGNORE" ] && VCSH_GITIGNORE='exact' -SELF=$(basename $0) - help() { - echo "usage: $SELF <args> + echo "usage: $SELF <options> <command> + + options: + -c <file> Source file prior to other configuration files + -d Enable debug mode + -d Enable verbose mode + commands: clone <remote> \\ [<repo>] Clone from an existing repository delete Delete an existing repository @@ -56,11 +89,6 @@ verbose() { if [ -n "$VCSH_DEBUG" ] || [ -n "$VCSH_VERBOSE" ]; then echo "$SELF: verbose: $@"; fi } -fatal() { - echo "$SELF: fatal: $1" >&2 - exit $2 -} - error() { echo "$SELF: error: $1" >&2 }