]> git.madduck.net Git - code/vcsh.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Add command line options
authorRichard Hartmann <richih.mailinglist@gmail.com>
Wed, 29 Aug 2012 22:39:03 +0000 (00:39 +0200)
committerRichard Hartmann <richih.mailinglist@gmail.com>
Wed, 29 Aug 2012 22:39:03 +0000 (00:39 +0200)
* -c:
  Source <file> prior to other configuration files
* -d:
  Enable debug mode
* -v:
  Enable verbose mode

doc/vcsh.1.ronn
vcsh

index 0fbead9a78c4f30ce0e1d02680a913249c49dbf7..88ebd9dd0633890cdd6b30d845bc934b3e803698 100644 (file)
@@ -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 (executable)
--- a/vcsh
+++ b/vcsh
 # 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"
 [ -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
 }