]>
git.madduck.net Git - code/vcsh.git/blobdiff - _vcsh
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:
#compdef vcsh
function __vcsh_repositories () {
#compdef vcsh
function __vcsh_repositories () {
- #TODO list only one repo and stop
local expl
local -a repos
repos=( ${(f)"$(command vcsh list)"} )
local expl
local -a repos
repos=( ${(f)"$(command vcsh list)"} )
}
function _vcsh-delete () {
}
function _vcsh-delete () {
+ (( CURRENT == 2 )) && __vcsh_repositories
}
function _vcsh-enter () {
}
function _vcsh-enter () {
+ (( CURRENT == 2 )) && __vcsh_repositories
+}
+
+function _vcsh-foreach () {
+ _dispatch vcsh-foreach git
}
function _vcsh-help () {
}
function _vcsh-help () {
}
function _vcsh-list-tracked () {
}
function _vcsh-list-tracked () {
+ (( CURRENT == 2 )) && __vcsh_repositories
+}
+
+function _vcsh-list-untracked () {
+ _nothing
+}
+
+function _vcsh-pull () {
-function _vcsh-list-tracked-by () {
- __vcsh_repositories
+function _vcsh-push () {
+ _nothing
}
function _vcsh-rename () {
}
function _vcsh-rename () {
- __vcsh_repositories
- #TODO tell the user to write new stuff
+ (( CURRENT == 2 )) && __vcsh_repositories
+ (( CURRENT == 3 )) && _message "new repository name"
+ (( CURRENT > 3 )) && _nothing
}
function _vcsh-run () {
}
function _vcsh-run () {
- __vcsh_repositories
- _commands
- #TODO normal commands
+ (( CURRENT == 2 )) && __vcsh_repositories
+ (( CURRENT == 3 )) && _command_names -e
+ if (( CURRENT >= 4 )); then
+ # see _precommand in zsh
+ words=( "${(@)words[3,-1]}" )
+ (( CURRENT -= 2 ))
+ _normal
+ fi
+}
+
+function _vcsh-status () {
+ (( CURRENT == 2 )) && __vcsh_repositories
-function _vcsh-setup () {
- __vcsh_repositories
+function _vcsh-upgrade () {
+ (( CURRENT == 2 )) && __vcsh_repositories
}
function _vcsh-version () {
}
function _vcsh-version () {
}
function _vcsh-which () {
}
function _vcsh-which () {
- __vcsh_not_implemented_yet "$0" #TODO
}
function _vcsh-write-gitignore () {
}
function _vcsh-write-gitignore () {
+ (( CURRENT == 2 )) && __vcsh_repositories
local state vcshcommand
local -a args subcommands
local state vcshcommand
local -a args subcommands
+ local VCSH_REPO_D
+ : ${VCSH_REPO_D:="${XDG_CONFIG_HOME:-"$HOME/.config"}/vcsh/repo.d"}
+
subcommands=(
"clone:clone an existing repository"
subcommands=(
"clone:clone an existing repository"
+ "commit:commit in all repositories"
"delete:delete an existing repository"
"enter:enter repository; spawn new <\$SHELL>"
"delete:delete an existing repository"
"enter:enter repository; spawn new <\$SHELL>"
+ "foreach:execute for all repos"
"help:display help"
"init:initialize an empty repository"
"list:list all local vcsh repositories"
"list-tracked:list all files tracked by vcsh"
"help:display help"
"init:initialize an empty repository"
"list:list all local vcsh repositories"
"list-tracked:list all files tracked by vcsh"
- "list-tracked-by:list files tracked by a repository"
+ "list-untracked:list all files not tracked by vcsh"
+ "pull:pull from all vcsh remotes"
+ "push:push to vcsh remotes"
"rename:rename a repository"
"run:run command with <\$GIT_DIR> and <\$GIT_WORK_TREE> set"
"rename:rename a repository"
"run:run command with <\$GIT_DIR> and <\$GIT_WORK_TREE> set"
- "setup:set up repository with recommended settings"
+ "status:show statuses of all/one vcsh repositories"
+ "upgrade:upgrade repository to currently recommended settings"
"version:print version information"
"which:find <substring> in name of any tracked file"
"write-gitignore:write .gitignore.d/<repo> via git ls-files"
"version:print version information"
"which:find <substring> in name of any tracked file"
"write-gitignore:write .gitignore.d/<repo> via git ls-files"
if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
# There is no handler function, so this is probably the name
# of a repository. Act accordingly.
if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
# There is no handler function, so this is probably the name
# of a repository. Act accordingly.
- _message "git sub-command"
- #TODO and now we need to complete on git subcommands
+ # FIXME: this may want to use '_dispatch vcsh git'
+ GIT_DIR=$VCSH_REPO_D/$words[1].git _dispatch git git
else
curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
else
curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
- _call_function ret _vcsh-${vcshcommand}
+ _call_function ret _vcsh-${vcshcommand} && (( ret ))