From: Richard Hartmann Date: Mon, 20 Oct 2014 20:37:06 +0000 (+0200) Subject: vcsh: Add support for overlay functions X-Git-Url: https://git.madduck.net/code/vcsh.git/commitdiff_plain/9f943527a41af4e68dd05ef208ba05666a37e2da?hp=d946b07817ffe6e156c159e7fc6270322413e530 vcsh: Add support for overlay functions --- diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 05da4fa..ebc9896 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -254,6 +254,17 @@ Available hooks are , , , If you need more, vcsh is trivial to patch, but please let upstream know so we can ship them by default. +## OVERLAY SYSTEM + +`vcsh` also provides an overlay system. Similar to hooks, the recommended +locations are <$XDG_CONFIG_HOME/vcsh/overlays-available> and +<$XDG_CONFIG_HOME/vcsh/overlays-enabled>. + +Overlays follow the same rules as hooks and you are free to overwrite any +and all functions. As the overlays will be sourced and you are replacing +arbitrary functions, any and all features may stop working, or you may even +lose data. You have been warned. + ## DETAILED HOWTO AND FURTHER READING Manpages are often short and sometimes useless to glean best practices from. diff --git a/vcsh b/vcsh index 0b4c452..301151a 100755 --- a/vcsh +++ b/vcsh @@ -75,6 +75,7 @@ fi # Read defaults : ${VCSH_REPO_D:="$XDG_CONFIG_HOME/vcsh/repo.d"} : ${VCSH_HOOK_D:="$XDG_CONFIG_HOME/vcsh/hooks-enabled"} +: ${VCSH_OVERLAY_D:="$XDG_CONFIG_HOME/vcsh/overlays-enabled"} : ${VCSH_BASE:="$HOME"} : ${VCSH_GITIGNORE:=exact} : ${VCSH_GITATTRIBUTES:=none} @@ -511,6 +512,14 @@ check_dir "$VCSH_REPO_D" verbose "$VCSH_COMMAND begin" VCSH_COMMAND=$(echo "$VCSH_COMMAND" | sed 's/-/_/g'); export VCSH_COMMAND + +# source overlay functions +for overlay in "$VCSH_OVERLAY_D/$VCSH_COMMAND"* "$VCSH_OVERLAY_D/$VCSH_REPO_NAME.$VCSH_COMMAND"*; do + [ -r "$overlay" ] || continue + info "sourcing '$overlay'" + . "$overlay" +done + hook pre-command $VCSH_COMMAND "$@" hook post-command