Skip to content
Snippets Groups Projects
Commit 807ddaae authored by Richard Hartmann's avatar Richard Hartmann
Browse files

Support more configuration files

Supported files

* /etc/vcsh/config
* $XDG_CONFIG_HOME/vcsh/config
* vcsh -c <file>
parent fd1e4004
No related branches found
No related tags found
No related merge requests found
......@@ -130,6 +130,59 @@ an interactive user.
As noted earlier, `vcsh` will set <$GIT_DIR> and <$GIT_WORK_TREE> to the
appropriate values for fake bare git repositories.
## CONFIG
There are several ways to turn the various knobs on `vcsh`. In order of
ascending precedence, they are:
* `VARIABLE=foo vcsh`
* </etc/vcsh/config>
* <$XDG_CONFIG_HOME/vcsh/config>
* `vcsh -c <file>`
Please note that those files are sourced. Any and all commands will be
executed in the context of your shell.
Interesting knobs you can turn:
* <$VCSH_GITIGNORE>:
Can be either <exact> or <recursive>.
<exact> will seed the repo-specific <.gitignore> with all file and directory
names which `git ls-files` returns.
<recursive> will descend through all directories recursively additionally to
the above.
Defaults to <exact>.
Less interesting knobs you could turn:
* <$VCSH_DEBUG>:
Enter debug mode.
* <$XDG_CONFIG_HOME>:
As specified in the 'XDG Base Directory Specification', see
<http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>
Defaults to <$HOME/.config>.
* <$VCSH_REPO_D>:
The directory where repositories are read from and stored.
Defaults to <$XDG_CONFIG_HOME/vcsh/repo.d>.
* <$VCSH_HOOK_D>:
The directory where hooks are read from.
Defaults to <$XDG_CONFIG_HOME/vcsh/hooks-enabled>.
* <$VCSH_BASE>:
The directory where repositories are checked out to.
Defaults to <$HOME>.
## HOOK SYSTEM
`vcsh` provides a hook system. Hook scripts must be executable and should be
......@@ -163,11 +216,12 @@ On Debian-based systems, this file can be found in </usr/share/doc/vcsh>.
## SECURITY CONSIDERATIONS
`vcsh` allows you to execute arbitrary commands via `vcsh` run. For example,
`vcsh` allows you to execute arbitrary commands via `vcsh run`. For example,
adding a `sudo`(8) rule for `vcsh` would be pretty stupid.
Additionally, vcsh will source, i.e. execute, <$XDG_CONFIG_HOME/vcsh/config>.
You can put any and all commands into this config file and they will be executed.
Additionally, vcsh will source, i.e. execute, all files listed in <CONFIG>.
You can put any and all commands into these config files and they will be
executed.
## BUGS
......
......@@ -29,31 +29,48 @@ while getopts "c:dv" flag; do
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
VCSH_OPTION_CONFIG=$OPTARG
fi
done
source_all() {
# Source file even if it's in $PWD and does not have any slashes in it
case "$1" in
*/*) . "$1";;
*) . "$PWD/$1";;
esac;
}
# Read configuration and set defaults if anything's not set
[ -n "$VCSH_DEBUG" ] && set -vx
[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config"
# Read configuration files if there are any
[ -r "/etc/vcsh/config" ] && . "/etc/vcsh/config"
[ -r "$XDG_CONFIG_HOME/vcsh/config" ] && . "$XDG_CONFIG_HOME/vcsh/config"
if [ -n "$VCSH_OPTION_CONFIG" ]; then
# Source $VCSH_OPTION_CONFIG if it can be read and is in $PWD of $PATH
if [ -r "$VCSH_OPTION_CONFIG" ]; then
source_all "$VCSH_OPTION_CONFIG"
else
fatal "Can not read configuration file '$VCSH_OPTION_CONFIG'" 1
fi
fi
[ -n "$VCSH_DEBUG" ] && set -vx
# Read defaults
[ -z "$VCSH_REPO_D" ] && VCSH_REPO_D="$XDG_CONFIG_HOME/vcsh/repo.d"
[ -z "$VCSH_HOOK_D" ] && VCSH_HOOK_D="$XDG_CONFIG_HOME/vcsh/hooks-enabled"
[ -z "$VCSH_BASE" ] && VCSH_BASE="$HOME"
[ -z "$VCSH_GITIGNORE" ] && VCSH_GITIGNORE='exact'
help() {
echo "usage: $SELF <options> <command>
options:
-c <file> Source file prior to other configuration files
-c <file> Source file
-d Enable debug mode
-d Enable verbose mode
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment