#compdef bzr # bzr is the bazaar-ng revision-control system local curcontext="$curcontext" state line expl cmd args ret=1 typeset -A opt_args _arguments -C \ '1: :->cmd' \ '*:: :->args' && ret=0 if (( ! $+_bzr_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