X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/ed75afaad17884dcb3eb9b1f66ba45b7f4018dbb..938ee6f6bb1384a4c57556fd9be62ebf278c8114:/vcsh?ds=sidebyside diff --git a/vcsh b/vcsh index fdfeb84..7a9bf39 100755 --- a/vcsh +++ b/vcsh @@ -35,6 +35,7 @@ help() { run \\ Use this repository setup Set up repository with recommended settings + which Find substring in any tracked file name write-gitignore \\ Write .gitignore.d/ via git ls-files @@ -117,6 +118,7 @@ git_dir_exists() { hook() { for hook in $VCSH_HOOK_D/$1* $VCSH_HOOK_D/$VCSH_REPO_NAME.$1*; do [ -x "$hook" ] || continue + info "executing '$hook'" "$hook" done } @@ -182,6 +184,14 @@ use() { export VCSH_DIRECTORY="$VCSH_REPO_NAME" } +which() { + for VCSH_REPO_NAME in $(list); do + for VCSH_FILE in $(get_files); do + echo $VCSH_FILE | grep -q "$VCSH_COMMAND_PARAMETER" && echo "$VCSH_REPO_NAME: $VCSH_FILE" + done + done | sort -u +} + write_gitignore() { use cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11 @@ -224,13 +234,18 @@ if [ "$1" = 'clone' ]; then [ -n "$3" ] && VCSH_REPO_NAME="$3" || VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git) export VCSH_REPO_NAME export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git" -elif [ "$1" = 'delete' ] || - [ "$1" = 'enter' ] || - [ "$1" = 'init' ] || - [ "$1" = 'list-tracked-by' ] || - [ "$1" = 'rename' ] || - [ "$1" = 'run' ] || - [ "$1" = 'setup' ] || +elif [ "$1" = 'which' ]; then + [ -z "$2" ] && fatal "$1: please specify a filename" 1 + [ -n "$3" ] && fatal "$1: too many parameters" 1 + export VCSH_COMMAND="$1" + export VCSH_COMMAND_PARAMETER="$2" +elif [ "$1" = 'delete' ] || + [ "$1" = 'enter' ] || + [ "$1" = 'init' ] || + [ "$1" = 'list-tracked-by' ] || + [ "$1" = 'rename' ] || + [ "$1" = 'run' ] || + [ "$1" = 'setup' ] || [ "$1" = 'write-gitignore' ]; then [ -z $2 ] && fatal "$1: please specify repository to work on" 1 [ "$1" = 'rename' -a -z "$3" ] && fatal "$1: please specify a target name" 1