From 2dcbc4d6ccedf064aaec330b585652900cc2c061 Mon Sep 17 00:00:00 2001 From: Richard Hartmann Date: Thu, 30 Aug 2012 00:39:03 +0200 Subject: [PATCH] Add command line options * -c: Source prior to other configuration files * -d: Enable debug mode * -v: Enable verbose mode --- doc/vcsh.1.ronn | 17 +++++++++++++++-- vcsh | 44 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 0fbead9..88ebd9d 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` [] + `vcsh` clone [] `vcsh` delete @@ -21,7 +23,7 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories `vcsh` rename -`vcsh` run +`vcsh` run `vcsh` setup @@ -29,7 +31,7 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories `vcsh` write-gitignore -`vcsh` +`vcsh` `vcsh` @@ -59,6 +61,17 @@ an interactive user. ## OPTIONS +* -c: + Source 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 358135a..9a4f4aa 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 + echo "usage: $SELF + + options: + -c Source file prior to other configuration files + -d Enable debug mode + -d Enable verbose mode + commands: clone \\ [] 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 } -- 2.39.2