mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-23 04:30:24 +02:00
My improved version of the _bzr script taken from the bzr.dev
repository (from contrib/zsh/_bzr).
This commit is contained in:
parent
c2cace1a84
commit
ca2756f115
1 changed files with 321 additions and 8 deletions
|
@ -1,13 +1,326 @@
|
|||
#compdef bzr
|
||||
|
||||
local _bzr_subcommands expl curcontext="$curcontext"
|
||||
# bzr is the bazaar-ng revision-control system
|
||||
|
||||
_bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"})
|
||||
local curcontext="$curcontext" state line expl cmd args ret=1
|
||||
typeset -A opt_args
|
||||
|
||||
if (( CURRENT == 2 )); then
|
||||
_describe -t subcommand 'subcommand' _bzr_subcommands
|
||||
else
|
||||
# this part should call bzr shell-complete <subcmd> when
|
||||
# it has been tweaked properly
|
||||
_files
|
||||
_arguments -C \
|
||||
'1: :->cmd' \
|
||||
'*:: :->args' && ret=0
|
||||
|
||||
if (( ! $+_svn_cmds )); then
|
||||
typeset -gH _bzr_cmds
|
||||
_bzr_cmds=(${(f)"$(_call_program bzr bzr shell-complete)"})
|
||||
fi
|
||||
|
||||
if [[ $state != 'args' ]]; then
|
||||
_describe -t subcommand 'subcommand' _bzr_cmds
|
||||
return 0
|
||||
fi
|
||||
|
||||
cmd="$words[1]"
|
||||
curcontext="${curcontext%:*:*}:bzr-$cmd:"
|
||||
|
||||
(( $+functions[_bzr_unknownFiles] )) ||
|
||||
_bzr_unknownFiles() {
|
||||
local fileList
|
||||
fileList=(${(ps:\0:)"$(bzr ls --null --unknown)"})
|
||||
compadd -af fileList
|
||||
return 0
|
||||
}
|
||||
|
||||
(( $+functions[_bzr_unknownRoot] )) ||
|
||||
_bzr_unknownRoot() {
|
||||
local fileList
|
||||
fileList=(${(ps:\0:)"$(bzr ls --null --from-root --unknown)"})
|
||||
compadd -af fileList
|
||||
return 0
|
||||
}
|
||||
|
||||
(( $+functions[_bzr_versionedFiles] )) ||
|
||||
_bzr_versionedFiles() {
|
||||
local fileList
|
||||
fileList=(${(ps:\0:)"$(bzr ls --null --versioned)"})
|
||||
compadd -af fileList
|
||||
return 0
|
||||
}
|
||||
|
||||
(( $+functions[_bzr_completeParents] )) ||
|
||||
_bzr_completeParents() {
|
||||
local parentFile=$(bzr root 2>/dev/null)/.bzr/parent
|
||||
[[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
|
||||
}
|
||||
|
||||
args=( '(-)'{--help,-h}'[show help message]' )
|
||||
|
||||
case $cmd in
|
||||
(add)
|
||||
args+=(
|
||||
'--no-recurse[do not recurse into subdirectories]'
|
||||
'(-q --quiet)'{--quiet,-q}'[be quiet]'
|
||||
'*:unknown files:_bzr_unknownFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(annotate|praise|blame)
|
||||
args+=( '*:files:_bzr_versionedFiles' )
|
||||
;;
|
||||
|
||||
(clone|branch|get)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:rev:'
|
||||
'--basis[specify basis branch]:basis:'
|
||||
)
|
||||
if (( CURRENT == 2 )); then
|
||||
args+=( '*:FROM_LOCATION:_files -/' )
|
||||
elif (( CURRENT == 3 )); then
|
||||
args+=( '*:TO_LOCATION:_files -/' )
|
||||
fi
|
||||
;;
|
||||
|
||||
(rename|mv)
|
||||
if (( CURRENT == 2 )); then
|
||||
args+=( '*:old name:_bzr_versionedFiles' )
|
||||
else
|
||||
args+=( '*:new name:' )
|
||||
fi
|
||||
;;
|
||||
|
||||
(cat)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:rev:'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(root)
|
||||
args+=( '*:file:_files' )
|
||||
;;
|
||||
|
||||
(log)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision or range]:rev or rev range:'
|
||||
'(-v --verbose)'{--verbose,-v}'[show revision manifest]'
|
||||
'(-l --short --long)'{--long,-l}'[use long format (default)]'
|
||||
'(-l --long)--short[use short format]'
|
||||
'(-m --message)'{--message,-m}'[specify regexp]:regexp:'
|
||||
'--show-ids[show file IDs]'
|
||||
'--forward[reverse direction of revisions]'
|
||||
'--timezone[specify timezone for dates]:timezone:'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(resolve)
|
||||
args+=(
|
||||
'--all[resolve all conflicts in this tree]'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(status|st|stat)
|
||||
args+=(
|
||||
'--all[include unchanged versioned files]'
|
||||
'--show-ids[show file IDs]'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(check)
|
||||
args+=(
|
||||
'(-v --verbose)'{--verbose,-v}'[display more information]'
|
||||
'*:DIR:_files -/'
|
||||
)
|
||||
;;
|
||||
|
||||
(mkdir|upgrade|renames)
|
||||
args+=( '*:DIR:_files -/' )
|
||||
;;
|
||||
|
||||
(remove|rm)
|
||||
args+=(
|
||||
'(-v --verbose)'{--verbose,-v}'[display more information]'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(pull)
|
||||
args+=(
|
||||
'--remember[Remember the specified location as a default]'
|
||||
'--overwrite[Ignore differences, overwrite unconditionally]'
|
||||
'*:local repository:_files -/'
|
||||
)
|
||||
_bzr_completeParents
|
||||
;;
|
||||
|
||||
(missing)
|
||||
args+=(
|
||||
'(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]'
|
||||
'(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]'
|
||||
'(-l --long --short --log_format)--line[Use log format with one line per revision. Same as "--log-format line"]'
|
||||
'(-l --long --short --line)--log-format[Use the specified log format]:log format'
|
||||
'(-l --long --short --line --log-format)'{--long,-l}'[Use detailed log format. Same as "--log-format long"]'
|
||||
'--mine-only[Display changes in the local branch only]'
|
||||
'--reverse[Reverse the order of revisions]'
|
||||
'(-l --long --log_format)--short[Use moderately short log format. Same as "--log-format short"]'
|
||||
'--show-ids[show internal object ids]'
|
||||
'--theirs-only[Display changes in the remote branch only]'
|
||||
'*:local repository:_files -/'
|
||||
)
|
||||
_bzr_completeParents
|
||||
;;
|
||||
|
||||
(commit|checkin|ci)
|
||||
args+=(
|
||||
'(-m --message)'{--message,-m}'[commit message]:message text:'
|
||||
'(-F --file)'{--file,-F}'[commit message from file]:message file:'
|
||||
'--unchanged[include unchanged files]'
|
||||
'(-v --verbose)'{--verbose,-v}'[display more information]'
|
||||
'*:modified files:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(conflicts|added|deleted|modified|unknowns|directories|ignored)
|
||||
;;
|
||||
|
||||
(revno|init|version)
|
||||
;;
|
||||
|
||||
(whoami)
|
||||
args+=( '--email[only show e-mail address]' )
|
||||
;;
|
||||
|
||||
(inventory)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[show inventory of a revision]:revision:'
|
||||
'--show-ids[show file IDs]'
|
||||
)
|
||||
;;
|
||||
|
||||
(diff|dif|di)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'--diff-options[options to pass to gdiff]:diff options:'
|
||||
'*:files:_files'
|
||||
)
|
||||
;;
|
||||
|
||||
(export)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'--format=[format of exported file]:format:(dir tar tgz tbz2)'
|
||||
'--root[root directory of patch]:_files -/'
|
||||
'*:destination:_files'
|
||||
)
|
||||
;;
|
||||
|
||||
(ignore)
|
||||
args+=( '*:NAME_PATTERN:_bzr_unknownRoot' )
|
||||
;;
|
||||
|
||||
(info)
|
||||
args+=( '*:branch:_files -/' )
|
||||
;;
|
||||
|
||||
(testament)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'(-l --long)'{--long,-l}'[use long format]'
|
||||
'*:branch:_files -/'
|
||||
)
|
||||
;;
|
||||
|
||||
(revert|merge-revert)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'--no-backup[skip generation of backup~ files]'
|
||||
'*:file:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(merge)
|
||||
args+=(
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'--reprocess[Reprocess to reduce spurious conflicts]'
|
||||
'--show-base[Show base revision text in conflicts]'
|
||||
'--force[ignore uncommitted changes]'
|
||||
'--merge-type:merge type:(diff3 merge3 weave)'
|
||||
'*:local repository:_files -/'
|
||||
)
|
||||
_bzr_completeParents
|
||||
;;
|
||||
|
||||
(ls)
|
||||
args+=(
|
||||
'(-v --verbose)'{--verbose,-v}'[display more information]'
|
||||
'(-r --revision)'{--revision,-r}'[revision]:revision:'
|
||||
'--from-root[Print all paths from the root of the branch]'
|
||||
'--non-recursive[Do not recurse into subdirectories]'
|
||||
'--null[Null separate the files]'
|
||||
'--ignored[Print ignored files]'
|
||||
'--unknown[Print unknown files]'
|
||||
'--versioned[Print versioned files]'
|
||||
)
|
||||
;;
|
||||
|
||||
(move)
|
||||
if (( CURRENT == 2 )); then
|
||||
args+=(
|
||||
'*:files:_bzr_versionedFiles'
|
||||
)
|
||||
else
|
||||
args=(
|
||||
'*:destination dir:_files -/'
|
||||
)
|
||||
fi
|
||||
;;
|
||||
|
||||
(help)
|
||||
args=(
|
||||
'(-l --long)'{--long,-l}'[use long format]'
|
||||
'*:subcmds:->cmds'
|
||||
)
|
||||
_arguments -s "$args[@]" && ret=0
|
||||
_describe -t subcommand 'subcommand' _bzr_cmds
|
||||
return 0
|
||||
;;
|
||||
|
||||
# Plugins
|
||||
|
||||
(visualize|visualise|viz|vis)
|
||||
args+=( '(-r --revision)'{--revision,-r}'[starting revision]:rev:' )
|
||||
;;
|
||||
|
||||
(gannotate|gblame|gpraise)
|
||||
args+=(
|
||||
'--all[show annotations on all lines]'
|
||||
'--plain[do not hightlight annotation lines]'
|
||||
'*:files:_bzr_versionedFiles'
|
||||
)
|
||||
;;
|
||||
|
||||
(push)
|
||||
args+=(
|
||||
'--overwrite[Ignore differences, overwrite unconditionally]'
|
||||
'*:local repository:_files -/'
|
||||
)
|
||||
_bzr_completeParents
|
||||
;;
|
||||
|
||||
(clean-tree)
|
||||
args+=(
|
||||
'--dry-run[show files to delete instead of deleting them]'
|
||||
'--ignored[delete all ignored files]'
|
||||
'--detritus[delete conflict files, merge backups, failed self-tests, *~, *.tmp, etc]'
|
||||
)
|
||||
;;
|
||||
|
||||
(*)
|
||||
_message "unknown bzr command completion: $cmd"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
_arguments -s "$args[@]" && ret=0
|
||||
return ret
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue