Last active
August 29, 2015 14:02
-
-
Save bulkan/9d3f06313eb7582ef5f6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [~]: brew outdated | |
| Error: undefined method `new' for Zlib:Module | |
| Please report this bug: | |
| https://github.com/Homebrew/homebrew/wiki/troubleshooting | |
| /usr/local/Library/Homebrew/formulary.rb:50:in `get_formula' | |
| /usr/local/Library/Homebrew/formulary.rb:194:in `factory' | |
| /usr/local/Library/Homebrew/formula.rb:377:in `block in installed' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `map' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `installed' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:16:in `outdated_brews' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:6:in `outdated' | |
| /usr/local/Library/brew.rb:106:in `<main>' | |
| [~]: brew doctor | |
| Warning: Broken symlinks were found. Remove them with `brew prune`: | |
| /usr/local/lib/python2.7/site-packages/site-packages | |
| Error: Failed to import: zlib | |
| undefined method `new' for Zlib:Module | |
| Warning: Some keg-only formula are linked into the Cellar. | |
| Linking a keg-only formula, such as gettext, into the cellar with | |
| `brew link <formula>` will cause other formulae to detect them during | |
| the `./configure` step. This may cause problems when compiling those | |
| other formulae. | |
| Binaries provided by keg-only formulae may override system binaries | |
| with other strange results. | |
| You may wish to `brew unlink` these brews: | |
| icu4c | |
| Error: undefined method `new' for Zlib:Module | |
| Please report this bug: | |
| https://github.com/Homebrew/homebrew/wiki/troubleshooting | |
| /usr/local/Library/Homebrew/formulary.rb:50:in `get_formula' | |
| /usr/local/Library/Homebrew/formulary.rb:194:in `factory' | |
| /usr/local/Library/Homebrew/formula.rb:397:in `factory' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1068:in `block in check_for_unlinked_but_not_keg_only' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1063:in `reject' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1063:in `check_for_unlinked_but_not_keg_only' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1145:in `block in doctor' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1144:in `each' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1144:in `doctor' | |
| /usr/local/Library/brew.rb:106:in `<main>' | |
| [~]: brew prune | |
| Pruned 0 dead formulae | |
| Tapped 41 formulae | |
| Pruned 1 symbolic links and 4 directories from /usr/local | |
| [~]: brew outdated | |
| Error: undefined method `new' for Zlib:Module | |
| Please report this bug: | |
| https://github.com/Homebrew/homebrew/wiki/troubleshooting | |
| /usr/local/Library/Homebrew/formulary.rb:50:in `get_formula' | |
| /usr/local/Library/Homebrew/formulary.rb:194:in `factory' | |
| /usr/local/Library/Homebrew/formula.rb:377:in `block in installed' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `map' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `installed' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:16:in `outdated_brews' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:6:in `outdated' | |
| /usr/local/Library/brew.rb:106:in `<main>' | |
| [~]: brew doctor | |
| Error: Failed to import: zlib | |
| undefined method `new' for Zlib:Module | |
| Warning: Some keg-only formula are linked into the Cellar. | |
| Linking a keg-only formula, such as gettext, into the cellar with | |
| `brew link <formula>` will cause other formulae to detect them during | |
| the `./configure` step. This may cause problems when compiling those | |
| other formulae. | |
| Binaries provided by keg-only formulae may override system binaries | |
| with other strange results. | |
| You may wish to `brew unlink` these brews: | |
| icu4c | |
| Error: undefined method `new' for Zlib:Module | |
| Please report this bug: | |
| https://github.com/Homebrew/homebrew/wiki/troubleshooting | |
| /usr/local/Library/Homebrew/formulary.rb:50:in `get_formula' | |
| /usr/local/Library/Homebrew/formulary.rb:194:in `factory' | |
| /usr/local/Library/Homebrew/formula.rb:397:in `factory' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1068:in `block in check_for_unlinked_but_not_keg_only' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1063:in `reject' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1063:in `check_for_unlinked_but_not_keg_only' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1145:in `block in doctor' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1144:in `each' | |
| /usr/local/Library/Homebrew/cmd/doctor.rb:1144:in `doctor' | |
| /usr/local/Library/brew.rb:106:in `<main>' | |
| [~]: brew up | |
| Already up-to-date. | |
| [~]: brew outdated | |
| Error: undefined method `new' for Zlib:Module | |
| Please report this bug: | |
| https://github.com/Homebrew/homebrew/wiki/troubleshooting | |
| /usr/local/Library/Homebrew/formulary.rb:50:in `get_formula' | |
| /usr/local/Library/Homebrew/formulary.rb:194:in `factory' | |
| /usr/local/Library/Homebrew/formula.rb:377:in `block in installed' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `map' | |
| /usr/local/Library/Homebrew/formula.rb:375:in `installed' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:16:in `outdated_brews' | |
| /usr/local/Library/Homebrew/cmd/outdated.rb:6:in `outdated' | |
| /usr/local/Library/brew.rb:106:in `<main>' | |
| [~]: brew --config | |
| HOMEBREW_VERSION: 0.9.5 | |
| ORIGIN: https://github.com/Homebrew/homebrew.git | |
| HEAD: 92710b962b4f3fbb5c0ffaf73317ad77e39e73d0 | |
| HOMEBREW_PREFIX: /usr/local | |
| HOMEBREW_CELLAR: /usr/local/Cellar | |
| CPU: quad-core 64-bit haswell | |
| OS X: 10.9.3-x86_64 | |
| Xcode: 5.1.1 | |
| CLT: 5.1.0.0.1.1396320587 | |
| Clang: 5.1 build 503 | |
| X11: N/A | |
| System Ruby: 2.0.0-451 | |
| Perl: /usr/bin/perl | |
| Python: /usr/local/bin/python => /usr/local/Cellar/python/2.7.7_1/Frameworks/Python.framework/Versions/2.7/bin/python2.7 | |
| Ruby: /Users/bulkan/.rbenv/shims/ruby | |
| [~]: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Apple_PubSub_Socket_Render=/tmp/launch-TMJdla/Render | |
| BASH=/bin/bash | |
| BASH_ARGC=() | |
| BASH_ARGV=() | |
| BASH_COMPLETION=/usr/local/etc/bash_completion | |
| BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d | |
| BASH_COMPLETION_DIR=/usr/local/etc/bash_completion.d | |
| BASH_LINENO=() | |
| BASH_SOURCE=() | |
| BASH_VERSINFO=([0]="3" [1]="2" [2]="51" [3]="1" [4]="release" [5]="x86_64-apple-darwin13") | |
| BASH_VERSION='3.2.51(1)-release' | |
| COLORFGBG='7;0' | |
| COLUMNS=203 | |
| COMP_WORDBREAKS=$' \t\n"\'><=;|&(:' | |
| DIRSTACK=() | |
| EUID=501 | |
| GOPATH=/Users/bulkan/src/go | |
| GROUPS=() | |
| HISTFILE=/Users/bulkan/.bash_history | |
| HISTFILESIZE=500 | |
| HISTSIZE=500 | |
| HOME=/Users/bulkan | |
| HOSTNAME=joser-pc.impos.com.au | |
| HOSTTYPE=x86_64 | |
| IFS=$' \t\n' | |
| ITERM_PROFILE='Solarized Dark' | |
| ITERM_SESSION_ID=w0t2p0 | |
| LANG=en_AU.UTF-8 | |
| LINES=59 | |
| LOGNAME=bulkan | |
| MACHTYPE=x86_64-apple-darwin13 | |
| MAILCHECK=60 | |
| OPTERR=1 | |
| OPTIND=1 | |
| OSTYPE=darwin13 | |
| PATH=/usr/local/sbin:/usr/local/bin:/usr/local/heroku/bin:/Users/bulkan/.bin:/Users/bulkan/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:/Users/bulkan/src/go/bin | |
| PIPESTATUS=([0]="0") | |
| PPID=557 | |
| PROJECT_HOME=/Users/bulkan/src/python | |
| PROMPT_COMMAND='PS1="\[\033[36m\]$(_venv)\[\033[0m\][\[\033[0m\]\w]\[\033[36m\]$(parse_git_branch):\[\033[0m\] "' | |
| PS1='\[\033[36m\]\[\033[0m\][\[\033[0m\]\w]\[\033[36m\]:\[\033[0m\] ' | |
| PS2='> ' | |
| PS4='+ ' | |
| PWD=/Users/bulkan | |
| RC=0 | |
| SHELL=/bin/bash | |
| SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor | |
| SHLVL=1 | |
| SSH_AUTH_SOCK=/tmp/launch-3tw6z9/Listeners | |
| TERM=screen-256color | |
| TERM_PROGRAM=iTerm.app | |
| TMPDIR=/var/folders/49/30k39lp17mz4_sdyz_0wcdb00000gn/T/ | |
| UID=501 | |
| USER=bulkan | |
| VIRTUALENVWRAPPER_ENV_BIN_DIR=bin | |
| VIRTUALENVWRAPPER_HOOK_DIR=/Users/bulkan/src/python | |
| VIRTUALENVWRAPPER_PROJECT_FILENAME=.project | |
| VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python | |
| VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh | |
| VIRTUALENVWRAPPER_VIRTUALENV=virtualenv | |
| VIRTUALENVWRAPPER_VIRTUALENV_CLONE=virtualenv-clone | |
| WORKON_HOME=/Users/bulkan/src/python | |
| _=declare | |
| __CF_USER_TEXT_ENCODING=0x1F5:0:0 | |
| __CHECKFIX1436934=1 | |
| __git_all_commands= | |
| __git_diff_algorithms='myers minimal patience histogram' | |
| __git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only --name-status --color\n\t\t\t--no-color --color-words --no-renames --check\n\t\t\t--full-index --binary --abbrev --diff-filter=\n\t\t\t--find-copies-harder\n\t\t\t--text --ignore-space-at-eol --ignore-space-change\n\t\t\t--ignore-all-space --exit-code --quiet --ext-diff\n\t\t\t--no-ext-diff\n\t\t\t--no-prefix --src-prefix= --dst-prefix=\n\t\t\t--inter-hunk-context=\n\t\t\t--patience --histogram --minimal\n\t\t\t--raw --word-diff\n\t\t\t--dirstat --dirstat= --dirstat-by-file\n\t\t\t--dirstat-by-file= --cumulative\n\t\t\t--diff-algorithm=\n' | |
| __git_fetch_options=$'\n\t--quiet --verbose --append --upload-pack --force --keep --depth=\n\t--tags --no-tags --all --prune --dry-run --recurse-submodules=\n' | |
| __git_fetch_recurse_submodules='yes on-demand no' | |
| __git_format_patch_options=$'\n\t--stdout --attach --no-attach --thread --thread= --no-thread\n\t--numbered --start-number --numbered-files --keep-subject --signoff\n\t--signature --no-signature --in-reply-to= --cc= --full-index --binary\n\t--not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=\n\t--inline --suffix= --ignore-if-in-upstream --subject-prefix=\n\t--output-directory --reroll-count --to= --quiet --notes\n' | |
| __git_log_common_options=$'\n\t--not --all\n\t--branches --tags --remotes\n\t--first-parent --merges --no-merges\n\t--max-count=\n\t--max-age= --since= --after=\n\t--min-age= --until= --before=\n\t--min-parents= --max-parents=\n\t--no-min-parents --no-max-parents\n' | |
| __git_log_date_formats='relative iso8601 rfc2822 short local default raw' | |
| __git_log_gitk_options=$'\n\t--dense --sparse --full-history\n\t--simplify-merges --simplify-by-decoration\n\t--left-right --notes --no-notes\n' | |
| __git_log_pretty_formats='oneline short medium full fuller email raw format:' | |
| __git_log_shortlog_options=$'\n\t--author= --committer= --grep=\n\t--all-match\n' | |
| __git_merge_options=$'\n\t--no-commit --no-stat --log --no-log --squash --strategy\n\t--commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit\n' | |
| __git_merge_strategies= | |
| __git_mergetools_common=$'diffuse diffmerge ecmerge emerge kdiff3 meld opendiff\n\t\t\ttkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare\n' | |
| __git_porcelain_commands= | |
| __git_printf_supports_v=yes | |
| __git_push_recurse_submodules='check on-demand' | |
| __git_send_email_confirm_options='always never auto cc compose' | |
| __git_send_email_suppresscc_options='author self cc bodycc sob cccmd body all' | |
| __git_whitespacelist='nowarn warn error error-all fix' | |
| _scp_path_esc='[][(){}<>",:;^&!$=?`|\\'\''[:space:]]' | |
| _ImageMagick () | |
| { | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -channel) | |
| COMPREPLY=($( compgen -W 'Red Green Blue Opacity \ | |
| Matte Cyan Magenta Yellow Black' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -colormap) | |
| COMPREPLY=($( compgen -W 'shared private' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -colorspace) | |
| COMPREPLY=($( compgen -W 'GRAY OHTA RGB Transparent \ | |
| XYZ YCbCr YIQ YPbPr YUV CMYK' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -compose) | |
| COMPREPLY=($( compgen -W 'Over In Out Atop Xor Plus \ | |
| Minus Add Subtract Difference Multiply Bumpmap\ | |
| Copy CopyRed CopyGreen CopyBlue CopyOpacity' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -compress) | |
| COMPREPLY=($( compgen -W 'None BZip Fax Group4 JPEG \ | |
| Lossless LZW RLE Zip' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -dispose) | |
| COMPREPLY=($( compgen -W 'Undefined None Background Previous' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -encoding) | |
| COMPREPLY=($( compgen -W 'AdobeCustom AdobeExpert \ | |
| AdobeStandard AppleRoman BIG5 GB2312 Latin2 \ | |
| None SJIScode Symbol Unicode Wansung' -- "$cur")); | |
| return 0 | |
| ;; | |
| -endian) | |
| COMPREPLY=($( compgen -W 'MSB LSB' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -filter) | |
| COMPREPLY=($( compgen -W 'Point Box Triangle Hermite \ | |
| Hanning Hamming Blackman Gaussian Quadratic \ | |
| Cubic Catrom Mitchell Lanczos Bessel Sinc' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -format) | |
| COMPREPLY=($( compgen -W "$( convert -list format | awk '/ [r-][w-][+-] / {print $1}' | tr -d '*' | tr [:upper:] [:lower:] )" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -gravity) | |
| COMPREPLY=($( compgen -W 'Northwest North NorthEast \ | |
| West Center East SouthWest South SouthEast' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -intent) | |
| COMPREPLY=($( compgen -W 'Absolute Perceptual \ | |
| Relative Saturation' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -interlace) | |
| COMPREPLY=($( compgen -W 'None Line Plane Partition' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -limit) | |
| COMPREPLY=($( compgen -W 'Disk File Map Memory' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -list) | |
| COMPREPLY=($( compgen -W 'Delegate Format Magic Module Resource \ | |
| Type' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -map) | |
| COMPREPLY=($( compgen -W 'best default gray red green blue' -- "$cur" )); | |
| _filedir; | |
| return 0 | |
| ;; | |
| -noise) | |
| COMPREPLY=($( compgen -W 'Uniform Gaussian Multiplicative \ | |
| Impulse Laplacian Poisson' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -preview) | |
| COMPREPLY=($( compgen -W 'Rotate Shear Roll Hue \ | |
| Saturation Brightness Gamma Spiff \ | |
| Dull Grayscale Quantize Despeckle \ | |
| ReduceNoise AddNoise Sharpen Blur \ | |
| Treshold EdgeDetect Spread Shade \ | |
| Raise Segment Solarize Swirl Implode \ | |
| Wave OilPaint CharcoalDrawing JPEG' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -mask | -profile | -texture | -tile | -write) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -type) | |
| COMPREPLY=($( compgen -W 'Bilevel Grayscale Palette PaletteMatte \ | |
| TrueColor TrueColorMatte ColorSeparation ColorSeparationlMatte \ | |
| Optimize' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -units) | |
| COMPREPLY=($( compgen -W 'Undefined PixelsPerInch \ | |
| PixelsPerCentimeter' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -virtual-pixel) | |
| COMPREPLY=($( compgen -W 'Constant Edge mirror tile' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -visual) | |
| COMPREPLY=($( compgen -W 'StaticGray GrayScale StaticColor \ | |
| PseudoColor TrueColor DirectColor defaut visualid' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac | |
| } | |
| __brew_complete_formulae () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local lib=$(brew --repository)/Library; | |
| local taps=${lib}/Taps; | |
| local ff=$(\ls ${lib}/Formula 2>/dev/null | sed 's/\.rb//g'); | |
| local af=$(\ls ${lib}/Aliases 2>/dev/null); | |
| local tf file; | |
| for file in ${taps}/*/*/*.rb ${taps}/*/*/Formula/*.rb ${taps}/*/*/HomebrewFormula/*.rb; | |
| do | |
| [ -f "$file" ] || continue; | |
| file=${file/"Formula/"/}; | |
| file=${file/"HomebrewFormula/"/}; | |
| file=${file#${lib}/Taps/}; | |
| file=${file%.rb}; | |
| file=${file/homebrew-/}; | |
| tf="${tf} ${file}"; | |
| done; | |
| COMPREPLY=($(compgen -W "$ff $af $tf" -- "$cur")) | |
| } | |
| __brew_complete_installed () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local inst=$(\ls $(brew --cellar)); | |
| COMPREPLY=($(compgen -W "$inst" -- "$cur")) | |
| } | |
| __brew_complete_outdated () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local od=$(brew outdated --quiet); | |
| COMPREPLY=($(compgen -W "$od" -- "$cur")) | |
| } | |
| __brew_complete_tapped () | |
| { | |
| local taplib=$(brew --repository)/Library/Taps; | |
| local dir taps; | |
| for dir in ${taplib}/*/*; | |
| do | |
| [ -d "$dir" ] || continue; | |
| dir=${dir#${taplib}/}; | |
| dir=${dir/homebrew-/}; | |
| taps="$taps $dir"; | |
| done; | |
| __brewcomp "$taps" | |
| } | |
| __brew_complete_versions () | |
| { | |
| local formula="$1"; | |
| local versions=$(brew list --versions "$formula"); | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| COMPREPLY=($(compgen -W "$versions" -X "$formula" -- "$cur")) | |
| } | |
| __brewcomp () | |
| { | |
| local list s sep=' | |
| ' IFS=' '' '' | |
| '; | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| for s in $1; | |
| do | |
| __brewcomp_words_include "$s" && continue; | |
| list="$list$s$sep"; | |
| done; | |
| IFS=$sep; | |
| COMPREPLY=($(compgen -W "$list" -- "$cur")) | |
| } | |
| __brewcomp_prev () | |
| { | |
| local idx=$((COMP_CWORD - 1)); | |
| local prv="${COMP_WORDS[idx]}"; | |
| while [[ $prv == -* ]]; do | |
| idx=$((--idx)); | |
| prv="${COMP_WORDS[idx]}"; | |
| done; | |
| echo "$prv" | |
| } | |
| __brewcomp_words_include () | |
| { | |
| local i=1; | |
| while [[ $i -lt $COMP_CWORD ]]; do | |
| if [[ "${COMP_WORDS[i]}" = "$1" ]]; then | |
| return 0; | |
| fi; | |
| i=$((++i)); | |
| done; | |
| return 1 | |
| } | |
| __expand_tilde_by_ref () | |
| { | |
| if [ "${!1:0:1}" = "~" ]; then | |
| if [ "${!1}" != "${!1//\/}" ]; then | |
| eval $1="${!1/%\/*}"/'${!1#*/}'; | |
| else | |
| eval $1="${!1}"; | |
| fi; | |
| fi | |
| } | |
| __get_cword_at_cursor_by_ref () | |
| { | |
| local cword words=(); | |
| __reassemble_comp_words_by_ref "$1" words cword; | |
| local i cur2; | |
| local cur="$COMP_LINE"; | |
| local index="$COMP_POINT"; | |
| for ((i = 0; i <= cword; ++i )) | |
| do | |
| while [[ "${#cur}" -ge ${#words[i]} && "${cur:0:${#words[i]}}" != "${words[i]}" ]]; do | |
| cur="${cur:1}"; | |
| ((index--)); | |
| done; | |
| if [[ "$i" -lt "$cword" ]]; then | |
| local old_size="${#cur}"; | |
| cur="${cur#${words[i]}}"; | |
| local new_size="${#cur}"; | |
| index=$(( index - old_size + new_size )); | |
| fi; | |
| done; | |
| if [[ "${words[cword]:0:${#cur}}" != "$cur" ]]; then | |
| cur2=${words[cword]}; | |
| else | |
| cur2=${cur:0:$index}; | |
| fi; | |
| local "$2" "$3" "$4" && _upvars -a${#words[@]} $2 "${words[@]}" -v $3 "$cword" -v $4 "$cur2" | |
| } | |
| __git_aliased_command () | |
| { | |
| local word cmdline=$(git --git-dir="$(__gitdir)" config --get "alias.$1"); | |
| for word in $cmdline; | |
| do | |
| case "$word" in | |
| \!gitk | gitk) | |
| echo "gitk"; | |
| return | |
| ;; | |
| \!*) | |
| : shell command alias | |
| ;; | |
| -*) | |
| : option | |
| ;; | |
| *=*) | |
| : setting env | |
| ;; | |
| git) | |
| : git itself | |
| ;; | |
| *) | |
| echo "$word"; | |
| return | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_aliases () | |
| { | |
| local i IFS=' | |
| '; | |
| for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); | |
| do | |
| case "$i" in | |
| alias.*) | |
| i="${i#alias.}"; | |
| echo "${i/ */}" | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_commands () | |
| { | |
| if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"; then | |
| printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"; | |
| else | |
| git help -a | egrep '^ [a-zA-Z0-9]'; | |
| fi | |
| } | |
| __git_complete () | |
| { | |
| local wrapper="__git_wrap${2}"; | |
| eval "$wrapper () { __git_func_wrap $2 ; }"; | |
| complete -o bashdefault -o default -o nospace -F $wrapper $1 2> /dev/null || complete -o default -o nospace -F $wrapper $1 | |
| } | |
| __git_complete_file () | |
| { | |
| __git_complete_revlist_file | |
| } | |
| __git_complete_index_file () | |
| { | |
| local pfx="" cur_="$cur"; | |
| case "$cur_" in | |
| ?*/*) | |
| pfx="${cur_%/*}"; | |
| cur_="${cur_##*/}"; | |
| pfx="${pfx}/" | |
| ;; | |
| esac; | |
| __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" | |
| } | |
| __git_complete_remote_or_refspec () | |
| { | |
| local cur_="$cur" cmd="${words[1]}"; | |
| local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0; | |
| if [ "$cmd" = "remote" ]; then | |
| ((c++)); | |
| fi; | |
| while [ $c -lt $cword ]; do | |
| i="${words[c]}"; | |
| case "$i" in | |
| --mirror) | |
| [ "$cmd" = "push" ] && no_complete_refspec=1 | |
| ;; | |
| --all) | |
| case "$cmd" in | |
| push) | |
| no_complete_refspec=1 | |
| ;; | |
| fetch) | |
| return | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| remote="$i"; | |
| break | |
| ;; | |
| esac; | |
| ((c++)); | |
| done; | |
| if [ -z "$remote" ]; then | |
| __gitcomp_nl "$(__git_remotes)"; | |
| return; | |
| fi; | |
| if [ $no_complete_refspec = 1 ]; then | |
| return; | |
| fi; | |
| [ "$remote" = "." ] && remote=; | |
| case "$cur_" in | |
| *:*) | |
| case "$COMP_WORDBREAKS" in | |
| *:*) | |
| : great | |
| ;; | |
| *) | |
| pfx="${cur_%%:*}:" | |
| ;; | |
| esac; | |
| cur_="${cur_#*:}"; | |
| lhs=0 | |
| ;; | |
| +*) | |
| pfx="+"; | |
| cur_="${cur_#+}" | |
| ;; | |
| esac; | |
| case "$cmd" in | |
| fetch) | |
| if [ $lhs = 1 ]; then | |
| __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"; | |
| else | |
| __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"; | |
| fi | |
| ;; | |
| pull | remote) | |
| if [ $lhs = 1 ]; then | |
| __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"; | |
| else | |
| __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"; | |
| fi | |
| ;; | |
| push) | |
| if [ $lhs = 1 ]; then | |
| __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"; | |
| else | |
| __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"; | |
| fi | |
| ;; | |
| esac | |
| } | |
| __git_complete_revlist () | |
| { | |
| __git_complete_revlist_file | |
| } | |
| __git_complete_revlist_file () | |
| { | |
| local pfx ls ref cur_="$cur"; | |
| case "$cur_" in | |
| *..?*:*) | |
| return | |
| ;; | |
| ?*:*) | |
| ref="${cur_%%:*}"; | |
| cur_="${cur_#*:}"; | |
| case "$cur_" in | |
| ?*/*) | |
| pfx="${cur_%/*}"; | |
| cur_="${cur_##*/}"; | |
| ls="$ref:$pfx"; | |
| pfx="$pfx/" | |
| ;; | |
| *) | |
| ls="$ref" | |
| ;; | |
| esac; | |
| case "$COMP_WORDBREAKS" in | |
| *:*) | |
| : great | |
| ;; | |
| *) | |
| pfx="$ref:$pfx" | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null | sed '/^100... blob /{ | |
| s,^.* ,, | |
| s,$, , | |
| } | |
| /^120000 blob /{ | |
| s,^.* ,, | |
| s,$, , | |
| } | |
| /^040000 tree /{ | |
| s,^.* ,, | |
| s,$,/, | |
| } | |
| s/^.* //')" "$pfx" "$cur_" "" | |
| ;; | |
| *...*) | |
| pfx="${cur_%...*}..."; | |
| cur_="${cur_#*...}"; | |
| __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" | |
| ;; | |
| *..*) | |
| pfx="${cur_%..*}.."; | |
| cur_="${cur_#*..}"; | |
| __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" | |
| ;; | |
| *) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| esac | |
| } | |
| __git_complete_strategy () | |
| { | |
| __git_compute_merge_strategies; | |
| case "$prev" in | |
| -s | --strategy) | |
| __gitcomp "$__git_merge_strategies"; | |
| return 0 | |
| ;; | |
| esac; | |
| case "$cur" in | |
| --strategy=*) | |
| __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}"; | |
| return 0 | |
| ;; | |
| esac; | |
| return 1 | |
| } | |
| __git_compute_all_commands () | |
| { | |
| test -n "$__git_all_commands" || __git_all_commands=$(__git_list_all_commands) | |
| } | |
| __git_compute_merge_strategies () | |
| { | |
| test -n "$__git_merge_strategies" || __git_merge_strategies=$(__git_list_merge_strategies) | |
| } | |
| __git_compute_porcelain_commands () | |
| { | |
| __git_compute_all_commands; | |
| test -n "$__git_porcelain_commands" || __git_porcelain_commands=$(__git_list_porcelain_commands) | |
| } | |
| __git_config_get_set_variables () | |
| { | |
| local prevword word config_file= c=$cword; | |
| while [ $c -gt 1 ]; do | |
| word="${words[c]}"; | |
| case "$word" in | |
| --system | --global | --local | --file=*) | |
| config_file="$word"; | |
| break | |
| ;; | |
| -f | --file) | |
| config_file="$word $prevword"; | |
| break | |
| ;; | |
| esac; | |
| prevword=$word; | |
| c=$((--c)); | |
| done; | |
| git --git-dir="$(__gitdir)" config $config_file --list 2> /dev/null | while read -r line; do | |
| case "$line" in | |
| *.*=*) | |
| echo "${line/=*/}" | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_count_arguments () | |
| { | |
| local word i c=0; | |
| for ((i=1; i < ${#words[@]}; i++)) | |
| do | |
| word="${words[i]}"; | |
| case "$word" in | |
| --) | |
| ((c = 0)) | |
| ;; | |
| "$1") | |
| ((c = 0)) | |
| ;; | |
| ?*) | |
| ((c++)) | |
| ;; | |
| esac; | |
| done; | |
| printf "%d" $c | |
| } | |
| __git_eread () | |
| { | |
| f="$1"; | |
| shift; | |
| test -r "$f" && read "$@" < "$f" | |
| } | |
| __git_extras_workflow () | |
| { | |
| __gitcomp "$(__git_heads | grep ^$1/ | sed s/^$1\\///g) finish" | |
| } | |
| __git_find_on_cmdline () | |
| { | |
| local word subcommand c=1; | |
| while [ $c -lt $cword ]; do | |
| word="${words[c]}"; | |
| for subcommand in $1; | |
| do | |
| if [ "$subcommand" = "$word" ]; then | |
| echo "$subcommand"; | |
| return; | |
| fi; | |
| done; | |
| ((c++)); | |
| done | |
| } | |
| __git_func_wrap () | |
| { | |
| local cur words cword prev; | |
| _get_comp_words_by_ref -n =: cur words cword prev; | |
| $1 | |
| } | |
| __git_has_doubledash () | |
| { | |
| local c=1; | |
| while [ $c -lt $cword ]; do | |
| if [ "--" = "${words[c]}" ]; then | |
| return 0; | |
| fi; | |
| ((c++)); | |
| done; | |
| return 1 | |
| } | |
| __git_heads () | |
| { | |
| local dir="$(__gitdir)"; | |
| if [ -d "$dir" ]; then | |
| git --git-dir="$dir" for-each-ref --format='%(refname:short)' refs/heads; | |
| return; | |
| fi | |
| } | |
| __git_index_files () | |
| { | |
| local dir="$(__gitdir)" root="${2-.}" file; | |
| if [ -d "$dir" ]; then | |
| __git_ls_files_helper "$root" "$1" | while read -r file; do | |
| case "$file" in | |
| ?*/*) | |
| echo "${file%%/*}" | |
| ;; | |
| *) | |
| echo "$file" | |
| ;; | |
| esac; | |
| done | sort | uniq; | |
| fi | |
| } | |
| __git_list_all_commands () | |
| { | |
| local i IFS=" "' | |
| '; | |
| for i in $(__git_commands); | |
| do | |
| case $i in | |
| *--*) | |
| : helper pattern | |
| ;; | |
| *) | |
| echo $i | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_list_merge_strategies () | |
| { | |
| git merge -s help 2>&1 | sed -n -e '/[Aa]vailable strategies are: /,/^$/{ | |
| s/\.$// | |
| s/.*:// | |
| s/^[ ]*// | |
| s/[ ]*$// | |
| p | |
| }' | |
| } | |
| __git_list_porcelain_commands () | |
| { | |
| local i IFS=" "' | |
| '; | |
| __git_compute_all_commands; | |
| for i in $__git_all_commands; | |
| do | |
| case $i in | |
| *--*) | |
| : helper pattern | |
| ;; | |
| applymbox) | |
| : ask gittus | |
| ;; | |
| applypatch) | |
| : ask gittus | |
| ;; | |
| archimport) | |
| : import | |
| ;; | |
| cat-file) | |
| : plumbing | |
| ;; | |
| check-attr) | |
| : plumbing | |
| ;; | |
| check-ignore) | |
| : plumbing | |
| ;; | |
| check-mailmap) | |
| : plumbing | |
| ;; | |
| check-ref-format) | |
| : plumbing | |
| ;; | |
| checkout-index) | |
| : plumbing | |
| ;; | |
| commit-tree) | |
| : plumbing | |
| ;; | |
| count-objects) | |
| : infrequent | |
| ;; | |
| credential-cache) | |
| : credentials helper | |
| ;; | |
| credential-store) | |
| : credentials helper | |
| ;; | |
| cvsexportcommit) | |
| : export | |
| ;; | |
| cvsimport) | |
| : import | |
| ;; | |
| cvsserver) | |
| : daemon | |
| ;; | |
| daemon) | |
| : daemon | |
| ;; | |
| diff-files) | |
| : plumbing | |
| ;; | |
| diff-index) | |
| : plumbing | |
| ;; | |
| diff-tree) | |
| : plumbing | |
| ;; | |
| fast-import) | |
| : import | |
| ;; | |
| fast-export) | |
| : export | |
| ;; | |
| fsck-objects) | |
| : plumbing | |
| ;; | |
| fetch-pack) | |
| : plumbing | |
| ;; | |
| fmt-merge-msg) | |
| : plumbing | |
| ;; | |
| for-each-ref) | |
| : plumbing | |
| ;; | |
| hash-object) | |
| : plumbing | |
| ;; | |
| http-*) | |
| : transport | |
| ;; | |
| index-pack) | |
| : plumbing | |
| ;; | |
| init-db) | |
| : deprecated | |
| ;; | |
| local-fetch) | |
| : plumbing | |
| ;; | |
| ls-files) | |
| : plumbing | |
| ;; | |
| ls-remote) | |
| : plumbing | |
| ;; | |
| ls-tree) | |
| : plumbing | |
| ;; | |
| mailinfo) | |
| : plumbing | |
| ;; | |
| mailsplit) | |
| : plumbing | |
| ;; | |
| merge-*) | |
| : plumbing | |
| ;; | |
| mktree) | |
| : plumbing | |
| ;; | |
| mktag) | |
| : plumbing | |
| ;; | |
| pack-objects) | |
| : plumbing | |
| ;; | |
| pack-redundant) | |
| : plumbing | |
| ;; | |
| pack-refs) | |
| : plumbing | |
| ;; | |
| parse-remote) | |
| : plumbing | |
| ;; | |
| patch-id) | |
| : plumbing | |
| ;; | |
| prune) | |
| : plumbing | |
| ;; | |
| prune-packed) | |
| : plumbing | |
| ;; | |
| quiltimport) | |
| : import | |
| ;; | |
| read-tree) | |
| : plumbing | |
| ;; | |
| receive-pack) | |
| : plumbing | |
| ;; | |
| remote-*) | |
| : transport | |
| ;; | |
| rerere) | |
| : plumbing | |
| ;; | |
| rev-list) | |
| : plumbing | |
| ;; | |
| rev-parse) | |
| : plumbing | |
| ;; | |
| runstatus) | |
| : plumbing | |
| ;; | |
| sh-setup) | |
| : internal | |
| ;; | |
| shell) | |
| : daemon | |
| ;; | |
| show-ref) | |
| : plumbing | |
| ;; | |
| send-pack) | |
| : plumbing | |
| ;; | |
| show-index) | |
| : plumbing | |
| ;; | |
| ssh-*) | |
| : transport | |
| ;; | |
| stripspace) | |
| : plumbing | |
| ;; | |
| symbolic-ref) | |
| : plumbing | |
| ;; | |
| unpack-file) | |
| : plumbing | |
| ;; | |
| unpack-objects) | |
| : plumbing | |
| ;; | |
| update-index) | |
| : plumbing | |
| ;; | |
| update-ref) | |
| : plumbing | |
| ;; | |
| update-server-info) | |
| : daemon | |
| ;; | |
| upload-archive) | |
| : plumbing | |
| ;; | |
| upload-pack) | |
| : plumbing | |
| ;; | |
| write-tree) | |
| : plumbing | |
| ;; | |
| var) | |
| : infrequent | |
| ;; | |
| verify-pack) | |
| : infrequent | |
| ;; | |
| verify-tag) | |
| : plumbing | |
| ;; | |
| *) | |
| echo $i | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_ls_files_helper () | |
| { | |
| ( test -n "${CDPATH+set}" && unset CDPATH; | |
| cd "$1"; | |
| if [ "$2" == "--committable" ]; then | |
| git diff-index --name-only --relative HEAD; | |
| else | |
| git ls-files --exclude-standard $2; | |
| fi ) 2> /dev/null | |
| } | |
| __git_main () | |
| { | |
| local i c=1 command __git_dir; | |
| while [ $c -lt $cword ]; do | |
| i="${words[c]}"; | |
| case "$i" in | |
| --git-dir=*) | |
| __git_dir="${i#--git-dir=}" | |
| ;; | |
| --git-dir) | |
| ((c++)); | |
| __git_dir="${words[c]}" | |
| ;; | |
| --bare) | |
| __git_dir="." | |
| ;; | |
| --help) | |
| command="help"; | |
| break | |
| ;; | |
| -c | --work-tree | --namespace) | |
| ((c++)) | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| command="$i"; | |
| break | |
| ;; | |
| esac; | |
| ((c++)); | |
| done; | |
| if [ -z "$command" ]; then | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --paginate | |
| --no-pager | |
| --git-dir= | |
| --bare | |
| --version | |
| --exec-path | |
| --exec-path= | |
| --html-path | |
| --man-path | |
| --info-path | |
| --work-tree= | |
| --namespace= | |
| --no-replace-objects | |
| --help | |
| " | |
| ;; | |
| *) | |
| __git_compute_porcelain_commands; | |
| __gitcomp "$__git_porcelain_commands $(__git_aliases)" | |
| ;; | |
| esac; | |
| return; | |
| fi; | |
| local completion_func="_git_${command//-/_}"; | |
| declare -f $completion_func > /dev/null && $completion_func && return; | |
| local expansion=$(__git_aliased_command "$command"); | |
| if [ -n "$expansion" ]; then | |
| words[1]=$expansion; | |
| completion_func="_git_${expansion//-/_}"; | |
| declare -f $completion_func > /dev/null && $completion_func; | |
| fi | |
| } | |
| __git_match_ctag () | |
| { | |
| awk "/^${1////\\/}/ { print \$1 }" "$2" | |
| } | |
| __git_pretty_aliases () | |
| { | |
| local i IFS=' | |
| '; | |
| for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); | |
| do | |
| case "$i" in | |
| pretty.*) | |
| i="${i#pretty.}"; | |
| echo "${i/ */}" | |
| ;; | |
| esac; | |
| done | |
| } | |
| __git_ps1 () | |
| { | |
| local pcmode=no; | |
| local detached=no; | |
| local ps1pc_start='\u@\h:\w '; | |
| local ps1pc_end='\$ '; | |
| local printf_format=' (%s)'; | |
| case "$#" in | |
| 2 | 3) | |
| pcmode=yes; | |
| ps1pc_start="$1"; | |
| ps1pc_end="$2"; | |
| printf_format="${3:-$printf_format}" | |
| ;; | |
| 0 | 1) | |
| printf_format="${1:-$printf_format}" | |
| ;; | |
| *) | |
| return | |
| ;; | |
| esac; | |
| local ps1_expanded=yes; | |
| [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no; | |
| [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no; | |
| local repo_info rev_parse_exit_code; | |
| repo_info="$(git rev-parse --git-dir --is-inside-git-dir --is-bare-repository --is-inside-work-tree --short HEAD 2>/dev/null)"; | |
| rev_parse_exit_code="$?"; | |
| if [ -z "$repo_info" ]; then | |
| if [ $pcmode = yes ]; then | |
| PS1="$ps1pc_start$ps1pc_end"; | |
| fi; | |
| return; | |
| fi; | |
| local short_sha; | |
| if [ "$rev_parse_exit_code" = "0" ]; then | |
| short_sha="${repo_info##* | |
| }"; | |
| repo_info="${repo_info% | |
| *}"; | |
| fi; | |
| local inside_worktree="${repo_info##* | |
| }"; | |
| repo_info="${repo_info% | |
| *}"; | |
| local bare_repo="${repo_info##* | |
| }"; | |
| repo_info="${repo_info% | |
| *}"; | |
| local inside_gitdir="${repo_info##* | |
| }"; | |
| local g="${repo_info% | |
| *}"; | |
| local r=""; | |
| local b=""; | |
| local step=""; | |
| local total=""; | |
| if [ -d "$g/rebase-merge" ]; then | |
| __git_eread "$g/rebase-merge/head-name" b; | |
| __git_eread "$g/rebase-merge/msgnum" step; | |
| __git_eread "$g/rebase-merge/end" total; | |
| if [ -f "$g/rebase-merge/interactive" ]; then | |
| r="|REBASE-i"; | |
| else | |
| r="|REBASE-m"; | |
| fi; | |
| else | |
| if [ -d "$g/rebase-apply" ]; then | |
| __git_eread "$g/rebase-apply/next" step; | |
| __git_eread "$g/rebase-apply/last" total; | |
| if [ -f "$g/rebase-apply/rebasing" ]; then | |
| __git_eread "$g/rebase-apply/head-name" b; | |
| r="|REBASE"; | |
| else | |
| if [ -f "$g/rebase-apply/applying" ]; then | |
| r="|AM"; | |
| else | |
| r="|AM/REBASE"; | |
| fi; | |
| fi; | |
| else | |
| if [ -f "$g/MERGE_HEAD" ]; then | |
| r="|MERGING"; | |
| else | |
| if [ -f "$g/CHERRY_PICK_HEAD" ]; then | |
| r="|CHERRY-PICKING"; | |
| else | |
| if [ -f "$g/REVERT_HEAD" ]; then | |
| r="|REVERTING"; | |
| else | |
| if [ -f "$g/BISECT_LOG" ]; then | |
| r="|BISECTING"; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| if [ -n "$b" ]; then | |
| :; | |
| else | |
| if [ -h "$g/HEAD" ]; then | |
| b="$(git symbolic-ref HEAD 2>/dev/null)"; | |
| else | |
| local head=""; | |
| if ! __git_eread "$g/HEAD" head; then | |
| if [ $pcmode = yes ]; then | |
| PS1="$ps1pc_start$ps1pc_end"; | |
| fi; | |
| return; | |
| fi; | |
| b="${head#ref: }"; | |
| if [ "$head" = "$b" ]; then | |
| detached=yes; | |
| b="$( | |
| case "${GIT_PS1_DESCRIBE_STYLE-}" in | |
| (contains) | |
| git describe --contains HEAD ;; | |
| (branch) | |
| git describe --contains --all HEAD ;; | |
| (describe) | |
| git describe HEAD ;; | |
| (* | default) | |
| git describe --tags --exact-match HEAD ;; | |
| esac 2>/dev/null)" || b="$short_sha..."; | |
| b="($b)"; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| if [ -n "$step" ] && [ -n "$total" ]; then | |
| r="$r $step/$total"; | |
| fi; | |
| local w=""; | |
| local i=""; | |
| local s=""; | |
| local u=""; | |
| local c=""; | |
| local p=""; | |
| if [ "true" = "$inside_gitdir" ]; then | |
| if [ "true" = "$bare_repo" ]; then | |
| c="BARE:"; | |
| else | |
| b="GIT_DIR!"; | |
| fi; | |
| else | |
| if [ "true" = "$inside_worktree" ]; then | |
| if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] && [ "$(git config --bool bash.showDirtyState)" != "false" ]; then | |
| git diff --no-ext-diff --quiet --exit-code || w="*"; | |
| if [ -n "$short_sha" ]; then | |
| git diff-index --cached --quiet HEAD -- || i="+"; | |
| else | |
| i="#"; | |
| fi; | |
| fi; | |
| if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] && [ -r "$g/refs/stash" ]; then | |
| s="$"; | |
| fi; | |
| if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] && [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] && git ls-files --others --exclude-standard --error-unmatch -- '*' > /dev/null 2> /dev/null; then | |
| u="%${ZSH_VERSION+%}"; | |
| fi; | |
| if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then | |
| __git_ps1_show_upstream; | |
| fi; | |
| fi; | |
| fi; | |
| local z="${GIT_PS1_STATESEPARATOR-" "}"; | |
| if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then | |
| __git_ps1_colorize_gitstring; | |
| fi; | |
| b=${b##refs/heads/}; | |
| if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then | |
| __git_ps1_branch_name=$b; | |
| b="\${__git_ps1_branch_name}"; | |
| fi; | |
| local f="$w$i$s$u"; | |
| local gitstring="$c$b${f:+$z$f}$r$p"; | |
| if [ $pcmode = yes ]; then | |
| if [ "${__git_printf_supports_v-}" != yes ]; then | |
| gitstring=$(printf -- "$printf_format" "$gitstring"); | |
| else | |
| printf -v gitstring -- "$printf_format" "$gitstring"; | |
| fi; | |
| PS1="$ps1pc_start$gitstring$ps1pc_end"; | |
| else | |
| printf -- "$printf_format" "$gitstring"; | |
| fi | |
| } | |
| __git_ps1_colorize_gitstring () | |
| { | |
| if [[ -n ${ZSH_VERSION-} ]]; then | |
| local c_red='%F{red}'; | |
| local c_green='%F{green}'; | |
| local c_lblue='%F{blue}'; | |
| local c_clear='%f'; | |
| else | |
| local c_red='\[\e[31m\]'; | |
| local c_green='\[\e[32m\]'; | |
| local c_lblue='\[\e[1;34m\]'; | |
| local c_clear='\[\e[0m\]'; | |
| fi; | |
| local bad_color=$c_red; | |
| local ok_color=$c_green; | |
| local flags_color="$c_lblue"; | |
| local branch_color=""; | |
| if [ $detached = no ]; then | |
| branch_color="$ok_color"; | |
| else | |
| branch_color="$bad_color"; | |
| fi; | |
| c="$branch_color$c"; | |
| z="$c_clear$z"; | |
| if [ "$w" = "*" ]; then | |
| w="$bad_color$w"; | |
| fi; | |
| if [ -n "$i" ]; then | |
| i="$ok_color$i"; | |
| fi; | |
| if [ -n "$s" ]; then | |
| s="$flags_color$s"; | |
| fi; | |
| if [ -n "$u" ]; then | |
| u="$bad_color$u"; | |
| fi; | |
| r="$c_clear$r" | |
| } | |
| __git_ps1_show_upstream () | |
| { | |
| local key value; | |
| local svn_remote svn_url_pattern count n; | |
| local upstream=git legacy="" verbose="" name=""; | |
| svn_remote=(); | |
| local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"; | |
| while read -r key value; do | |
| case "$key" in | |
| bash.showupstream) | |
| GIT_PS1_SHOWUPSTREAM="$value"; | |
| if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then | |
| p=""; | |
| return; | |
| fi | |
| ;; | |
| svn-remote.*.url) | |
| svn_remote[$((${#svn_remote[@]} + 1))]="$value"; | |
| svn_url_pattern="$svn_url_pattern\\|$value"; | |
| upstream=svn+git | |
| ;; | |
| esac; | |
| done <<< "$output"; | |
| for option in ${GIT_PS1_SHOWUPSTREAM}; | |
| do | |
| case "$option" in | |
| git | svn) | |
| upstream="$option" | |
| ;; | |
| verbose) | |
| verbose=1 | |
| ;; | |
| legacy) | |
| legacy=1 | |
| ;; | |
| name) | |
| name=1 | |
| ;; | |
| esac; | |
| done; | |
| case "$upstream" in | |
| git) | |
| upstream="@{upstream}" | |
| ;; | |
| svn*) | |
| local -a svn_upstream; | |
| svn_upstream=($(git log --first-parent -1 --grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null)); | |
| if [[ 0 -ne ${#svn_upstream[@]} ]]; then | |
| svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}; | |
| svn_upstream=${svn_upstream%@*}; | |
| local n_stop="${#svn_remote[@]}"; | |
| for ((n=1; n <= n_stop; n++)) | |
| do | |
| svn_upstream=${svn_upstream#${svn_remote[$n]}}; | |
| done; | |
| if [[ -z "$svn_upstream" ]]; then | |
| upstream=${GIT_SVN_ID:-git-svn}; | |
| else | |
| upstream=${svn_upstream#/}; | |
| fi; | |
| else | |
| if [[ "svn+git" = "$upstream" ]]; then | |
| upstream="@{upstream}"; | |
| fi; | |
| fi | |
| ;; | |
| esac; | |
| if [[ -z "$legacy" ]]; then | |
| count="$(git rev-list --count --left-right "$upstream"...HEAD 2>/dev/null)"; | |
| else | |
| local commits; | |
| if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"; then | |
| local commit behind=0 ahead=0; | |
| for commit in $commits; | |
| do | |
| case "$commit" in | |
| "<"*) | |
| ((behind++)) | |
| ;; | |
| *) | |
| ((ahead++)) | |
| ;; | |
| esac; | |
| done; | |
| count="$behind $ahead"; | |
| else | |
| count=""; | |
| fi; | |
| fi; | |
| if [[ -z "$verbose" ]]; then | |
| case "$count" in | |
| "") | |
| p="" | |
| ;; | |
| "0 0") | |
| p="=" | |
| ;; | |
| "0 "*) | |
| p=">" | |
| ;; | |
| *" 0") | |
| p="<" | |
| ;; | |
| *) | |
| p="<>" | |
| ;; | |
| esac; | |
| else | |
| case "$count" in | |
| "") | |
| p="" | |
| ;; | |
| "0 0") | |
| p=" u=" | |
| ;; | |
| "0 "*) | |
| p=" u+${count#0 }" | |
| ;; | |
| *" 0") | |
| p=" u-${count% 0}" | |
| ;; | |
| *) | |
| p=" u+${count#* }-${count% *}" | |
| ;; | |
| esac; | |
| if [[ -n "$count" && -n "$name" ]]; then | |
| __git_ps1_upstream_name=$(git rev-parse --abbrev-ref "$upstream" 2>/dev/null); | |
| if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then | |
| p="$p \${__git_ps1_upstream_name}"; | |
| else | |
| p="$p ${__git_ps1_upstream_name}"; | |
| unset __git_ps1_upstream_name; | |
| fi; | |
| fi; | |
| fi | |
| } | |
| __git_reassemble_comp_words_by_ref () | |
| { | |
| local exclude i j first; | |
| exclude="${1//[^$COMP_WORDBREAKS]}"; | |
| cword_=$COMP_CWORD; | |
| if [ -z "$exclude" ]; then | |
| words_=("${COMP_WORDS[@]}"); | |
| return; | |
| fi; | |
| for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)) | |
| do | |
| first=t; | |
| while [ $i -gt 0 ] && [ -n "${COMP_WORDS[$i]}" ] && [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]; do | |
| if [ $j -ge 2 ] && [ -n "$first" ]; then | |
| ((j--)); | |
| fi; | |
| first=; | |
| words_[$j]=${words_[j]}${COMP_WORDS[i]}; | |
| if [ $i = $COMP_CWORD ]; then | |
| cword_=$j; | |
| fi; | |
| if (($i < ${#COMP_WORDS[@]} - 1)); then | |
| ((i++)); | |
| else | |
| return; | |
| fi; | |
| done; | |
| words_[$j]=${words_[j]}${COMP_WORDS[i]}; | |
| if [ $i = $COMP_CWORD ]; then | |
| cword_=$j; | |
| fi; | |
| done | |
| } | |
| __git_refs () | |
| { | |
| local i hash dir="$(__gitdir "${1-}")" track="${2-}"; | |
| local format refs; | |
| if [ -d "$dir" ]; then | |
| case "$cur" in | |
| refs | refs/*) | |
| format="refname"; | |
| refs="${cur%/*}"; | |
| track="" | |
| ;; | |
| *) | |
| for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; | |
| do | |
| if [ -e "$dir/$i" ]; then | |
| echo $i; | |
| fi; | |
| done; | |
| format="refname:short"; | |
| refs="refs/tags refs/heads refs/remotes" | |
| ;; | |
| esac; | |
| git --git-dir="$dir" for-each-ref --format="%($format)" $refs; | |
| if [ -n "$track" ]; then | |
| local ref entry; | |
| git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" "refs/remotes/" | while read -r entry; do | |
| eval "$entry"; | |
| ref="${ref#*/}"; | |
| if [[ "$ref" == "$cur"* ]]; then | |
| echo "$ref"; | |
| fi; | |
| done | sort | uniq -u; | |
| fi; | |
| return; | |
| fi; | |
| case "$cur" in | |
| refs | refs/*) | |
| git ls-remote "$dir" "$cur*" 2> /dev/null | while read -r hash i; do | |
| case "$i" in | |
| *^{}) | |
| ;; | |
| *) | |
| echo "$i" | |
| ;; | |
| esac; | |
| done | |
| ;; | |
| *) | |
| echo "HEAD"; | |
| git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##" | |
| ;; | |
| esac | |
| } | |
| __git_refs2 () | |
| { | |
| local i; | |
| for i in $(__git_refs "$1"); | |
| do | |
| echo "$i:$i"; | |
| done | |
| } | |
| __git_refs_remotes () | |
| { | |
| local i hash; | |
| git ls-remote "$1" 'refs/heads/*' 2> /dev/null | while read -r hash i; do | |
| echo "$i:refs/remotes/$1/${i#refs/heads/}"; | |
| done | |
| } | |
| __git_remotes () | |
| { | |
| local i IFS=' | |
| ' d="$(__gitdir)"; | |
| test -d "$d/remotes" && ls -1 "$d/remotes"; | |
| for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); | |
| do | |
| i="${i#remote.}"; | |
| echo "${i/.url*/}"; | |
| done | |
| } | |
| __git_tags () | |
| { | |
| local dir="$(__gitdir)"; | |
| if [ -d "$dir" ]; then | |
| git --git-dir="$dir" for-each-ref --format='%(refname:short)' refs/tags; | |
| return; | |
| fi | |
| } | |
| __git_wrap__git_main () | |
| { | |
| __git_func_wrap __git_main | |
| } | |
| __git_wrap__gitk_main () | |
| { | |
| __git_func_wrap __gitk_main | |
| } | |
| __gitcomp () | |
| { | |
| local cur_="${3-$cur}"; | |
| case "$cur_" in | |
| --*=) | |
| ;; | |
| *) | |
| local c i=0 IFS=' | |
| '; | |
| for c in $1; | |
| do | |
| c="$c${4-}"; | |
| if [[ $c == "$cur_"* ]]; then | |
| case $c in | |
| --*=* | *.) | |
| ;; | |
| *) | |
| c="$c " | |
| ;; | |
| esac; | |
| COMPREPLY[i++]="${2-}$c"; | |
| fi; | |
| done | |
| ;; | |
| esac | |
| } | |
| __gitcomp_file () | |
| { | |
| local IFS=' | |
| '; | |
| __gitcompadd "$1" "${2-}" "${3-$cur}" ""; | |
| compopt -o filenames +o nospace 2> /dev/null || compgen -f /non-existing-dir/ > /dev/null | |
| } | |
| __gitcomp_nl () | |
| { | |
| COMPREPLY=(); | |
| __gitcomp_nl_append "$@" | |
| } | |
| __gitcomp_nl_append () | |
| { | |
| local IFS=' | |
| '; | |
| __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }" | |
| } | |
| __gitcompadd () | |
| { | |
| COMPREPLY=(); | |
| __gitcompappend "$@" | |
| } | |
| __gitcompappend () | |
| { | |
| local i=${#COMPREPLY[@]}; | |
| for x in $1; | |
| do | |
| if [[ "$x" == "$3"* ]]; then | |
| COMPREPLY[i++]="$2$x$4"; | |
| fi; | |
| done | |
| } | |
| __gitdir () | |
| { | |
| if [ -z "${1-}" ]; then | |
| if [ -n "${__git_dir-}" ]; then | |
| echo "$__git_dir"; | |
| else | |
| if [ -n "${GIT_DIR-}" ]; then | |
| test -d "${GIT_DIR-}" || return 1; | |
| echo "$GIT_DIR"; | |
| else | |
| if [ -d .git ]; then | |
| echo .git; | |
| else | |
| git rev-parse --git-dir 2> /dev/null; | |
| fi; | |
| fi; | |
| fi; | |
| else | |
| if [ -d "$1/.git" ]; then | |
| echo "$1/.git"; | |
| else | |
| echo "$1"; | |
| fi; | |
| fi | |
| } | |
| __gitk_main () | |
| { | |
| __git_has_doubledash && return; | |
| local g="$(__gitdir)"; | |
| local merge=""; | |
| if [ -f "$g/MERGE_HEAD" ]; then | |
| merge="--merge"; | |
| fi; | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| $__git_log_common_options | |
| $__git_log_gitk_options | |
| $merge | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| __linux_fstab_unescape () | |
| { | |
| eval $1="'${!1//\'/\047}'"; | |
| eval $1="'${!1/%\\/\\\\}'"; | |
| eval "$1=$'${!1}'" | |
| } | |
| __ltrim_colon_completions () | |
| { | |
| if [[ "$1" == *:* && ( ${BASH_VERSINFO[0]} -lt 4 || ( ${BASH_VERSINFO[0]} -ge 4 && "$COMP_WORDBREAKS" == *:* ) ) ]]; then | |
| local colon_word=${1%${1##*:}}; | |
| local i=${#COMPREPLY[*]}; | |
| while [ $((--i)) -ge 0 ]; do | |
| COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}; | |
| done; | |
| fi | |
| } | |
| __reassemble_comp_words_by_ref () | |
| { | |
| local exclude i j ref; | |
| if [[ -n $1 ]]; then | |
| exclude="${1//[^$COMP_WORDBREAKS]}"; | |
| fi; | |
| eval $3=$COMP_CWORD; | |
| if [[ -n $exclude ]]; then | |
| for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)) | |
| do | |
| while [[ $i -gt 0 && -n ${COMP_WORDS[$i]} && ${COMP_WORDS[$i]//[^$exclude]} == ${COMP_WORDS[$i]} ]]; do | |
| [ $j -ge 2 ] && ((j--)); | |
| ref="$2[$j]"; | |
| eval $2[$j]=\${!ref}\${COMP_WORDS[i]}; | |
| [ $i = $COMP_CWORD ] && eval $3=$j; | |
| (( $i < ${#COMP_WORDS[@]} - 1)) && ((i++)) || break 2; | |
| done; | |
| ref="$2[$j]"; | |
| eval $2[$j]=\${!ref}\${COMP_WORDS[i]}; | |
| [[ $i == $COMP_CWORD ]] && eval $3=$j; | |
| done; | |
| else | |
| eval $2=\( \"\${COMP_WORDS[@]}\" \); | |
| fi | |
| } | |
| __tig_complete_file () | |
| { | |
| local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| ?*:*) | |
| ref="${cur%%:*}"; | |
| cur="${cur#*:}"; | |
| case "$cur" in | |
| ?*/*) | |
| pfx="${cur%/*}"; | |
| cur="${cur##*/}"; | |
| ls="$ref:$pfx"; | |
| pfx="$pfx/" | |
| ;; | |
| *) | |
| ls="$ref" | |
| ;; | |
| esac; | |
| COMPREPLY=($(compgen -P "$pfx" -W "$(git --git-dir="$(__tigdir)" ls-tree "$ls" | sed '/^100... blob /s,^.* ,, | |
| /^040000 tree /{ | |
| s,^.* ,, | |
| s,$,/, | |
| } | |
| s/^.* //')" -- "$cur")) | |
| ;; | |
| *) | |
| _tigcomp "$(__tig_refs)" | |
| ;; | |
| esac | |
| } | |
| __tig_complete_revlist () | |
| { | |
| local pfx cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| *...*) | |
| pfx="${cur%...*}..."; | |
| cur="${cur#*...}"; | |
| _tigcomp "$(__tig_refs)" "$pfx" "$cur" | |
| ;; | |
| *..*) | |
| pfx="${cur%..*}.."; | |
| cur="${cur#*..}"; | |
| _tigcomp "$(__tig_refs)" "$pfx" "$cur" | |
| ;; | |
| *.) | |
| _tigcomp "$cur." | |
| ;; | |
| *) | |
| _tigcomp "$(__tig_refs)" | |
| ;; | |
| esac | |
| } | |
| __tig_refs () | |
| { | |
| local cmd i is_hash=y dir="$(__tigdir "$1")"; | |
| if [ -d "$dir" ]; then | |
| for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; | |
| do | |
| if [ -e "$dir/$i" ]; then | |
| echo $i; | |
| fi; | |
| done; | |
| for i in $(git --git-dir="$dir" for-each-ref --format='%(refname)' refs/tags refs/heads refs/remotes); | |
| do | |
| case "$i" in | |
| refs/tags/*) | |
| echo "${i#refs/tags/}" | |
| ;; | |
| refs/heads/*) | |
| echo "${i#refs/heads/}" | |
| ;; | |
| refs/remotes/*) | |
| echo "${i#refs/remotes/}" | |
| ;; | |
| *) | |
| echo "$i" | |
| ;; | |
| esac; | |
| done; | |
| return; | |
| fi; | |
| for i in $(git-ls-remote "$dir" 2>/dev/null); | |
| do | |
| case "$is_hash,$i" in | |
| y,*) | |
| is_hash=n | |
| ;; | |
| n,*^{}) | |
| is_hash=y | |
| ;; | |
| n,refs/tags/*) | |
| is_hash=y; | |
| echo "${i#refs/tags/}" | |
| ;; | |
| n,refs/heads/*) | |
| is_hash=y; | |
| echo "${i#refs/heads/}" | |
| ;; | |
| n,refs/remotes/*) | |
| is_hash=y; | |
| echo "${i#refs/remotes/}" | |
| ;; | |
| n,*) | |
| is_hash=y; | |
| echo "$i" | |
| ;; | |
| esac; | |
| done | |
| } | |
| __tigdir () | |
| { | |
| if [ -z "$1" ]; then | |
| if [ -n "$__git_dir" ]; then | |
| echo "$__git_dir"; | |
| else | |
| if [ -d .git ]; then | |
| echo .git; | |
| else | |
| git rev-parse --git-dir 2> /dev/null; | |
| fi; | |
| fi; | |
| else | |
| if [ -d "$1/.git" ]; then | |
| echo "$1/.git"; | |
| else | |
| echo "$1"; | |
| fi; | |
| fi | |
| } | |
| __youtube_dl () | |
| { | |
| local cur prev opts fileopts diropts keywords; | |
| COMPREPLY=(); | |
| cur="${COMP_WORDS[COMP_CWORD]}"; | |
| prev="${COMP_WORDS[COMP_CWORD-1]}"; | |
| opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --user-agent --referer --add-header --list-extractors --extractor-descriptions --proxy --no-check-certificate --prefer-insecure --cache-dir --no-cache-dir --socket-timeout --bidi-workaround --default-search --ignore-config --encoding --playlist-start --playlist-end --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --no-playlist --age-limit --download-archive --include-ads --youtube-include-dash-manifest --rate-limit --retries --buffer-size --no-resize-buffer --test --title --id --literal --auto-number --output --autonumber-size --restrict-filenames --batch-file --load-info --no-overwrites --continue --no-continue --cookies --no-part --no-mtime --write-description --write-info-json --write-annotations --write-thumbnail --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --newline --no-progress --console-title --verbose --dump-intermediate-pages --write-pages --youtube-print-sig-code --print-traffic --format --all-formats --prefer-free-formats --max-quality --list-formats --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --xattrs --prefer-avconv --prefer-ffmpeg"; | |
| keywords=":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory"; | |
| fileopts="-a|--batch-file|--download-archive|--cookies|--load-info"; | |
| diropts="--cache-dir"; | |
| if [[ ${prev} =~ ${fileopts} ]]; then | |
| COMPREPLY=($(compgen -f -- ${cur})); | |
| return 0; | |
| else | |
| if [[ ${prev} =~ ${diropts} ]]; then | |
| COMPREPLY=($(compgen -d -- ${cur})); | |
| return 0; | |
| fi; | |
| fi; | |
| if [[ ${cur} =~ : ]]; then | |
| COMPREPLY=($(compgen -W "${keywords}" -- ${cur})); | |
| return 0; | |
| else | |
| if [[ ${cur} == * ]]; then | |
| COMPREPLY=($(compgen -W "${opts}" -- ${cur})); | |
| return 0; | |
| fi; | |
| fi | |
| } | |
| _aclocal () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | --print-ac-dir | --version) | |
| return 0 | |
| ;; | |
| --acdir | -I) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| --output) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --warnings | -W) | |
| local cats=(syntax unsupported); | |
| COMPREPLY=($( compgen -W '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| _longopt $1 | |
| } | |
| _ag () | |
| { | |
| local lngopt shtopt split=false; | |
| local cur prev; | |
| COMPREPLY=(); | |
| cur=$(_get_cword "="); | |
| prev="${COMP_WORDS[COMP_CWORD-1]}"; | |
| _expand || return 0; | |
| lngopt=' | |
| --ackmate | |
| --all-text | |
| --all-types | |
| --after | |
| --before | |
| --break | |
| --nobreak | |
| --case-sensitive | |
| --color-line-number | |
| --color-match | |
| --color-path | |
| --color | |
| --nocolor | |
| --column | |
| --context | |
| --debug | |
| --depth | |
| --file-search-regex | |
| --files-with-matches | |
| --files-without-matches | |
| --follow | |
| --group | |
| --nogroup | |
| --heading | |
| --noheading | |
| --help | |
| --hidden | |
| --ignore | |
| --ignore-case | |
| --ignore-dir | |
| --invert-match | |
| --line-numbers | |
| --list-file-types | |
| --literal | |
| --max-count | |
| --no-numbers | |
| --pager | |
| --nopager | |
| --parallel | |
| --path-to-agignore | |
| --print-long-lines | |
| --recurse | |
| --no-recurse | |
| --search-binary | |
| --search-files | |
| --search-zip | |
| --silent | |
| --skip-vcs-ignores | |
| --smart-case | |
| --stats | |
| --unrestricted | |
| --version | |
| --word-regexp | |
| --workers | |
| '; | |
| shtopt=' | |
| -a -A -B -C -D | |
| -f -g -G -h -i | |
| -l -L -m -n -p | |
| -Q -r -R -s -S | |
| -t -u -U -v -V | |
| -w -z | |
| '; | |
| if [[ "${prev}" == -@(A|B|C|G|g|m) ]]; then | |
| return 0; | |
| fi; | |
| _split_longopt && split=true; | |
| case "${prev}" in | |
| --ignore-dir) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| --path-to-agignore) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --pager) | |
| COMPREPLY=($(compgen -c -- "${cur}")); | |
| return 0 | |
| ;; | |
| --ackmate-dir-filter | --after | --before | --color-* | --context | --depth | --file-search-regex | --ignore | --max-count | --workers) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| case "${cur}" in | |
| -*) | |
| if [[ "${COMP_CWORD}" -eq 1 ]]; then | |
| COMPREPLY=($(compgen -W "${lngopt} ${shtopt}" -- "${cur}")); | |
| else | |
| COMPREPLY=($(compgen -W "${lngopt} ${shtopt}" -- "${cur}")); | |
| fi; | |
| return 0 | |
| ;; | |
| *) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac | |
| } | |
| _alias () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| case $COMP_LINE in | |
| *[^=]) | |
| COMPREPLY=($( compgen -A alias -- "$cur" )) | |
| ;; | |
| *=) | |
| COMPREPLY=("$( alias ${cur%=} 2>/dev/null | sed -e 's|^alias '"$cur"'\(.*\)$|\1|' )") | |
| ;; | |
| esac | |
| } | |
| _allowed_groups () | |
| { | |
| if _complete_as_root; then | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -g -- "$1" )); | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -W "$( id -Gn 2>/dev/null || groups 2>/dev/null )" -- "$1" )); | |
| fi | |
| } | |
| _allowed_users () | |
| { | |
| if _complete_as_root; then | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -u -- "${1:-$cur}" )); | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -W "$( id -un 2>/dev/null || whoami 2>/dev/null )" -- "${1:-$cur}" )); | |
| fi | |
| } | |
| _animate () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-alpha -authenticate -backdrop \ | |
| -background -bordercolor -borderwidth -channel \ | |
| -coalesce -colormap -colors -colorspace -crop -debug \ | |
| -decipher -define -delay -density -depth -display \ | |
| -dispose -dither -extract -filter -flatten -font \ | |
| -foreground -format -gamma -geometry -help \ | |
| -iconGeometry -iconic -identify -immutable -interlace \ | |
| -interpolate -limit -list -log -loop -map -mattecolor \ | |
| -mattecolor -monitor -monochrome -name -page -pause \ | |
| -quantize -quiet -regard-warnings -remote -repage \ | |
| -resample -resize -respect-parenthesis -rotate \ | |
| -sampling-factor -scenes -seed -set -shared-memory \ | |
| -size -strip -title -transparent-color -treedepth \ | |
| -trim -verbose -version -virtual-pixel -visual \ | |
| -window' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug +dither +gamma +map +matte' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _ant () | |
| { | |
| local cur prev buildfile i; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -buildfile | -file | -f) | |
| _filedir 'xml'; | |
| return 0 | |
| ;; | |
| -logfile | -l) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -propertyfile) | |
| _filedir properties; | |
| return 0 | |
| ;; | |
| -nice) | |
| COMPREPLY=($( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -lib | -logger | -listener | -D | -inputhandler | -main) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-help -projecthelp -version -diagnostics \ | |
| -quiet -verbose -debug -emacs -lib -logfile -logger -listener \ | |
| -noinput -buildfile -D -keep-going -propertyfile -inputhandler \ | |
| -find -s -nice -nouserlib -noclasspath -autoproxy -main' -- "$cur" )); | |
| else | |
| buildfile=build.xml; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -@(?(build)file|f) ]]; then | |
| buildfile=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| [ ! -f $buildfile ] && return 0; | |
| COMPREPLY=($( compgen -W "$( cat $buildfile | tr "'\t\n>" "\" \n" | sed -ne 's/.*<target .*name="\([^"]*\).*/\1/p' 2>/dev/null )" -- "$cur" )); | |
| fi | |
| } | |
| _autoconf () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | -h | --version | -V | --trace | -t) | |
| return 0 | |
| ;; | |
| --output | -o) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --warnings | -W) | |
| local cats=(cross obsolete syntax); | |
| COMPREPLY=($( compgen -W '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" )); | |
| return 0 | |
| ;; | |
| --prepend-include | -B | --include | -I) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| _longopt $1; | |
| return; | |
| fi; | |
| _filedir '@(ac|in)' | |
| } | |
| _automake () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | --version) | |
| return 0 | |
| ;; | |
| --warnings | -W) | |
| local cats=(gnu obsolete override portability syntax unsupported); | |
| COMPREPLY=($( compgen -W '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" )); | |
| return 0 | |
| ;; | |
| --libdir) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| _longopt $1; | |
| return; | |
| fi; | |
| _filedir | |
| } | |
| _autoreconf () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | -h | --version | -V) | |
| return 0 | |
| ;; | |
| --warnings | -W) | |
| local cats=(cross gnu obsolete override portability syntax unsupported); | |
| COMPREPLY=($( compgen -W '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" )); | |
| return 0 | |
| ;; | |
| --prepend-include | -B | --include | -I) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| _longopt $1; | |
| return 0; | |
| fi; | |
| if [[ $1 == autoheader ]]; then | |
| _filedir '@(ac|in)'; | |
| else | |
| _filedir -d; | |
| fi | |
| } | |
| _autoscan () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | -h | --version | -V) | |
| return 0 | |
| ;; | |
| --prepend-include | -B | --include | -I) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| _longopt $1; | |
| return 0; | |
| fi; | |
| if [[ $1 == autoupdate ]]; then | |
| _filedir '@(ac|in)'; | |
| else | |
| _filedir -d; | |
| fi | |
| } | |
| _available_interfaces () | |
| { | |
| local cmd; | |
| if [ "${1:-}" = -w ]; then | |
| cmd="iwconfig"; | |
| else | |
| if [ "${1:-}" = -a ]; then | |
| cmd="ifconfig"; | |
| else | |
| cmd="ifconfig -a"; | |
| fi; | |
| fi; | |
| COMPREPLY=($( eval PATH="$PATH:/sbin" $cmd 2>/dev/null | awk '/^[^ \t]/ { print $1 }' )); | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]/%[[:punct:]]/}' -- "$cur" )) | |
| } | |
| _brew () | |
| { | |
| local i=1 cmd; | |
| while [[ $i -lt $COMP_CWORD ]]; do | |
| local s="${COMP_WORDS[i]}"; | |
| case "$s" in | |
| --*) | |
| cmd="$s"; | |
| break | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| cmd="$s"; | |
| break | |
| ;; | |
| esac; | |
| i=$((++i)); | |
| done; | |
| if [[ $i -eq $COMP_CWORD ]]; then | |
| local ext=$(\ls -p $(brew --repository)/Library/Contributions/cmd 2>/dev/null | sed -e "s/\.rb//g" -e "s/brew-//g" -e "s/.*\///g"); | |
| __brewcomp " | |
| --cache --cellar | |
| --env --prefix --repository | |
| audit | |
| cat | |
| cleanup | |
| commands | |
| config --config | |
| create | |
| deps | |
| diy configure | |
| doctor | |
| edit | |
| fetch | |
| help | |
| home | |
| info abv | |
| install | |
| linkapps | |
| link ln | |
| list ls | |
| log | |
| missing | |
| options | |
| outdated | |
| prune | |
| pin | |
| search | |
| reinstall | |
| tap | |
| test | |
| uninstall remove rm | |
| unlink | |
| unlinkapps | |
| unpin | |
| untap | |
| update | |
| upgrade | |
| uses | |
| versions | |
| $ext | |
| "; | |
| return; | |
| fi; | |
| case "$cmd" in | |
| --cache | --cellar | --prefix) | |
| __brew_complete_formulae | |
| ;; | |
| audit | cat | edit | home) | |
| __brew_complete_formulae | |
| ;; | |
| test | unlink) | |
| __brew_complete_installed | |
| ;; | |
| bottle) | |
| _brew_bottle | |
| ;; | |
| cleanup) | |
| _brew_cleanup | |
| ;; | |
| create) | |
| _brew_create | |
| ;; | |
| deps) | |
| _brew_deps | |
| ;; | |
| doctor | dr) | |
| _brew_doctor | |
| ;; | |
| diy | configure) | |
| _brew_diy | |
| ;; | |
| fetch) | |
| _brew_fetch | |
| ;; | |
| info | abv) | |
| _brew_info | |
| ;; | |
| install | instal | reinstall) | |
| _brew_install | |
| ;; | |
| link | ln) | |
| _brew_link | |
| ;; | |
| linkapps) | |
| _brew_linkapps | |
| ;; | |
| list | ls) | |
| _brew_list | |
| ;; | |
| log) | |
| _brew_log | |
| ;; | |
| missing) | |
| __brew_complete_formulae | |
| ;; | |
| options) | |
| _brew_options | |
| ;; | |
| outdated) | |
| _brew_outdated | |
| ;; | |
| pin) | |
| __brew_complete_formulae | |
| ;; | |
| search | -S) | |
| _brew_search | |
| ;; | |
| switch) | |
| _brew_switch | |
| ;; | |
| tap) | |
| _brew_complete_tap | |
| ;; | |
| uninstall | remove | rm) | |
| _brew_uninstall | |
| ;; | |
| unpack) | |
| _brew_unpack | |
| ;; | |
| unpin) | |
| __brew_complete_formulae | |
| ;; | |
| untap) | |
| __brew_complete_tapped | |
| ;; | |
| update) | |
| _brew_update | |
| ;; | |
| upgrade) | |
| _brew_upgrade | |
| ;; | |
| uses) | |
| _brew_uses | |
| ;; | |
| versions) | |
| __brew_complete_formulae | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| } | |
| _brew_bottle () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--merge --rb --write --root_url="; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_installed | |
| } | |
| _brew_cleanup () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--force"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_installed | |
| } | |
| _brew_complete_tap () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--repair"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_create () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--autotools --cmake --no-fetch --set-name --set-version"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_deps () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--1 --all --tree"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_diy () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--set-name --set-version"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_doctor () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| __brewcomp "$(brew doctor --list-checks)" | |
| } | |
| _brew_fetch () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local prv=$(__brewcomp_prev); | |
| case "$cur" in | |
| --*) | |
| __brewcomp " | |
| --deps --force | |
| --devel --HEAD | |
| --build-from-source --force-bottle --build-bottle | |
| --retry | |
| $(brew options --compact "$prv" 2>/dev/null) | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_info () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--all --github --installed --json=v1"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_install () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local prv=$(__brewcomp_prev); | |
| case "$cur" in | |
| --*) | |
| if __brewcomp_words_include "--interactive"; then | |
| __brewcomp "--devel --git --HEAD"; | |
| else | |
| __brewcomp " | |
| --build-from-source --build-bottle --force-bottle | |
| --debug | |
| --devel | |
| --HEAD | |
| --ignore-dependencies | |
| --interactive | |
| --only-dependencies | |
| --verbose | |
| $(brew options --compact "$prv" 2>/dev/null) | |
| "; | |
| fi; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_link () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--dry-run --overwrite --force"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_installed | |
| } | |
| _brew_linkapps () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--local"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_list () | |
| { | |
| local allopts="--unbrewed --verbose --pinned --versions --multiple"; | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| if __brewcomp_words_include "--unbrewed"; then | |
| return; | |
| else | |
| if __brewcomp_words_include "--verbose"; then | |
| return; | |
| else | |
| if __brewcomp_words_include "--pinned"; then | |
| return; | |
| else | |
| if __brewcomp_words_include "--multiple"; then | |
| __brewcomp "--versions"; | |
| return; | |
| else | |
| if __brewcomp_words_include "--versions"; then | |
| __brewcomp "--multiple"; | |
| return; | |
| else | |
| __brewcomp "$allopts"; | |
| return; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| fi | |
| ;; | |
| esac; | |
| if __brewcomp_words_include "--multiple"; then | |
| __brewcomp "--versions"; | |
| else | |
| __brew_complete_installed; | |
| fi | |
| } | |
| _brew_log () | |
| { | |
| declare -F _git_log > /dev/null || return; | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp " | |
| $__git_log_common_options | |
| $__git_log_shortlog_options | |
| $__git_log_gitk_options | |
| $__git_diff_common_options | |
| --walk-reflogs --graph --decorate | |
| --abbrev-commit --oneline --reverse | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_options () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--all --compact --installed"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_outdated () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--quiet"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_search () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--debian --fedora --fink --macports --opensuse --ubuntu"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_switch () | |
| { | |
| case "$COMP_CWORD" in | |
| 2) | |
| __brew_complete_installed | |
| ;; | |
| 3) | |
| __brew_complete_versions "${COMP_WORDS[COMP_CWORD-1]}" | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| } | |
| _brew_to_completion () | |
| { | |
| _brew | |
| } | |
| _brew_uninstall () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--force"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_installed | |
| } | |
| _brew_unpack () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--git --patch --destdir="; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _brew_update () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--rebase --verbose"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _brew_upgrade () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| local prv=$(__brewcomp_prev); | |
| case "$cur" in | |
| --*) | |
| __brewcomp " | |
| --build-from-source --build-bottle --force-bottle | |
| --debug | |
| --verbose | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_outdated | |
| } | |
| _brew_uses () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --*) | |
| __brewcomp "--installed --recursive"; | |
| return | |
| ;; | |
| esac; | |
| __brew_complete_formulae | |
| } | |
| _bzip2 () | |
| { | |
| local cur prev xspec helpopts; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| helpopts=`_parse_help ${COMP_WORDS[0]}`; | |
| case $prev in | |
| -b | -h | --help | -p) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W "${helpopts//#/} -2 -3 -4 -5 -6 -7 -8 -9" -- "$cur" )); | |
| return 0; | |
| fi; | |
| local IFS=' | |
| '; | |
| xspec="*.bz2"; | |
| if [[ "$prev" == --* ]]; then | |
| [[ "$prev" == --decompress || "$prev" == --list || "$prev" == --test ]] && xspec="!"$xspec; | |
| [[ "$prev" == --compress ]] && xspec=; | |
| else | |
| if [[ "$prev" == -* ]]; then | |
| [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec; | |
| [[ "$prev" == -*z* ]] && xspec=; | |
| fi; | |
| fi; | |
| _expand || return 0; | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -X "$xspec" -- "$cur" ) $( compgen -d -- "$cur" )) | |
| } | |
| _cancel () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| COMPREPLY=($( compgen -W "$( lpstat | cut -d' ' -f1 )" -- "$cur" )) | |
| } | |
| _cd () | |
| { | |
| local cur IFS=' | |
| ' i j k; | |
| _get_comp_words_by_ref cur; | |
| if [[ "$cur" == ?(\\)\$* ]]; then | |
| COMPREPLY=($( compgen -v -P '$' -- "${cur#?(\\)$}" )); | |
| return 0; | |
| fi; | |
| _compopt_o_filenames; | |
| if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then | |
| _filedir -d; | |
| return 0; | |
| fi; | |
| local -r mark_dirs=$(_rl_enabled mark-directories && echo y); | |
| local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y); | |
| for i in ${CDPATH//:/' | |
| '}; | |
| do | |
| k="${#COMPREPLY[@]}"; | |
| for j in $( compgen -d $i/$cur ); | |
| do | |
| if [[ ( -n $mark_symdirs && -h $j || -n $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then | |
| j="${j}/"; | |
| fi; | |
| COMPREPLY[k++]=${j#$i/}; | |
| done; | |
| done; | |
| _filedir -d; | |
| if [[ ${#COMPREPLY[@]} -eq 1 ]]; then | |
| i=${COMPREPLY[0]}; | |
| if [[ "$i" == "$cur" && $i != "*/" ]]; then | |
| COMPREPLY[0]="${i}/"; | |
| fi; | |
| fi; | |
| return 0 | |
| } | |
| _cd_devices () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -f -d -X "!*/?([amrs])cd*" -- "${cur:-/dev/}" )) | |
| } | |
| _cdsitepackages_complete () | |
| { | |
| local cur="$2"; | |
| COMPREPLY=($(cdsitepackages && compgen -d -- "${cur}" )) | |
| } | |
| _cdvirtualenv_complete () | |
| { | |
| local cur="$2"; | |
| COMPREPLY=($(cdvirtualenv && compgen -d -- "${cur}" )) | |
| } | |
| _chgrp () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| cur=${cur//\\\\/}; | |
| _split_longopt && split=true; | |
| if [[ "$prev" == --reference ]]; then | |
| _filedir; | |
| return 0; | |
| fi; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| local w opts; | |
| for w in "${COMP_WORDS[@]}"; | |
| do | |
| [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break; | |
| done; | |
| COMPREPLY=($( compgen -W '-c -h -f -R -v --changes --dereference \ | |
| --no-dereference --silent --quiet --reference --recursive \ | |
| --verbose --help --version $opts' -- "$cur" )); | |
| return 0; | |
| fi; | |
| if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then | |
| _allowed_groups; | |
| else | |
| _filedir || return 0; | |
| fi; | |
| return 0 | |
| } | |
| _chown () | |
| { | |
| local cur prev split=false; | |
| _get_comp_words_by_ref -n : cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --from) | |
| _usergroup; | |
| return 0 | |
| ;; | |
| --reference) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| local w opts; | |
| for w in "${COMP_WORDS[@]}"; | |
| do | |
| [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break; | |
| done; | |
| COMPREPLY=($( compgen -W '-c -h -f -R -v --changes --dereference \ | |
| --no-dereference --from --silent --quiet --reference --recursive \ | |
| --verbose --help --version $opts' -- "$cur" )); | |
| else | |
| local args; | |
| _count_args :; | |
| if [[ $args == 1 ]]; then | |
| _usergroup -u; | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _chsh () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| --list-shells | --help | -v | --version) | |
| return 0 | |
| ;; | |
| -s | --shell) | |
| _shells; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* && "$( uname -s )" == @(Linux|GNU|GNU/*) ]]; then | |
| COMPREPLY=($( compgen -W '--shell --list-shells --help --version' -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| fi; | |
| return 0 | |
| } | |
| _command () | |
| { | |
| local offset i; | |
| offset=1; | |
| for ((i=1; i <= COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" != -* ]]; then | |
| offset=$i; | |
| break; | |
| fi; | |
| done; | |
| _command_offset $offset | |
| } | |
| _command_offset () | |
| { | |
| local cur func cline cspec noglob cmd i char_offset word_offset _COMMAND_FUNC _COMMAND_FUNC_ARGS; | |
| word_offset=$1; | |
| local first_word=${COMP_WORDS[$word_offset]}; | |
| for ((i=0; i <= ${#COMP_LINE}; i++ )) | |
| do | |
| if [[ "${COMP_LINE:$i:${#first_word}}" == "$first_word" ]]; then | |
| char_offset=$i; | |
| break; | |
| fi; | |
| done; | |
| COMP_LINE=${COMP_LINE:$char_offset}; | |
| COMP_POINT=$(( COMP_POINT - $char_offset )); | |
| for ((i=0; i <= COMP_CWORD - $word_offset; i++ )) | |
| do | |
| COMP_WORDS[i]=${COMP_WORDS[i+$word_offset]}; | |
| done; | |
| for ((i; i <= COMP_CWORD; i++ )) | |
| do | |
| unset COMP_WORDS[i]; | |
| done; | |
| COMP_CWORD=$(( $COMP_CWORD - $word_offset )); | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [[ $COMP_CWORD -eq 0 ]]; then | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -c -- "$cur" )); | |
| else | |
| cmd=${COMP_WORDS[0]}; | |
| if complete -p ${cmd##*/} >&/dev/null; then | |
| cspec=$( complete -p ${cmd##*/} ); | |
| if [ "${cspec#* -F }" != "$cspec" ]; then | |
| func=${cspec#*-F }; | |
| func=${func%% *}; | |
| if [[ ${#COMP_WORDS[@]} -ge 2 ]]; then | |
| $func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" "${COMP_WORDS[${#COMP_WORDS[@]}-2]}"; | |
| else | |
| $func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}"; | |
| fi; | |
| if [ "${cspec#*-o }" != "$cspec" ]; then | |
| cspec=${cspec#*-o }; | |
| cspec=${cspec%% *}; | |
| if [[ "$cspec" != @(dir|file)names ]]; then | |
| COMPREPLY=("${COMPREPLY[@]//\\\\:/:}"); | |
| else | |
| _compopt_o_filenames; | |
| fi; | |
| fi; | |
| else | |
| if [ -n "$cspec" ]; then | |
| cspec=${cspec#complete}; | |
| cspec=${cspec%%${cmd##*/}}; | |
| COMPREPLY=($( eval compgen "$cspec" -- "$cur" )); | |
| fi; | |
| fi; | |
| else | |
| if [ ${#COMPREPLY[@]} -eq 0 ]; then | |
| _filedir; | |
| fi; | |
| fi; | |
| fi | |
| } | |
| _compare () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-alpha -authenticate -channel \ | |
| -colorspace -compress -debug -decipher -define \ | |
| -density -depth -encipher -extract -format -fuzz \ | |
| -help -highlight-color -identify -interlace -limit \ | |
| -list -log -metric -monitor -passphrase -profile \ | |
| -quality -quantize -quiet -regard-warnings \ | |
| -respect-parenthesis -sampling-factor -seed -set \ | |
| -size -transparent-color -type -verbose -version \ | |
| -virtual-pixel' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _complete () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -o) | |
| COMPREPLY=($( compgen -W 'bashdefault default dirnames filenames \ | |
| nospace plusdirs' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -A) | |
| COMPREPLY=($( compgen -W 'alias arrayvar binding builtin command \ | |
| directory disabled enabled export file function group \ | |
| helptopic hostname job keyword running service setopt shopt \ | |
| signal stopped user variable' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -C) | |
| COMPREPLY=($( compgen -A command -- "$cur" )); | |
| return 0 | |
| ;; | |
| -F) | |
| COMPREPLY=($( compgen -A function -- "$cur" )); | |
| return 0 | |
| ;; | |
| -p | -r) | |
| COMPREPLY=($( complete -p | sed -e 's|.* ||' )); | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]}' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| local opts="-a -b -c -d -e -f -g -j -k -o -s -u -v -A -G -W -P -S -X"; | |
| [[ $1 != compgen ]] && opts="$opts -F -C"; | |
| COMPREPLY=($( compgen -W "$opts" -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -A command -- "$cur" )); | |
| fi | |
| } | |
| _complete_as_root () | |
| { | |
| [[ $EUID -eq 0 || -n ${root_command:-} ]] | |
| } | |
| _compopt_o_filenames () | |
| { | |
| type compopt >&/dev/null && compopt -o filenames 2> /dev/null || compgen -f /non-existing-dir/ > /dev/null | |
| } | |
| _composite () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-affine -alpha -authenticate \ | |
| -blend -blue-primary -border -bordercolor -channel \ | |
| -colors -colorspace -comment -compose -compress \ | |
| -debug -decipher -define -density -depth -displace \ | |
| -display -dispose -dissolve -dither -encipher \ | |
| -encoding -endian -extract -filter -font -format \ | |
| -geometry -gravity -green-primary -help -identify \ | |
| -interlace -interpolate -label -limit -list -log \ | |
| -monitor -monochrome -negate -page -profile -quality \ | |
| -quantize -quiet -red-primary -regard-warnings \ | |
| -repage -resize -respect-parenthesis -rotate \ | |
| -sampling-factor -scene -seed -sharpen -shave -size \ | |
| -stegano -stereo -strip -swap -thumbnail -tile \ | |
| -transform -transparent-color -treedepth -type -units \ | |
| -unsharp -verbose -version -virtual-pixel -watermark \ | |
| -white-point -write' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+compress +debug +dither +endian +label \ | |
| +matte +negate +page +write' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _configure () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| --*prefix | --*dir) | |
| _filedir -d | |
| ;; | |
| esac; | |
| $split && return 0; | |
| [[ "$cur" != -* ]] && return 0; | |
| if [ -n "$COMP_CONFIGURE_HINTS" ]; then | |
| COMPREPLY=($( compgen -W "$( $1 --help 2>&1 | awk '/^ --[A-Za-z]/ { print $1; \ | |
| if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' )" -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -W "$( $1 --help 2>&1 | awk '/^ --[A-Za-z]/ { print $1; \ | |
| if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' )" -- "$cur" )); | |
| fi | |
| } | |
| _configured_interfaces () | |
| { | |
| if [ -f /etc/debian_version ]; then | |
| COMPREPLY=($( compgen -W "$( sed -ne 's|^iface \([^ ]\{1,\}\).*$|\1|p' /etc/network/interfaces )" -- "$cur" )); | |
| else | |
| if [ -f /etc/SuSE-release ]; then | |
| COMPREPLY=($( compgen -W "$( printf '%s\n' /etc/sysconfig/network/ifcfg-* | sed -ne 's|.*ifcfg-\(.*\)|\1|p' )" -- "$cur" )); | |
| else | |
| if [ -f /etc/pld-release ]; then | |
| COMPREPLY=($( compgen -W "$( command ls -B /etc/sysconfig/interfaces | sed -ne 's|.*ifcfg-\(.*\)|\1|p' )" -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -W "$( printf '%s\n' /etc/sysconfig/network-scripts/ifcfg-* | sed -ne 's|.*ifcfg-\(.*\)|\1|p' )" -- "$cur" )); | |
| fi; | |
| fi; | |
| fi | |
| } | |
| _conjure () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-debug -help -list -log -monitor -quiet \ | |
| -regard-warnings -seed -verbose -version' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _convert () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-adaptive-blur -adaptive-resize \ | |
| -adaptive-sharpen -adjoin -affine -alpha -annotate \ | |
| -antialias -append -attenuate -authenticate \ | |
| -auto-orient -average -background -bench -bias \ | |
| -black-point-compensation -black-threshold \ | |
| -blue-primary -blur -border -bordercolor -caption \ | |
| -channel -charcoal -chop -clip -clip-mask -clip-path \ | |
| -clone -clut -coalesce -colorize -colors -colorspace \ | |
| -combine -comment -compose -composite -compress \ | |
| -contrast -contrast-stretch -convolve -crop -cycle \ | |
| -debug -decipher -deconstruct -define -delay -delete \ | |
| -density -depth -despeckle -display -dispose -distort \ | |
| -dither -draw -edge -emboss -encipher -encoding \ | |
| -endian -enhance -equalize -evaluate -extent -extract \ | |
| -family -fill -filter -flatten -flip -floodfill -flop \ | |
| -font -format -frame -fuzz -fx -gamma -gaussian-blur \ | |
| -geometry -gravity -green-primary -help -identify \ | |
| -implode -insert -intent -interlace -interpolate \ | |
| -label -lat -layers -level -limit -linear-stretch \ | |
| -liquid-rescale -list -log -loop -map -mask \ | |
| -mattecolor -median -modulate -monitor -monochrome \ | |
| -morph -mosaic -motion-blur -negate -noise -normalize \ | |
| -opaque -ordered-dither -orient -page -paint -ping \ | |
| -pointsize -polaroid -posterize -preview -print \ | |
| -process -profile -quality -quantize -quiet \ | |
| -radial-blur -raise -random-threshold -recolor \ | |
| -red-primary -regard-warnings -region -render -repage \ | |
| -resample -resize -respect-parenthesis -reverse -roll \ | |
| -rotate -sample -sampling-factor -scale -scene -seed \ | |
| -segment -separate -sepia-tone -set -shade -shadow \ | |
| -sharpen -shave -shear -sigmoidal-contrast -size \ | |
| -sketch -solarize -splice -spread -stretch -strip \ | |
| -stroke -strokewidth -style -swap -swirl -taint \ | |
| -texture -threshold -thumbnail -tile -tile-offset \ | |
| -tint -transform -transparent -transparent-color \ | |
| -transpose -transverse -treedepth -trim -type \ | |
| -undercolor -unique-colors -units -unsharp -verbose \ | |
| -version -view -vignette -virtual-pixel -wave \ | |
| -weight -white-point -white-threshold \ | |
| -write' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+adjoin +append +compress \ | |
| +contrast +debug +dither +endian +gamma +label +map \ | |
| +mask +matte +negate +noise +page +raise +render \ | |
| +write' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _count_args () | |
| { | |
| local i cword words; | |
| __reassemble_comp_words_by_ref "$1" words cword; | |
| args=1; | |
| for i in "${words[@]:1:cword-1}"; | |
| do | |
| [[ "$i" != -* ]] && args=$(($args+1)); | |
| done | |
| } | |
| _cpan2dist () | |
| { | |
| local cur prev packagelist cpandirs; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| --format) | |
| COMPREPLY=($( compgen -W '$(perl -MCPANPLUS::Dist -e \ | |
| "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' -- "$cur" )); | |
| return 0 | |
| ;; | |
| --banlist | --ignorelist | --modulelist | --logfile) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--help --skiptest --force --install \ | |
| --verbose --keepsource --makefile --buildprereq \ | |
| --archive --flushcache --defaults --edit-metafile \ | |
| --format --ban --banlist --ignore --ignorelist \ | |
| --modulelist --logfile --timeout --set-config \ | |
| --set-program --dist-opts --default-banlist \ | |
| --default-ignorelist' -- $cur )); | |
| else | |
| cpandirs=("$HOME/.cpanplus/" "$HOME/.cpan/source/modules/"); | |
| for dir in ${cpandirs[@]}; | |
| do | |
| [[ -d "$dir" && -r "$dir/02packages.details.txt.gz" ]] && packagelist="$dir/02packages.details.txt.gz"; | |
| done; | |
| COMPREPLY=($( zgrep "^${cur//-/::}" $packagelist 2>/dev/null | awk '{print $1}' | sed -e 's/::/-/g' )); | |
| fi | |
| } | |
| _cpio () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -H | --format) | |
| _cpio_format; | |
| return 0 | |
| ;; | |
| -E | -F | -I | --file | --pattern-file) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -R | --owner) | |
| _usergroup; | |
| return 0 | |
| ;; | |
| --rsh-command) | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -c -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [ $COMP_CWORD -eq 1 ]; then | |
| COMPREPLY=($( compgen -W '-o --create -i --extract -p --pass-through \ | |
| -? --help --license --usage --version' -- "$cur" )); | |
| else | |
| case ${COMP_WORDS[1]} in | |
| -o | --create) | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-0 -a -c -v -A -B\ | |
| -L -V -C -H -M -O -F --file --format\ | |
| --message --null --reset-access-time\ | |
| --verbose --dot --append --block-size\ | |
| --dereference --io-size --quiet\ | |
| --force-local --rsh-command --help\ | |
| --version' -- "$cur" )); | |
| fi | |
| ;; | |
| -i | --extract) | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-b -c -d -f -m -n -r\ | |
| -t -s -u -v -B -S -V -C -E -H -M -R -I\ | |
| -F --file --make-directories\ | |
| --nonmatching\ | |
| --preserve-modification-time\ | |
| --numeric-uid-gid --rename -t --list\ | |
| --swap-bytes --swap --dot\ | |
| --unconditional --verbose --block-size\ | |
| --swap-halfwords --io-size\ | |
| --pattern-file --format --owner\ | |
| --no-preserve-owner --message\ | |
| --force-local --no-absolute-filenames\ | |
| --sparse --only-verify-crc --quiet\ | |
| --rsh-command --help\ | |
| --to-stdout \ | |
| --version' -- "$cur" )); | |
| fi | |
| ;; | |
| -p | --pass-through) | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-0 -a -d -l -m -u -v\ | |
| -L -V -R --null --reset-access-time\ | |
| --make-directories --link --quiet\ | |
| --preserve-modification-time\ | |
| --unconditional --verbose --dot\ | |
| --dereference --owner\ | |
| --no-preserve-owner --sparse --help\ | |
| --version' -- "$cur" )); | |
| else | |
| _filedir -d; | |
| fi | |
| ;; | |
| esac; | |
| fi | |
| } | |
| _cpio_format () | |
| { | |
| COMPREPLY=($( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- "$cur" )) | |
| } | |
| _createdb () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -h | --host) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -U | --username | -O | --owner) | |
| _pg_users; | |
| return 0 | |
| ;; | |
| -p | --port | -D | --tablespace | -E | --encoding | -T | --template) | |
| return 0 | |
| ;; | |
| --help | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--tablespace --template --encoding --host \ | |
| --port --username --password --echo --quiet --help --version' -- "$cur" )); | |
| else | |
| _pg_databases; | |
| fi | |
| } | |
| _crontab () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -u) | |
| _allowed_users; | |
| return 0 | |
| ;; | |
| esac; | |
| local i opts=" -u -l -r -e"; | |
| [ "$(uname -s)" = Linux ] && opts="$opts -i"; | |
| [ -e /etc/selinux ] && opts="$opts -s"; | |
| for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| case "${COMP_WORDS[i]}" in | |
| -l) | |
| opts=${opts// -l -r -e/}; | |
| opts=${opts// -i/}; | |
| opts=${opts// -s/} | |
| ;; | |
| -e) | |
| opts=${opts// -l -r -e/}; | |
| opts=${opts// -i/} | |
| ;; | |
| -r) | |
| opts=${opts// -l -r -e/} | |
| ;; | |
| -u) | |
| opts=${opts// -u/}; | |
| opts=${opts// -i/} | |
| ;; | |
| -i | -s) | |
| opts=${opts// ${COMP_WORDS[i]}/} | |
| ;; | |
| esac; | |
| done; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '$opts' -- "$cur" )); | |
| return 0; | |
| fi; | |
| [[ "${COMP_LINE}" == *\ -@(l|r|e)* ]] || _filedir | |
| } | |
| _cryptsetup_device () | |
| { | |
| cur=${cur:=/dev/}; | |
| _filedir | |
| } | |
| _cryptsetup_name () | |
| { | |
| COMPREPLY=($( compgen -X control -W '$( command ls /dev/mapper )' -- "$cur" )) | |
| } | |
| _dd () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n = cur; | |
| case $cur in | |
| if=* | of=*) | |
| cur=${cur#*=}; | |
| _filedir; | |
| return 0 | |
| ;; | |
| conv=*) | |
| cur=${cur#*=}; | |
| COMPREPLY=($( compgen -W 'ascii ebcdic ibm block unblock lcase | |
| notrunc ucase swab noerror sync' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| _expand || return 0; | |
| COMPREPLY=($( compgen -W '--help --version' -- "$cur" ) $( compgen -W 'bs cbs conv count ibs if obs of seek skip' -S '=' -- "$cur" )) | |
| } | |
| _display () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-alpha -antialias -authenticate \ | |
| -auto-orient -backdrop -background -border \ | |
| -bordercolor -borderwidth -channel -clip \ | |
| -clip-path -coalesce -colormap -colors -colorspace \ | |
| -comment -compress -contrast -crop -debug -decipher \ | |
| -define -delay -density -depth -despeckle -display \ | |
| -dispose -dither -edge -endian -enhance -extract \ | |
| -filter -flatten -flip -flop -font -foreground \ | |
| -format -frame -gamma -geometry -help -iconGeometry \ | |
| -iconic -identify -immutable -interlace -interpolate \ | |
| -label -limit -list -log -loop -map -mattecolor \ | |
| -monitor -monochrome -name -negate -page -profile \ | |
| -quality -quantize -quiet -raise -regard-warnings \ | |
| -remote -repage -resample -resize \ | |
| -respect-parenthesis -roll -rotate -sample \ | |
| -sampling-factor -scenes -seed -segment -set \ | |
| -shared-memory -sharpen -size -strip -texture -title \ | |
| -transparent-color -treedepth -trim -update \ | |
| -usePixmap -verbose -version -virtual-pixel -visual \ | |
| -window -window-group -write' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+compress +contrast +debug +dither \ | |
| +endian +gamma +label +map +matte +negate +page \ | |
| +raise +write' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _dropdb () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -h | --host) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -U | --username) | |
| _pg_users; | |
| return 0 | |
| ;; | |
| --help | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--host --port --username --password \ | |
| --interactive --echo --quiet --help --version' -- "$cur" )); | |
| else | |
| _pg_databases; | |
| fi | |
| } | |
| _dvd_devices () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -f -d -X "!*/?(r)dvd*" -- "${cur:-/dev/}" )) | |
| } | |
| _edquota () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| -f | --filesystem) | |
| _filesystems; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-r --remote -m --no-mixed-pathnames \ | |
| -g --group -u --user -p --prototype -F --format -f --filesystem \ | |
| -t --edit-period -T --edit-times' -- "$cur" )); | |
| else | |
| _user_or_group; | |
| fi | |
| } | |
| _expand () | |
| { | |
| if [[ "$cur" == \~*/* ]]; then | |
| eval cur=$cur; | |
| else | |
| if [[ "$cur" == \~* ]]; then | |
| cur=${cur#\~}; | |
| COMPREPLY=($( compgen -P '~' -u "$cur" )); | |
| [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}; | |
| return ${#COMPREPLY[@]}; | |
| fi; | |
| fi | |
| } | |
| _export () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| case $COMP_LINE in | |
| *=\$*) | |
| COMPREPLY=($( compgen -v -P '$' -- "${cur#*=\$}" )) | |
| ;; | |
| *[^=]) | |
| COMPREPLY=($( compgen -v -S '=' -- "$cur" )) | |
| ;; | |
| *=) | |
| COMPREPLY=("$( eval echo -n \"$`echo ${cur%=}`\" | | |
| ( echo -n \' | |
| sed -e 's/'\''/'\''\\\'\'''\''/g' | |
| echo -n \' ) )") | |
| ;; | |
| esac | |
| } | |
| _filedir () | |
| { | |
| local i IFS=' | |
| ' xspec; | |
| _tilde "$cur" || return 0; | |
| local -a toks; | |
| local quoted tmp; | |
| _quote_readline_by_ref "$cur" quoted; | |
| toks=(${toks[@]-} $( | |
| compgen -d -- "$quoted" | { | |
| while read -r tmp; do | |
| # TODO: I have removed a "[ -n $tmp ] &&" before 'printf ..', | |
| # and everything works again. If this bug suddenly | |
| # appears again (i.e. "cd /b<TAB>" becomes "cd /"), | |
| # remember to check for other similar conditionals (here | |
| # and _filedir_xspec()). --David | |
| printf '%s\n' $tmp | |
| done | |
| } | |
| )); | |
| if [[ "$1" != -d ]]; then | |
| [[ ${BASH_VERSINFO[0]} -ge 4 ]] && xspec=${1:+"!*.@($1|${1^^})"} || xspec=${1:+"!*.@($1|$(printf %s $1 | tr '[:lower:]' '[:upper:]'))"}; | |
| toks=(${toks[@]-} $( compgen -f -X "$xspec" -- $quoted)); | |
| fi; | |
| [ ${#toks[@]} -ne 0 ] && _compopt_o_filenames; | |
| COMPREPLY=("${COMPREPLY[@]}" "${toks[@]}") | |
| } | |
| _filedir_xspec () | |
| { | |
| local IFS cur xspec; | |
| IFS=' | |
| '; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _expand || return 0; | |
| xspec=$( awk "/^complete[ \t]+.*[ \t]${1##*/}([ \t]|\$)/ { print \$0; exit }" "$BASH_COMPLETION" ); | |
| xspec=${xspec#*-X }; | |
| xspec=${xspec%% *}; | |
| local -a toks; | |
| local tmp; | |
| toks=(${toks[@]-} $( | |
| compgen -d -- "$(quote_readline "$cur")" | { | |
| while read -r tmp; do | |
| # see long TODO comment in _filedir() --David | |
| printf '%s\n' $tmp | |
| done | |
| } | |
| )); | |
| eval xspec="${xspec}"; | |
| local matchop=!; | |
| if [[ $xspec == !* ]]; then | |
| xspec=${xspec#!}; | |
| matchop=@; | |
| fi; | |
| [[ ${BASH_VERSINFO[0]} -ge 4 ]] && xspec="$matchop($xspec|${xspec^^})" || xspec="$matchop($xspec|$(printf %s $xspec | tr '[:lower:]' '[:upper:]'))"; | |
| toks=(${toks[@]-} $( | |
| eval compgen -f -X "!$xspec" -- "\$(quote_readline "\$cur")" | { | |
| while read -r tmp; do | |
| [ -n $tmp ] && printf '%s\n' $tmp | |
| done | |
| } | |
| )); | |
| [ ${#toks[@]} -ne 0 ] && _compopt_o_filenames; | |
| COMPREPLY=("${toks[@]}") | |
| } | |
| _filesystems () | |
| { | |
| COMPREPLY=($( compgen -W "$(awk '/^\// {print $1}' /etc/mtab)" -- "$cur" )) | |
| } | |
| _find () | |
| { | |
| local cur prev i exprfound onlyonce; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -maxdepth | -mindepth) | |
| COMPREPLY=($( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -newer | -anewer | -cnewer | -fls | -fprint | -fprint0 | -fprintf | -name | -iname | -lname | -ilname | -wholename | -iwholename | -samefile) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -fstype) | |
| _fstypes; | |
| if [[ "$( uname -s )" == *BSD ]]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W 'local rdonly' -- "$cur" )); | |
| fi; | |
| return 0 | |
| ;; | |
| -gid) | |
| _gids; | |
| return 0 | |
| ;; | |
| -group) | |
| COMPREPLY=($( compgen -g -- "$cur" 2>/dev/null)); | |
| return 0 | |
| ;; | |
| -xtype | -type) | |
| COMPREPLY=($( compgen -W 'b c d p f l s' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -uid) | |
| _uids; | |
| return 0 | |
| ;; | |
| -user) | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| return 0 | |
| ;; | |
| -exec | -execdir | -ok | -okdir) | |
| COMP_WORDS=(COMP_WORDS[0] "$cur"); | |
| COMP_CWORD=1; | |
| _command; | |
| return 0 | |
| ;; | |
| -[acm]min | -[acm]time | -iname | -lname | -wholename | -iwholename | -lwholename | -ilwholename | -inum | -path | -ipath | -regex | -iregex | -links | -perm | -size | -used | -printf | -context) | |
| return 0 | |
| ;; | |
| -regextype) | |
| COMPREPLY=($( compgen -W 'emacs posix-awk posix-basic \ | |
| posix-egrep posix-extended' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| _expand || return 0; | |
| for i in ${COMP_WORDS[@]}; | |
| do | |
| [[ "$i" = [-\(\),\!]* ]] && exprfound=1 && break; | |
| done; | |
| if [[ "$exprfound" != 1 && "$cur" != [-\(\),\!]* ]]; then | |
| _filedir -d; | |
| return 0; | |
| fi; | |
| COMPREPLY=($( compgen -W '-daystart -depth -follow -help \ | |
| -ignore_readdir_race -maxdepth -mindepth -mindepth -mount \ | |
| -noignore_readdir_race -noleaf -regextype -version -warn -nowarn \ | |
| -xdev \ | |
| -amin -anewer -atime -cmin -cnewer -ctime -empty -executable -false \ | |
| -fstype -gid -group -ilname -iname -inum -ipath -iregex -iwholename \ | |
| -links -lname -mmin -mtime -name -newer -nogroup -nouser -path -perm \ | |
| -readable -regex -samefile -size -true -type -uid -used -user \ | |
| -wholename -writable -xtype -context \ | |
| -delete -exec -execdir -fls -fprint -fprint0 -fprintf -ls -ok -okdir \ | |
| -print -print0 -printf -prune -quit' -- "$cur" )); | |
| onlyonce=' -daystart -depth -follow -help -ignore_readdir_race -maxdepth \ | |
| -mindepth -mount -noignore_readdir_race -noleaf -nowarn -regextype \ | |
| -version -warn -xdev '; | |
| COMPREPLY=($( (while read -d ' ' i; do | |
| [[ -z "$i" || "${onlyonce/ ${i%% *} / }" == "$onlyonce" ]] && | |
| continue | |
| # flatten array with spaces on either side, | |
| # otherwise we cannot grep on word boundaries of | |
| # first and last word | |
| COMPREPLY=" ${COMPREPLY[@]} " | |
| # remove word from list of completions | |
| COMPREPLY=( ${COMPREPLY/ ${i%% *} / } ) | |
| done | |
| printf '%s ' "${COMPREPLY[@]}") <<<"${COMP_WORDS[@]}" | |
| )); | |
| _filedir; | |
| return 0 | |
| } | |
| _fstypes () | |
| { | |
| local fss; | |
| if [ -e /proc/filesystems ]; then | |
| fss="$( cut -d' ' -f2 /proc/filesystems ) | |
| $( awk '! /\*/ { print $NF }' /etc/filesystems 2>/dev/null )"; | |
| else | |
| fss="$( awk '/^[ \t]*[^#]/ { print $3 }' /etc/fstab 2>/dev/null ) | |
| $( awk '/^[ \t]*[^#]/ { print $3 }' /etc/mnttab 2>/dev/null ) | |
| $( awk '/^[ \t]*[^#]/ { print $4 }' /etc/vfstab 2>/dev/null ) | |
| $( awk '{ print $1 }' /etc/dfs/fstypes 2>/dev/null ) | |
| $( [ -d /etc/fs ] && command ls /etc/fs )"; | |
| fi; | |
| [ -n "$fss" ] && COMPREPLY=("${COMPREPLY[@]}" $( compgen -W "$fss" -- "$cur" )) | |
| } | |
| _function () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| if [[ $1 == @(declare|typeset) ]]; then | |
| if [ "$prev" = -f ]; then | |
| COMPREPLY=($( compgen -A function -- "$cur" )); | |
| else | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a -f -F -i -r -x -p' -- "$cur" )); | |
| fi; | |
| fi; | |
| else | |
| if [ $COMP_CWORD -eq 1 ]; then | |
| COMPREPLY=($( compgen -A function -- "$cur" )); | |
| else | |
| COMPREPLY=("() $( type -- ${COMP_WORDS[1]} | sed -e 1,2d )"); | |
| fi; | |
| fi | |
| } | |
| _gcc () | |
| { | |
| local cur cc backend; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _expand || return 0; | |
| case $1 in | |
| gcj) | |
| backend=jc1 | |
| ;; | |
| gpc) | |
| backend=gpc1 | |
| ;; | |
| *77) | |
| backend=f771 | |
| ;; | |
| *) | |
| backend=cc1 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| cc=$( $1 -print-prog-name=$backend ); | |
| COMPREPLY=($( compgen -W "$( $cc --help 2>/dev/null | tr '\t' ' ' | sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | sort -u )" -- "$cur" )); | |
| else | |
| _filedir; | |
| fi | |
| } | |
| _get_comp_words_by_ref () | |
| { | |
| local exclude flag i OPTIND=1; | |
| local cur cword words=(); | |
| local upargs=() upvars=() vcur vcword vprev vwords; | |
| while getopts "c:i:n:p:w:" flag "$@"; do | |
| case $flag in | |
| c) | |
| vcur=$OPTARG | |
| ;; | |
| i) | |
| vcword=$OPTARG | |
| ;; | |
| n) | |
| exclude=$OPTARG | |
| ;; | |
| p) | |
| vprev=$OPTARG | |
| ;; | |
| w) | |
| vwords=$OPTARG | |
| ;; | |
| esac; | |
| done; | |
| while [[ $# -ge $OPTIND ]]; do | |
| case ${!OPTIND} in | |
| cur) | |
| vcur=cur | |
| ;; | |
| prev) | |
| vprev=prev | |
| ;; | |
| cword) | |
| vcword=cword | |
| ;; | |
| words) | |
| vwords=words | |
| ;; | |
| *) | |
| echo "bash: $FUNCNAME(): \`${!OPTIND}': unknown argument" 1>&2; | |
| return 1 | |
| ;; | |
| esac; | |
| let "OPTIND += 1"; | |
| done; | |
| __get_cword_at_cursor_by_ref "$exclude" words cword cur; | |
| [[ -n $vcur ]] && { | |
| upvars+=("$vcur"); | |
| upargs+=(-v $vcur "$cur") | |
| }; | |
| [[ -n $vcword ]] && { | |
| upvars+=("$vcword"); | |
| upargs+=(-v $vcword "$cword") | |
| }; | |
| [[ -n $vprev ]] && { | |
| upvars+=("$vprev"); | |
| upargs+=(-v $vprev "${words[cword - 1]}") | |
| }; | |
| [[ -n $vwords ]] && { | |
| upvars+=("$vwords"); | |
| upargs+=(-a${#words[@]} $vwords "${words[@]}") | |
| }; | |
| (( ${#upvars[@]} )) && local "${upvars[@]}" && _upvars "${upargs[@]}" | |
| } | |
| _get_cword () | |
| { | |
| local LC_CTYPE=C; | |
| local cword words; | |
| __reassemble_comp_words_by_ref "$1" words cword; | |
| if [[ -n ${2//[^0-9]/} ]]; then | |
| printf "%s" "${words[cword-$2]}"; | |
| else | |
| if [[ "${#words[cword]}" -eq 0 || "$COMP_POINT" == "${#COMP_LINE}" ]]; then | |
| printf "%s" "${words[cword]}"; | |
| else | |
| local i; | |
| local cur="$COMP_LINE"; | |
| local index="$COMP_POINT"; | |
| for ((i = 0; i <= cword; ++i )) | |
| do | |
| while [[ "${#cur}" -ge ${#words[i]} && "${cur:0:${#words[i]}}" != "${words[i]}" ]]; do | |
| cur="${cur:1}"; | |
| ((index--)); | |
| done; | |
| if [[ "$i" -lt "$cword" ]]; then | |
| local old_size="${#cur}"; | |
| cur="${cur#${words[i]}}"; | |
| local new_size="${#cur}"; | |
| index=$(( index - old_size + new_size )); | |
| fi; | |
| done; | |
| if [[ "${words[cword]:0:${#cur}}" != "$cur" ]]; then | |
| printf "%s" "${words[cword]}"; | |
| else | |
| printf "%s" "${cur:0:$index}"; | |
| fi; | |
| fi; | |
| fi | |
| } | |
| _get_first_arg () | |
| { | |
| local i; | |
| arg=; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" != -* ]]; then | |
| arg=${COMP_WORDS[i]}; | |
| break; | |
| fi; | |
| done | |
| } | |
| _get_pword () | |
| { | |
| if [ $COMP_CWORD -ge 1 ]; then | |
| _get_cword "${@:-}" 1; | |
| fi | |
| } | |
| _gids () | |
| { | |
| if type getent >&/dev/null; then | |
| COMPREPLY=($( compgen -W '$( getent group | cut -d: -f3 )' -- "$cur" )); | |
| else | |
| if type perl >&/dev/null; then | |
| COMPREPLY=($( compgen -W '$( perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"' )' -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -W '$( cut -d: -f3 /etc/group )' -- "$cur" )); | |
| fi; | |
| fi | |
| } | |
| _git () | |
| { | |
| __git_wrap__git_main | |
| } | |
| _git_add () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --interactive --refresh --patch --update --dry-run | |
| --ignore-errors --intent-to-add | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_index_file "--others --modified --directory --no-empty-directory" | |
| } | |
| _git_am () | |
| { | |
| local dir="$(__gitdir)"; | |
| if [ -d "$dir"/rebase-apply ]; then | |
| __gitcomp "--skip --continue --resolved --abort"; | |
| return; | |
| fi; | |
| case "$cur" in | |
| --whitespace=*) | |
| __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --3way --committer-date-is-author-date --ignore-date | |
| --ignore-whitespace --ignore-space-change | |
| --interactive --keep --no-utf8 --signoff --utf8 | |
| --whitespace= --scissors | |
| "; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_apply () | |
| { | |
| case "$cur" in | |
| --whitespace=*) | |
| __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --stat --numstat --summary --check --index | |
| --cached --index-info --reverse --reject --unidiff-zero | |
| --apply --no-add --exclude= | |
| --ignore-whitespace --ignore-space-change | |
| --whitespace= --inaccurate-eof --verbose | |
| "; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_archive () | |
| { | |
| case "$cur" in | |
| --format=*) | |
| __gitcomp "$(git archive --list)" "" "${cur##--format=}"; | |
| return | |
| ;; | |
| --remote=*) | |
| __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --format= --list --verbose | |
| --prefix= --remote= --exec= | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_file | |
| } | |
| _git_bisect () | |
| { | |
| __git_has_doubledash && return; | |
| local subcommands="start bad good skip reset visualize replay log run"; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| if [ -z "$subcommand" ]; then | |
| if [ -f "$(__gitdir)"/BISECT_START ]; then | |
| __gitcomp "$subcommands"; | |
| else | |
| __gitcomp "replay start"; | |
| fi; | |
| return; | |
| fi; | |
| case "$subcommand" in | |
| bad | good | reset | skip | start) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| } | |
| _git_branch () | |
| { | |
| local i c=1 only_local_ref="n" has_r="n"; | |
| while [ $c -lt $cword ]; do | |
| i="${words[c]}"; | |
| case "$i" in | |
| -d | -m) | |
| only_local_ref="y" | |
| ;; | |
| -r) | |
| has_r="y" | |
| ;; | |
| esac; | |
| ((c++)); | |
| done; | |
| case "$cur" in | |
| --set-upstream-to=*) | |
| __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}" | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --color --no-color --verbose --abbrev= --no-abbrev | |
| --track --no-track --contains --merged --no-merged | |
| --set-upstream-to= --edit-description --list | |
| --unset-upstream | |
| " | |
| ;; | |
| *) | |
| if [ $only_local_ref = "y" -a $has_r = "n" ]; then | |
| __gitcomp_nl "$(__git_heads)"; | |
| else | |
| __gitcomp_nl "$(__git_refs)"; | |
| fi | |
| ;; | |
| esac | |
| } | |
| _git_bug () | |
| { | |
| __git_extras_workflow "bug" | |
| } | |
| _git_bundle () | |
| { | |
| local cmd="${words[2]}"; | |
| case "$cword" in | |
| 2) | |
| __gitcomp "create list-heads verify unbundle" | |
| ;; | |
| 3) | |
| ;; | |
| *) | |
| case "$cmd" in | |
| create) | |
| __git_complete_revlist | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| } | |
| _git_changelog () | |
| { | |
| __gitcomp "-l -t --list --tag" | |
| } | |
| _git_checkout () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --conflict=*) | |
| __gitcomp "diff3 merge" "" "${cur##--conflict=}" | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --quiet --ours --theirs --track --no-track --merge | |
| --conflict= --orphan --patch | |
| " | |
| ;; | |
| *) | |
| local flags="--track --no-track --no-guess" track=1; | |
| if [ -n "$(__git_find_on_cmdline "$flags")" ]; then | |
| track=''; | |
| fi; | |
| __gitcomp_nl "$(__git_refs '' $track)" | |
| ;; | |
| esac | |
| } | |
| _git_cherry () | |
| { | |
| __gitcomp "$(__git_refs)" | |
| } | |
| _git_cherry_pick () | |
| { | |
| local dir="$(__gitdir)"; | |
| if [ -f "$dir"/CHERRY_PICK_HEAD ]; then | |
| __gitcomp "--continue --quit --abort"; | |
| return; | |
| fi; | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--edit --no-commit --signoff --strategy= --mainline" | |
| ;; | |
| *) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| esac | |
| } | |
| _git_clean () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--dry-run --quiet"; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_index_file "--others --directory" | |
| } | |
| _git_clone () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --local | |
| --no-hardlinks | |
| --shared | |
| --reference | |
| --quiet | |
| --no-checkout | |
| --bare | |
| --mirror | |
| --origin | |
| --upload-pack | |
| --template= | |
| --depth | |
| --single-branch | |
| --branch | |
| "; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_commit () | |
| { | |
| case "$prev" in | |
| -c | -C) | |
| __gitcomp_nl "$(__git_refs)" "" "${cur}"; | |
| return | |
| ;; | |
| esac; | |
| case "$cur" in | |
| --cleanup=*) | |
| __gitcomp "default strip verbatim whitespace | |
| " "" "${cur##--cleanup=}"; | |
| return | |
| ;; | |
| --reuse-message=* | --reedit-message=* | --fixup=* | --squash=*) | |
| __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"; | |
| return | |
| ;; | |
| --untracked-files=*) | |
| __gitcomp "all no normal" "" "${cur##--untracked-files=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --all --author= --signoff --verify --no-verify | |
| --edit --no-edit | |
| --amend --include --only --interactive | |
| --dry-run --reuse-message= --reedit-message= | |
| --reset-author --file= --message= --template= | |
| --cleanup= --untracked-files --untracked-files= | |
| --verbose --quiet --fixup= --squash= | |
| "; | |
| return | |
| ;; | |
| esac; | |
| if git rev-parse --verify --quiet HEAD > /dev/null; then | |
| __git_complete_index_file "--committable"; | |
| else | |
| __git_complete_index_file "--cached"; | |
| fi | |
| } | |
| _git_config () | |
| { | |
| case "$prev" in | |
| branch.*.remote | branch.*.pushremote) | |
| __gitcomp_nl "$(__git_remotes)"; | |
| return | |
| ;; | |
| branch.*.merge) | |
| __gitcomp_nl "$(__git_refs)"; | |
| return | |
| ;; | |
| branch.*.rebase) | |
| __gitcomp "false true"; | |
| return | |
| ;; | |
| remote.pushdefault) | |
| __gitcomp_nl "$(__git_remotes)"; | |
| return | |
| ;; | |
| remote.*.fetch) | |
| local remote="${prev#remote.}"; | |
| remote="${remote%.fetch}"; | |
| if [ -z "$cur" ]; then | |
| __gitcomp_nl "refs/heads/" "" "" ""; | |
| return; | |
| fi; | |
| __gitcomp_nl "$(__git_refs_remotes "$remote")"; | |
| return | |
| ;; | |
| remote.*.push) | |
| local remote="${prev#remote.}"; | |
| remote="${remote%.push}"; | |
| __gitcomp_nl "$(git --git-dir="$(__gitdir)" for-each-ref --format='%(refname):%(refname)' refs/heads)"; | |
| return | |
| ;; | |
| pull.twohead | pull.octopus) | |
| __git_compute_merge_strategies; | |
| __gitcomp "$__git_merge_strategies"; | |
| return | |
| ;; | |
| color.branch | color.diff | color.interactive | color.showbranch | color.status | color.ui) | |
| __gitcomp "always never auto"; | |
| return | |
| ;; | |
| color.pager) | |
| __gitcomp "false true"; | |
| return | |
| ;; | |
| color.*.*) | |
| __gitcomp " | |
| normal black red green yellow blue magenta cyan white | |
| bold dim ul blink reverse | |
| "; | |
| return | |
| ;; | |
| diff.submodule) | |
| __gitcomp "log short"; | |
| return | |
| ;; | |
| help.format) | |
| __gitcomp "man info web html"; | |
| return | |
| ;; | |
| log.date) | |
| __gitcomp "$__git_log_date_formats"; | |
| return | |
| ;; | |
| sendemail.aliasesfiletype) | |
| __gitcomp "mutt mailrc pine elm gnus"; | |
| return | |
| ;; | |
| sendemail.confirm) | |
| __gitcomp "$__git_send_email_confirm_options"; | |
| return | |
| ;; | |
| sendemail.suppresscc) | |
| __gitcomp "$__git_send_email_suppresscc_options"; | |
| return | |
| ;; | |
| --get | --get-all | --unset | --unset-all) | |
| __gitcomp_nl "$(__git_config_get_set_variables)"; | |
| return | |
| ;; | |
| *.*) | |
| return | |
| ;; | |
| esac; | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --system --global --local --file= | |
| --list --replace-all | |
| --get --get-all --get-regexp | |
| --add --unset --unset-all | |
| --remove-section --rename-section | |
| "; | |
| return | |
| ;; | |
| branch.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| branch.*) | |
| local pfx="${cur%.*}." cur_="${cur#*.}"; | |
| __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."; | |
| __gitcomp_nl_append 'autosetupmerge | |
| autosetuprebase | |
| ' "$pfx" "$cur_"; | |
| return | |
| ;; | |
| guitool.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp " | |
| argprompt cmd confirm needsfile noconsole norescan | |
| prompt revprompt revunmerged title | |
| " "$pfx" "$cur_"; | |
| return | |
| ;; | |
| difftool.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp "cmd path" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| man.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp "cmd path" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| mergetool.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp "cmd path trustExitCode" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| pager.*) | |
| local pfx="${cur%.*}." cur_="${cur#*.}"; | |
| __git_compute_all_commands; | |
| __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| remote.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp " | |
| url proxy fetch push mirror skipDefaultUpdate | |
| receivepack uploadpack tagopt pushurl | |
| " "$pfx" "$cur_"; | |
| return | |
| ;; | |
| remote.*) | |
| local pfx="${cur%.*}." cur_="${cur#*.}"; | |
| __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."; | |
| __gitcomp_nl_append "pushdefault" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| url.*.*) | |
| local pfx="${cur%.*}." cur_="${cur##*.}"; | |
| __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp " | |
| add.ignoreErrors | |
| advice.commitBeforeMerge | |
| advice.detachedHead | |
| advice.implicitIdentity | |
| advice.pushNonFastForward | |
| advice.resolveConflict | |
| advice.statusHints | |
| alias. | |
| am.keepcr | |
| apply.ignorewhitespace | |
| apply.whitespace | |
| branch.autosetupmerge | |
| branch.autosetuprebase | |
| browser. | |
| clean.requireForce | |
| color.branch | |
| color.branch.current | |
| color.branch.local | |
| color.branch.plain | |
| color.branch.remote | |
| color.decorate.HEAD | |
| color.decorate.branch | |
| color.decorate.remoteBranch | |
| color.decorate.stash | |
| color.decorate.tag | |
| color.diff | |
| color.diff.commit | |
| color.diff.frag | |
| color.diff.func | |
| color.diff.meta | |
| color.diff.new | |
| color.diff.old | |
| color.diff.plain | |
| color.diff.whitespace | |
| color.grep | |
| color.grep.context | |
| color.grep.filename | |
| color.grep.function | |
| color.grep.linenumber | |
| color.grep.match | |
| color.grep.selected | |
| color.grep.separator | |
| color.interactive | |
| color.interactive.error | |
| color.interactive.header | |
| color.interactive.help | |
| color.interactive.prompt | |
| color.pager | |
| color.showbranch | |
| color.status | |
| color.status.added | |
| color.status.changed | |
| color.status.header | |
| color.status.nobranch | |
| color.status.untracked | |
| color.status.updated | |
| color.ui | |
| commit.status | |
| commit.template | |
| core.abbrev | |
| core.askpass | |
| core.attributesfile | |
| core.autocrlf | |
| core.bare | |
| core.bigFileThreshold | |
| core.compression | |
| core.createObject | |
| core.deltaBaseCacheLimit | |
| core.editor | |
| core.eol | |
| core.excludesfile | |
| core.fileMode | |
| core.fsyncobjectfiles | |
| core.gitProxy | |
| core.ignoreStat | |
| core.ignorecase | |
| core.logAllRefUpdates | |
| core.loosecompression | |
| core.notesRef | |
| core.packedGitLimit | |
| core.packedGitWindowSize | |
| core.pager | |
| core.preferSymlinkRefs | |
| core.preloadindex | |
| core.quotepath | |
| core.repositoryFormatVersion | |
| core.safecrlf | |
| core.sharedRepository | |
| core.sparseCheckout | |
| core.symlinks | |
| core.trustctime | |
| core.warnAmbiguousRefs | |
| core.whitespace | |
| core.worktree | |
| diff.autorefreshindex | |
| diff.external | |
| diff.ignoreSubmodules | |
| diff.mnemonicprefix | |
| diff.noprefix | |
| diff.renameLimit | |
| diff.renames | |
| diff.statGraphWidth | |
| diff.submodule | |
| diff.suppressBlankEmpty | |
| diff.tool | |
| diff.wordRegex | |
| diff.algorithm | |
| difftool. | |
| difftool.prompt | |
| fetch.recurseSubmodules | |
| fetch.unpackLimit | |
| format.attach | |
| format.cc | |
| format.coverLetter | |
| format.headers | |
| format.numbered | |
| format.pretty | |
| format.signature | |
| format.signoff | |
| format.subjectprefix | |
| format.suffix | |
| format.thread | |
| format.to | |
| gc. | |
| gc.aggressiveWindow | |
| gc.auto | |
| gc.autopacklimit | |
| gc.packrefs | |
| gc.pruneexpire | |
| gc.reflogexpire | |
| gc.reflogexpireunreachable | |
| gc.rerereresolved | |
| gc.rerereunresolved | |
| gitcvs.allbinary | |
| gitcvs.commitmsgannotation | |
| gitcvs.dbTableNamePrefix | |
| gitcvs.dbdriver | |
| gitcvs.dbname | |
| gitcvs.dbpass | |
| gitcvs.dbuser | |
| gitcvs.enabled | |
| gitcvs.logfile | |
| gitcvs.usecrlfattr | |
| guitool. | |
| gui.blamehistoryctx | |
| gui.commitmsgwidth | |
| gui.copyblamethreshold | |
| gui.diffcontext | |
| gui.encoding | |
| gui.fastcopyblame | |
| gui.matchtrackingbranch | |
| gui.newbranchtemplate | |
| gui.pruneduringfetch | |
| gui.spellingdictionary | |
| gui.trustmtime | |
| help.autocorrect | |
| help.browser | |
| help.format | |
| http.lowSpeedLimit | |
| http.lowSpeedTime | |
| http.maxRequests | |
| http.minSessions | |
| http.noEPSV | |
| http.postBuffer | |
| http.proxy | |
| http.sslCAInfo | |
| http.sslCAPath | |
| http.sslCert | |
| http.sslCertPasswordProtected | |
| http.sslKey | |
| http.sslVerify | |
| http.useragent | |
| i18n.commitEncoding | |
| i18n.logOutputEncoding | |
| imap.authMethod | |
| imap.folder | |
| imap.host | |
| imap.pass | |
| imap.port | |
| imap.preformattedHTML | |
| imap.sslverify | |
| imap.tunnel | |
| imap.user | |
| init.templatedir | |
| instaweb.browser | |
| instaweb.httpd | |
| instaweb.local | |
| instaweb.modulepath | |
| instaweb.port | |
| interactive.singlekey | |
| log.date | |
| log.decorate | |
| log.showroot | |
| mailmap.file | |
| man. | |
| man.viewer | |
| merge. | |
| merge.conflictstyle | |
| merge.log | |
| merge.renameLimit | |
| merge.renormalize | |
| merge.stat | |
| merge.tool | |
| merge.verbosity | |
| mergetool. | |
| mergetool.keepBackup | |
| mergetool.keepTemporaries | |
| mergetool.prompt | |
| notes.displayRef | |
| notes.rewrite. | |
| notes.rewrite.amend | |
| notes.rewrite.rebase | |
| notes.rewriteMode | |
| notes.rewriteRef | |
| pack.compression | |
| pack.deltaCacheLimit | |
| pack.deltaCacheSize | |
| pack.depth | |
| pack.indexVersion | |
| pack.packSizeLimit | |
| pack.threads | |
| pack.window | |
| pack.windowMemory | |
| pager. | |
| pretty. | |
| pull.octopus | |
| pull.twohead | |
| push.default | |
| rebase.autosquash | |
| rebase.stat | |
| receive.autogc | |
| receive.denyCurrentBranch | |
| receive.denyDeleteCurrent | |
| receive.denyDeletes | |
| receive.denyNonFastForwards | |
| receive.fsckObjects | |
| receive.unpackLimit | |
| receive.updateserverinfo | |
| remote.pushdefault | |
| remotes. | |
| repack.usedeltabaseoffset | |
| rerere.autoupdate | |
| rerere.enabled | |
| sendemail. | |
| sendemail.aliasesfile | |
| sendemail.aliasfiletype | |
| sendemail.bcc | |
| sendemail.cc | |
| sendemail.cccmd | |
| sendemail.chainreplyto | |
| sendemail.confirm | |
| sendemail.envelopesender | |
| sendemail.from | |
| sendemail.identity | |
| sendemail.multiedit | |
| sendemail.signedoffbycc | |
| sendemail.smtpdomain | |
| sendemail.smtpencryption | |
| sendemail.smtppass | |
| sendemail.smtpserver | |
| sendemail.smtpserveroption | |
| sendemail.smtpserverport | |
| sendemail.smtpuser | |
| sendemail.suppresscc | |
| sendemail.suppressfrom | |
| sendemail.thread | |
| sendemail.to | |
| sendemail.validate | |
| showbranch.default | |
| status.relativePaths | |
| status.showUntrackedFiles | |
| status.submodulesummary | |
| submodule. | |
| tar.umask | |
| transfer.unpackLimit | |
| url. | |
| user.email | |
| user.name | |
| user.signingkey | |
| web.browser | |
| branch. remote. | |
| " | |
| } | |
| _git_contrib () | |
| { | |
| __gitcomp "$(git shortlog -s | cut -f2)" | |
| } | |
| _git_count () | |
| { | |
| __gitcomp "--all" | |
| } | |
| _git_delete_branch () | |
| { | |
| __gitcomp "$(__git_heads)" | |
| } | |
| _git_delete_submodule () | |
| { | |
| __gitcomp "$(git submodule status | awk '{print $2}')" | |
| } | |
| _git_delete_tag () | |
| { | |
| __gitcomp "$(__git_tags)" | |
| } | |
| _git_describe () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --all --tags --contains --abbrev= --candidates= | |
| --exact-match --debug --long --match --always | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_diff () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --diff-algorithm=*) | |
| __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex | |
| --base --ours --theirs --no-index | |
| $__git_diff_common_options | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist_file | |
| } | |
| _git_difftool () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --tool=*) | |
| __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex | |
| --base --ours --theirs | |
| --no-renames --diff-filter= --find-copies-harder | |
| --relative --ignore-submodules | |
| --tool="; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist_file | |
| } | |
| _git_extras () | |
| { | |
| __gitcomp "--version update" | |
| } | |
| _git_feature () | |
| { | |
| __git_extras_workflow "feature" | |
| } | |
| _git_fetch () | |
| { | |
| case "$cur" in | |
| --recurse-submodules=*) | |
| __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "$__git_fetch_options"; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_remote_or_refspec | |
| } | |
| _git_format_patch () | |
| { | |
| case "$cur" in | |
| --thread=*) | |
| __gitcomp " | |
| deep shallow | |
| " "" "${cur##--thread=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "$__git_format_patch_options"; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| _git_fsck () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --tags --root --unreachable --cache --no-reflogs --full | |
| --strict --verbose --lost-found | |
| "; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_gc () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--prune --aggressive"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_gitk () | |
| { | |
| _gitk | |
| } | |
| _git_graft () | |
| { | |
| __gitcomp "$(__git_heads)" | |
| } | |
| _git_grep () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --cached | |
| --text --ignore-case --word-regexp --invert-match | |
| --full-name --line-number | |
| --extended-regexp --basic-regexp --fixed-strings | |
| --perl-regexp | |
| --files-with-matches --name-only | |
| --files-without-match | |
| --max-depth | |
| --count | |
| --and --or --not --all-match | |
| "; | |
| return | |
| ;; | |
| esac; | |
| case "$cword,$prev" in | |
| 2,* | *,-*) | |
| if test -r tags; then | |
| __gitcomp_nl "$(__git_match_ctag "$cur" tags)"; | |
| return; | |
| fi | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_help () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--all --info --man --web"; | |
| return | |
| ;; | |
| esac; | |
| __git_compute_all_commands; | |
| __gitcomp "$__git_all_commands $(__git_aliases) | |
| attributes cli core-tutorial cvs-migration | |
| diffcore gitk glossary hooks ignore modules | |
| namespaces repository-layout tutorial tutorial-2 | |
| workflows | |
| " | |
| } | |
| _git_ignore () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--global --local"; | |
| return | |
| ;; | |
| -*) | |
| __gitcomp "--global --local -g -l"; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_init () | |
| { | |
| case "$cur" in | |
| --shared=*) | |
| __gitcomp " | |
| false true umask group all world everybody | |
| " "" "${cur##--shared=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--quiet --bare --template= --shared --shared="; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_log () | |
| { | |
| __git_has_doubledash && return; | |
| local g="$(git rev-parse --git-dir 2>/dev/null)"; | |
| local merge=""; | |
| if [ -f "$g/MERGE_HEAD" ]; then | |
| merge="--merge"; | |
| fi; | |
| case "$cur" in | |
| --pretty=* | --format=*) | |
| __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) | |
| " "" "${cur#*=}"; | |
| return | |
| ;; | |
| --date=*) | |
| __gitcomp "$__git_log_date_formats" "" "${cur##--date=}"; | |
| return | |
| ;; | |
| --decorate=*) | |
| __gitcomp "long short" "" "${cur##--decorate=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| $__git_log_common_options | |
| $__git_log_shortlog_options | |
| $__git_log_gitk_options | |
| --root --topo-order --date-order --reverse | |
| --follow --full-diff | |
| --abbrev-commit --abbrev= | |
| --relative-date --date= | |
| --pretty= --format= --oneline | |
| --cherry-pick | |
| --graph | |
| --decorate --decorate= | |
| --walk-reflogs | |
| --parents --children | |
| $merge | |
| $__git_diff_common_options | |
| --pickaxe-all --pickaxe-regex | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| _git_ls_files () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--cached --deleted --modified --others --ignored | |
| --stage --directory --no-empty-directory --unmerged | |
| --killed --exclude= --exclude-from= | |
| --exclude-per-directory= --exclude-standard | |
| --error-unmatch --with-tree= --full-name | |
| --abbrev --ignored --exclude-per-directory | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_index_file "--cached" | |
| } | |
| _git_ls_remote () | |
| { | |
| __gitcomp_nl "$(__git_remotes)" | |
| } | |
| _git_ls_tree () | |
| { | |
| __git_complete_file | |
| } | |
| _git_merge () | |
| { | |
| __git_complete_strategy && return; | |
| case "$cur" in | |
| --*) | |
| __gitcomp "$__git_merge_options"; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_merge_base () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--octopus --independent --is-ancestor --fork-point"; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_mergetool () | |
| { | |
| case "$cur" in | |
| --tool=*) | |
| __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--tool="; | |
| return | |
| ;; | |
| esac | |
| } | |
| _git_mv () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--dry-run"; | |
| return | |
| ;; | |
| esac; | |
| if [ $(__git_count_arguments "mv") -gt 0 ]; then | |
| __git_complete_index_file "--cached --others --directory"; | |
| else | |
| __git_complete_index_file "--cached"; | |
| fi | |
| } | |
| _git_name_rev () | |
| { | |
| __gitcomp "--tags --all --stdin" | |
| } | |
| _git_notes () | |
| { | |
| local subcommands='add append copy edit list prune remove show'; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| case "$subcommand,$cur" in | |
| ,--*) | |
| __gitcomp '--ref' | |
| ;; | |
| ,*) | |
| case "$prev" in | |
| --ref) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| *) | |
| __gitcomp "$subcommands --ref" | |
| ;; | |
| esac | |
| ;; | |
| add,--reuse-message=* | append,--reuse-message=* | add,--reedit-message=* | append,--reedit-message=*) | |
| __gitcomp_nl "$(__git_refs)" "" "${cur#*=}" | |
| ;; | |
| add,--* | append,--*) | |
| __gitcomp '--file= --message= --reedit-message= | |
| --reuse-message=' | |
| ;; | |
| copy,--*) | |
| __gitcomp '--stdin' | |
| ;; | |
| prune,--*) | |
| __gitcomp '--dry-run --verbose' | |
| ;; | |
| prune,*) | |
| ;; | |
| *) | |
| case "$prev" in | |
| -m | -F) | |
| ;; | |
| *) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| } | |
| _git_pull () | |
| { | |
| __git_complete_strategy && return; | |
| case "$cur" in | |
| --recurse-submodules=*) | |
| __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --rebase --no-rebase | |
| $__git_merge_options | |
| $__git_fetch_options | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_remote_or_refspec | |
| } | |
| _git_push () | |
| { | |
| case "$prev" in | |
| --repo) | |
| __gitcomp_nl "$(__git_remotes)"; | |
| return | |
| ;; | |
| esac; | |
| case "$cur" in | |
| --repo=*) | |
| __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"; | |
| return | |
| ;; | |
| --recurse-submodules=*) | |
| __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --all --mirror --tags --dry-run --force --verbose | |
| --receive-pack= --repo= --set-upstream | |
| --recurse-submodules= | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_remote_or_refspec | |
| } | |
| _git_rebase () | |
| { | |
| local dir="$(__gitdir)"; | |
| if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then | |
| __gitcomp "--continue --skip --abort"; | |
| return; | |
| fi; | |
| __git_complete_strategy && return; | |
| case "$cur" in | |
| --whitespace=*) | |
| __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp " | |
| --onto --merge --strategy --interactive | |
| --preserve-merges --stat --no-stat | |
| --committer-date-is-author-date --ignore-date | |
| --ignore-whitespace --whitespace= | |
| --autosquash --fork-point --no-fork-point | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_refactor () | |
| { | |
| __git_extras_workflow "refactor" | |
| } | |
| _git_reflog () | |
| { | |
| local subcommands="show delete expire"; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| if [ -z "$subcommand" ]; then | |
| __gitcomp "$subcommands"; | |
| else | |
| __gitcomp_nl "$(__git_refs)"; | |
| fi | |
| } | |
| _git_remote () | |
| { | |
| local subcommands="add rename remove set-head set-branches set-url show prune update"; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| if [ -z "$subcommand" ]; then | |
| __gitcomp "$subcommands"; | |
| return; | |
| fi; | |
| case "$subcommand" in | |
| rename | remove | set-url | show | prune) | |
| __gitcomp_nl "$(__git_remotes)" | |
| ;; | |
| set-head | set-branches) | |
| __git_complete_remote_or_refspec | |
| ;; | |
| update) | |
| local i c='' IFS=' | |
| '; | |
| for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); | |
| do | |
| i="${i#remotes.}"; | |
| c="$c ${i/ */}"; | |
| done; | |
| __gitcomp "$c" | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| } | |
| _git_replace () | |
| { | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_reset () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--merge --mixed --hard --soft --patch"; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_revert () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--edit --mainline --no-edit --no-commit --signoff"; | |
| return | |
| ;; | |
| esac; | |
| __gitcomp_nl "$(__git_refs)" | |
| } | |
| _git_rm () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--cached --dry-run --ignore-unmatch --quiet"; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_index_file "--cached" | |
| } | |
| _git_send_email () | |
| { | |
| case "$cur" in | |
| --confirm=*) | |
| __gitcomp " | |
| $__git_send_email_confirm_options | |
| " "" "${cur##--confirm=}"; | |
| return | |
| ;; | |
| --suppress-cc=*) | |
| __gitcomp " | |
| $__git_send_email_suppresscc_options | |
| " "" "${cur##--suppress-cc=}"; | |
| return | |
| ;; | |
| --smtp-encryption=*) | |
| __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}"; | |
| return | |
| ;; | |
| --thread=*) | |
| __gitcomp " | |
| deep shallow | |
| " "" "${cur##--thread=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to | |
| --compose --confirm= --dry-run --envelope-sender | |
| --from --identity | |
| --in-reply-to --no-chain-reply-to --no-signed-off-by-cc | |
| --no-suppress-from --no-thread --quiet | |
| --signed-off-by-cc --smtp-pass --smtp-server | |
| --smtp-server-port --smtp-encryption= --smtp-user | |
| --subject --suppress-cc= --suppress-from --thread --to | |
| --validate --no-validate | |
| $__git_format_patch_options"; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| _git_shortlog () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| $__git_log_common_options | |
| $__git_log_shortlog_options | |
| --numbered --summary | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| _git_show () | |
| { | |
| __git_has_doubledash && return; | |
| case "$cur" in | |
| --pretty=* | --format=*) | |
| __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) | |
| " "" "${cur#*=}"; | |
| return | |
| ;; | |
| --diff-algorithm=*) | |
| __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"; | |
| return | |
| ;; | |
| --*) | |
| __gitcomp "--pretty= --format= --abbrev-commit --oneline | |
| $__git_diff_common_options | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist_file | |
| } | |
| _git_show_branch () | |
| { | |
| case "$cur" in | |
| --*) | |
| __gitcomp " | |
| --all --remotes --topo-order --current --more= | |
| --list --independent --merge-base --no-name | |
| --color --no-color | |
| --sha1-name --sparse --topics --reflog | |
| "; | |
| return | |
| ;; | |
| esac; | |
| __git_complete_revlist | |
| } | |
| _git_squash () | |
| { | |
| __gitcomp "$(__git_heads)" | |
| } | |
| _git_stage () | |
| { | |
| _git_add | |
| } | |
| _git_stash () | |
| { | |
| local save_opts='--keep-index --no-keep-index --quiet --patch'; | |
| local subcommands='save list show apply clear drop pop create branch'; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| if [ -z "$subcommand" ]; then | |
| case "$cur" in | |
| --*) | |
| __gitcomp "$save_opts" | |
| ;; | |
| *) | |
| if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then | |
| __gitcomp "$subcommands"; | |
| fi | |
| ;; | |
| esac; | |
| else | |
| case "$subcommand,$cur" in | |
| save,--*) | |
| __gitcomp "$save_opts" | |
| ;; | |
| apply,--* | pop,--*) | |
| __gitcomp "--index --quiet" | |
| ;; | |
| show,--* | drop,--* | branch,--*) | |
| ;; | |
| show,* | apply,* | drop,* | pop,* | branch,*) | |
| __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list | sed -n -e 's/:.*//p')" | |
| ;; | |
| *) | |
| ;; | |
| esac; | |
| fi | |
| } | |
| _git_submodule () | |
| { | |
| __git_has_doubledash && return; | |
| local subcommands="add status init deinit update summary foreach sync"; | |
| if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then | |
| case "$cur" in | |
| --*) | |
| __gitcomp "--quiet --cached" | |
| ;; | |
| *) | |
| __gitcomp "$subcommands" | |
| ;; | |
| esac; | |
| return; | |
| fi | |
| } | |
| _git_svn () | |
| { | |
| local subcommands=" | |
| init fetch clone rebase dcommit log find-rev | |
| set-tree commit-diff info create-ignore propget | |
| proplist show-ignore show-externals branch tag blame | |
| migrate mkdirs reset gc | |
| "; | |
| local subcommand="$(__git_find_on_cmdline "$subcommands")"; | |
| if [ -z "$subcommand" ]; then | |
| __gitcomp "$subcommands"; | |
| else | |
| local remote_opts="--username= --config-dir= --no-auth-cache"; | |
| local fc_opts=" | |
| --follow-parent --authors-file= --repack= | |
| --no-metadata --use-svm-props --use-svnsync-props | |
| --log-window-size= --no-checkout --quiet | |
| --repack-flags --use-log-author --localtime | |
| --ignore-paths= --include-paths= $remote_opts | |
| "; | |
| local init_opts=" | |
| --template= --shared= --trunk= --tags= | |
| --branches= --stdlayout --minimize-url | |
| --no-metadata --use-svm-props --use-svnsync-props | |
| --rewrite-root= --prefix= --use-log-author | |
| --add-author-from $remote_opts | |
| "; | |
| local cmt_opts=" | |
| --edit --rmdir --find-copies-harder --copy-similarity= | |
| "; | |
| case "$subcommand,$cur" in | |
| fetch,--*) | |
| __gitcomp "--revision= --fetch-all $fc_opts" | |
| ;; | |
| clone,--*) | |
| __gitcomp "--revision= $fc_opts $init_opts" | |
| ;; | |
| init,--*) | |
| __gitcomp "$init_opts" | |
| ;; | |
| dcommit,--*) | |
| __gitcomp " | |
| --merge --strategy= --verbose --dry-run | |
| --fetch-all --no-rebase --commit-url | |
| --revision --interactive $cmt_opts $fc_opts | |
| " | |
| ;; | |
| set-tree,--*) | |
| __gitcomp "--stdin $cmt_opts $fc_opts" | |
| ;; | |
| create-ignore,--* | propget,--* | proplist,--* | show-ignore,--* | show-externals,--* | mkdirs,--*) | |
| __gitcomp "--revision=" | |
| ;; | |
| log,--*) | |
| __gitcomp " | |
| --limit= --revision= --verbose --incremental | |
| --oneline --show-commit --non-recursive | |
| --authors-file= --color | |
| " | |
| ;; | |
| rebase,--*) | |
| __gitcomp " | |
| --merge --verbose --strategy= --local | |
| --fetch-all --dry-run $fc_opts | |
| " | |
| ;; | |
| commit-diff,--*) | |
| __gitcomp "--message= --file= --revision= $cmt_opts" | |
| ;; | |
| info,--*) | |
| __gitcomp "--url" | |
| ;; | |
| branch,--*) | |
| __gitcomp "--dry-run --message --tag" | |
| ;; | |
| tag,--*) | |
| __gitcomp "--dry-run --message" | |
| ;; | |
| blame,--*) | |
| __gitcomp "--git-format" | |
| ;; | |
| migrate,--*) | |
| __gitcomp " | |
| --config-dir= --ignore-paths= --minimize | |
| --no-auth-cache --username= | |
| " | |
| ;; | |
| reset,--*) | |
| __gitcomp "--revision= --parent" | |
| ;; | |
| *) | |
| ;; | |
| esac; | |
| fi | |
| } | |
| _git_tag () | |
| { | |
| local i c=1 f=0; | |
| while [ $c -lt $cword ]; do | |
| i="${words[c]}"; | |
| case "$i" in | |
| -d | -v) | |
| __gitcomp_nl "$(__git_tags)"; | |
| return | |
| ;; | |
| -f) | |
| f=1 | |
| ;; | |
| esac; | |
| ((c++)); | |
| done; | |
| case "$prev" in | |
| -m | -F) | |
| ;; | |
| -* | tag) | |
| if [ $f = 1 ]; then | |
| __gitcomp_nl "$(__git_tags)"; | |
| fi | |
| ;; | |
| *) | |
| __gitcomp_nl "$(__git_refs)" | |
| ;; | |
| esac | |
| } | |
| _git_undo () | |
| { | |
| __gitcomp "--hard --soft -h -s" | |
| } | |
| _git_whatchanged () | |
| { | |
| _git_log | |
| } | |
| _gitk () | |
| { | |
| __git_wrap__gitk_main | |
| } | |
| _gpg () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -s | --sign | --clearsign | --decrypt-files | --load-extension) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --export | --sign-key | --lsignkey | --nrsignkey | --nrlsignkey | --editkey) | |
| COMPREPLY=($( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -r | --recipient) | |
| COMPREPLY=($( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )); | |
| if [ -e ~/.gnupg/gpg.conf ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf )" -- "$cur")); | |
| fi; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '$(gpg --dump-options)' -- "$cur" )); | |
| fi | |
| } | |
| _gpg2 () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| --homedir) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -s | --sign | --clearsign | --options | --decrypt) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --export | --sign-key | --lsign-key | --nrsign-key | --nrlsign-key | --edit-key) | |
| COMPREPLY=($( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -r | --recipient) | |
| COMPREPLY=($( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )); | |
| if [ -e ~/.gnupg/gpg.conf ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf)" -- "$cur")); | |
| fi; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '$(gpg2 --dump-options)' -- "$cur" )); | |
| fi | |
| } | |
| _gzip () | |
| { | |
| local cur prev xspec helpopts; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| helpopts=`_parse_help ${COMP_WORDS[0]}`; | |
| case $prev in | |
| -b | --blocksize | -p | --processes | -S | --suffix | -h | --help | -V | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W "$helpopts -1 -2 -3 -4 -5 -6 -7 -8 -9" -- "$cur" )); | |
| return 0; | |
| fi; | |
| local IFS=' | |
| '; | |
| xspec="*.@(gz|t[ag]z)"; | |
| if [[ "$prev" == --* ]]; then | |
| [[ "$prev" == --decompress || "$prev" == --list || "$prev" == --test ]] && xspec="!"$xspec; | |
| [[ "$prev" == --force ]] && xspec=; | |
| else | |
| if [[ "$prev" == -* ]]; then | |
| [[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec; | |
| [[ "$prev" == -*f* ]] && xspec=; | |
| else | |
| if [[ "$prev" == '>' || "$prev" == '>>' ]]; then | |
| xspec=; | |
| else | |
| if [ "$prev" = '<' ]; then | |
| xspec=; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| _expand || return 0; | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -X "$xspec" -- "$cur" ) $( compgen -d -- "$cur" )) | |
| } | |
| _heimdal_encodings () | |
| { | |
| COMPREPLY=($( compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5 \ | |
| des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 \ | |
| aes256-cts-hmac-sha1-96' -- "$cur" )) | |
| } | |
| _heimdal_principals () | |
| { | |
| COMPREPLY=($( compgen -W "$( kadmin -l dump 2>/dev/null | awk '{print $1}' )" -- "$cur" )) | |
| } | |
| _heimdal_realms () | |
| { | |
| COMPREPLY=($( compgen -W "( kadmin -l dump 2>/dev/null | awk '{print $1}' | awk -F@ '{print $2}' )" -- "$cur" )) | |
| } | |
| _hg () | |
| { | |
| local cur prev cmd cmd_index opts i aliashg; | |
| local global_args='--cwd|-R|--repository'; | |
| local hg="$1"; | |
| local canonical=0; | |
| aliashg=$(alias $hg 2>/dev/null); | |
| if [[ -n "$aliashg" ]]; then | |
| aliashg=${aliashg#"alias $hg='"}; | |
| aliashg=${aliashg%"'"}; | |
| hg=$aliashg; | |
| fi; | |
| COMPREPLY=(); | |
| cur="$2"; | |
| prev="$3"; | |
| for ((i=1; $i<=$COMP_CWORD; i++)) | |
| do | |
| if [[ ${COMP_WORDS[i]} != -* ]]; then | |
| if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then | |
| cmd="${COMP_WORDS[i]}"; | |
| cmd_index=$i; | |
| break; | |
| fi; | |
| fi; | |
| done; | |
| if [[ "$cur" == -* ]]; then | |
| if [ "$(type -t "_hg_opt_$cmd")" = function ] && "_hg_opt_$cmd"; then | |
| _hg_fix_wordlist; | |
| return; | |
| fi; | |
| opts=$(_hg_cmd debugcomplete --options "$cmd"); | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur")); | |
| _hg_fix_wordlist; | |
| return; | |
| fi; | |
| case "$prev" in | |
| -R | --repository) | |
| _hg_paths; | |
| _hg_repos; | |
| _hg_fix_wordlist; | |
| return | |
| ;; | |
| --cwd) | |
| _hg_fix_wordlist; | |
| return | |
| ;; | |
| esac; | |
| if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then | |
| _hg_commands; | |
| _hg_fix_wordlist; | |
| return; | |
| fi; | |
| local help; | |
| if _hg_command_specific; then | |
| _hg_fix_wordlist; | |
| return; | |
| fi; | |
| help=$(_hg_cmd help "$cmd"); | |
| if [ $? -ne 0 ]; then | |
| return; | |
| fi; | |
| cmd=${help#hg }; | |
| cmd=${cmd%%[' | |
| ']*}; | |
| canonical=1; | |
| _hg_command_specific; | |
| _hg_fix_wordlist | |
| } | |
| _hg_bookmarks () | |
| { | |
| local bookmarks="$(_hg_cmd bookmarks -q)"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$bookmarks' -- "$cur")) | |
| } | |
| _hg_branches () | |
| { | |
| local branches="$(_hg_cmd branches -q)"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur")) | |
| } | |
| _hg_cmd () | |
| { | |
| HGPLAIN=1 "$hg" "$@" 2> /dev/null | |
| } | |
| _hg_cmd_bisect () | |
| { | |
| local i subcmd; | |
| for ((i=cmd_index+1; i<=COMP_CWORD; i++)) | |
| do | |
| if [[ ${COMP_WORDS[i]} != -* ]]; then | |
| if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then | |
| subcmd="${COMP_WORDS[i]}"; | |
| break; | |
| fi; | |
| fi; | |
| done; | |
| if [ -z "$subcmd" ] || [ $COMP_CWORD -eq $i ] || [ "$subcmd" = help ]; then | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W 'bad good help init next reset' -- "$cur")); | |
| return; | |
| fi; | |
| case "$subcmd" in | |
| good | bad) | |
| _hg_labels | |
| ;; | |
| esac; | |
| return | |
| } | |
| _hg_cmd_bookmarks () | |
| { | |
| _hg_bookmarks; | |
| return | |
| } | |
| _hg_cmd_email () | |
| { | |
| case "$prev" in | |
| -c | --cc | -t | --to | -f | --from | --bcc) | |
| if [ "$(type -t _hg_emails)" = function ]; then | |
| local arg=to; | |
| if [[ "$prev" == @(-f|--from) ]]; then | |
| arg=from; | |
| fi; | |
| local addresses=$(_hg_emails $arg); | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$addresses' -- "$cur")); | |
| fi; | |
| return | |
| ;; | |
| -m | --mbox) | |
| return | |
| ;; | |
| -s | --subject) | |
| return | |
| ;; | |
| esac; | |
| _hg_labels; | |
| return | |
| } | |
| _hg_cmd_qclone () | |
| { | |
| local count=$(_hg_count_non_option); | |
| if [ $count = 1 ]; then | |
| _hg_paths; | |
| fi; | |
| _hg_repos | |
| } | |
| _hg_cmd_qcommit () | |
| { | |
| local root=$(_hg_cmd root); | |
| local files=$(cd "$root/.hg/patches" && _hg_cmd status -nmar); | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur")) | |
| } | |
| _hg_cmd_qdelete () | |
| { | |
| local qcmd=qunapplied; | |
| if [[ "$prev" = @(-r|--rev) ]]; then | |
| qcmd=qapplied; | |
| fi; | |
| _hg_ext_mq_patchlist $qcmd | |
| } | |
| _hg_cmd_qfinish () | |
| { | |
| if [[ "$prev" = @(-a|--applied) ]]; then | |
| return; | |
| fi; | |
| _hg_ext_mq_patchlist qapplied | |
| } | |
| _hg_cmd_qfold () | |
| { | |
| _hg_ext_mq_patchlist qunapplied | |
| } | |
| _hg_cmd_qgoto () | |
| { | |
| if [[ "$prev" = @(-n|--name) ]]; then | |
| _hg_ext_mq_queues; | |
| return; | |
| fi; | |
| _hg_ext_mq_patchlist qseries | |
| } | |
| _hg_cmd_qguard () | |
| { | |
| local prefix=''; | |
| if [[ "$cur" == +* ]]; then | |
| prefix=+; | |
| else | |
| if [[ "$cur" == -* ]]; then | |
| prefix=-; | |
| fi; | |
| fi; | |
| local ncur=${cur#[-+]}; | |
| if ! [ "$prefix" ]; then | |
| _hg_ext_mq_patchlist qseries; | |
| return; | |
| fi; | |
| local guards=$(_hg_ext_mq_guards); | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -P $prefix -W '$guards' -- "$ncur")) | |
| } | |
| _hg_cmd_qheader () | |
| { | |
| _hg_ext_mq_patchlist qseries | |
| } | |
| _hg_cmd_qpop () | |
| { | |
| if [[ "$prev" = @(-n|--name) ]]; then | |
| _hg_ext_mq_queues; | |
| return; | |
| fi; | |
| _hg_ext_mq_patchlist qapplied | |
| } | |
| _hg_cmd_qpush () | |
| { | |
| if [[ "$prev" = @(-n|--name) ]]; then | |
| _hg_ext_mq_queues; | |
| return; | |
| fi; | |
| _hg_ext_mq_patchlist qunapplied | |
| } | |
| _hg_cmd_qqueue () | |
| { | |
| local q; | |
| local queues; | |
| local opts="--list --create --rename --delete --purge"; | |
| queues=$( _hg_cmd qqueue --quiet ); | |
| COMPREPLY=($( compgen -W "${opts} ${queues}" "${cur}" )) | |
| } | |
| _hg_cmd_qrename () | |
| { | |
| _hg_ext_mq_patchlist qseries | |
| } | |
| _hg_cmd_qsave () | |
| { | |
| if [[ "$prev" = @(-n|--name) ]]; then | |
| _hg_ext_mq_queues; | |
| return; | |
| fi | |
| } | |
| _hg_cmd_qselect () | |
| { | |
| local guards=$(_hg_ext_mq_guards); | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$guards' -- "$cur")) | |
| } | |
| _hg_cmd_rebase () | |
| { | |
| if [[ "$prev" = @(-s|--source|-d|--dest|-b|--base|-r|--rev) ]]; then | |
| _hg_labels; | |
| return; | |
| fi | |
| } | |
| _hg_cmd_shelve () | |
| { | |
| if [[ "$prev" = @(-d|--delete) ]]; then | |
| _hg_shelves; | |
| else | |
| _hg_status "mard"; | |
| fi | |
| } | |
| _hg_cmd_sign () | |
| { | |
| _hg_labels | |
| } | |
| _hg_cmd_strip () | |
| { | |
| if [[ "$prev" = @(-B|--bookmark) ]]; then | |
| _hg_bookmarks; | |
| return; | |
| fi; | |
| _hg_labels | |
| } | |
| _hg_cmd_transplant () | |
| { | |
| case "$prev" in | |
| -s | --source) | |
| _hg_paths; | |
| _hg_repos; | |
| return | |
| ;; | |
| --filter) | |
| return | |
| ;; | |
| esac; | |
| _hg_labels; | |
| return | |
| } | |
| _hg_cmd_unshelve () | |
| { | |
| _hg_shelves | |
| } | |
| _hg_command_specific () | |
| { | |
| if [ "$(type -t "_hg_cmd_$cmd")" = function ]; then | |
| "_hg_cmd_$cmd"; | |
| return 0; | |
| fi; | |
| if [ "$cmd" != status ]; then | |
| case "$prev" in | |
| -r | --rev) | |
| if [[ $canonical = 1 || status != "$cmd"* ]]; then | |
| _hg_labels; | |
| return 0; | |
| fi; | |
| return 1 | |
| ;; | |
| -B | --bookmark) | |
| if [[ $canonical = 1 || status != "$cmd"* ]]; then | |
| _hg_bookmarks; | |
| return 0; | |
| fi; | |
| return 1 | |
| ;; | |
| -b | --branch) | |
| if [[ $canonical = 1 || status != "$cmd"* ]]; then | |
| _hg_branches; | |
| return 0; | |
| fi; | |
| return 1 | |
| ;; | |
| esac; | |
| fi; | |
| local aliascmd=$(_hg_cmd showconfig alias.$cmd | awk '{print $1}'); | |
| [ -n "$aliascmd" ] && cmd=$aliascmd; | |
| case "$cmd" in | |
| help) | |
| _hg_commands | |
| ;; | |
| export) | |
| if _hg_ext_mq_patchlist qapplied && [ "${COMPREPLY[*]}" ]; then | |
| return 0; | |
| fi; | |
| _hg_labels | |
| ;; | |
| manifest | update | up | checkout | co) | |
| _hg_labels | |
| ;; | |
| pull | push | outgoing | incoming) | |
| _hg_paths; | |
| _hg_repos | |
| ;; | |
| paths) | |
| _hg_paths | |
| ;; | |
| add) | |
| _hg_status "u" | |
| ;; | |
| merge) | |
| _hg_labels | |
| ;; | |
| commit | ci | record) | |
| _hg_status "mar" | |
| ;; | |
| remove | rm) | |
| _hg_debugpathcomplete -n | |
| ;; | |
| forget) | |
| _hg_debugpathcomplete -fa | |
| ;; | |
| diff) | |
| _hg_status "mar" | |
| ;; | |
| revert) | |
| _hg_debugpathcomplete | |
| ;; | |
| clone) | |
| local count=$(_hg_count_non_option); | |
| if [ $count = 1 ]; then | |
| _hg_paths; | |
| fi; | |
| _hg_repos | |
| ;; | |
| debugindex | debugindexdot) | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.i" -- "$cur")) | |
| ;; | |
| debugdata) | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.d" -- "$cur")) | |
| ;; | |
| *) | |
| return 1 | |
| ;; | |
| esac; | |
| return 0 | |
| } | |
| _hg_commands () | |
| { | |
| local commands; | |
| commands="$(HGPLAINEXCEPT=alias _hg_cmd debugcomplete "$cur")" || commands=""; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur")) | |
| } | |
| _hg_count_non_option () | |
| { | |
| local i count=0; | |
| local filters="$1"; | |
| for ((i=1; $i<=$COMP_CWORD; i++)) | |
| do | |
| if [[ "${COMP_WORDS[i]}" != -* ]]; then | |
| if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then | |
| continue; | |
| fi; | |
| count=$(($count + 1)); | |
| fi; | |
| done; | |
| echo $(($count - 1)) | |
| } | |
| _hg_debugpathcomplete () | |
| { | |
| local files="$(_hg_cmd debugpathcomplete $1 "$cur")"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur")) | |
| } | |
| _hg_ext_mq_guards () | |
| { | |
| _hg_cmd qselect --series | sed -e 's/^.//' | |
| } | |
| _hg_ext_mq_patchlist () | |
| { | |
| local patches; | |
| patches=$(_hg_cmd $1); | |
| if [ $? -eq 0 ] && [ "$patches" ]; then | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$patches' -- "$cur")); | |
| return 0; | |
| fi; | |
| return 1 | |
| } | |
| _hg_ext_mq_queues () | |
| { | |
| local root=$(_hg_cmd root); | |
| local n; | |
| for n in $(cd "$root"/.hg && compgen -d -- "$cur"); | |
| do | |
| if [ "$n" != patches ] && [ -e "$root/.hg/$n/series" ]; then | |
| COMPREPLY=(${COMPREPLY[@]:-} "$n"); | |
| fi; | |
| done | |
| } | |
| _hg_fix_wordlist () | |
| { | |
| local LASTCHAR=' '; | |
| if [ ${#COMPREPLY[@]} = 1 ]; then | |
| [ -d "$COMPREPLY" ] && LASTCHAR=/; | |
| COMPREPLY=$(printf %q%s "$COMPREPLY" "$LASTCHAR"); | |
| else | |
| for ((i=0; i < ${#COMPREPLY[@]}; i++)) | |
| do | |
| [ -d "${COMPREPLY[$i]}" ] && COMPREPLY[$i]=${COMPREPLY[$i]}/; | |
| done; | |
| fi | |
| } | |
| _hg_labels () | |
| { | |
| local labels="$(_hg_cmd debuglabelcomplete "$cur")"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$labels' -- "$cur")) | |
| } | |
| _hg_opt_qguard () | |
| { | |
| local i; | |
| for ((i=cmd_index+1; i<=COMP_CWORD; i++)) | |
| do | |
| if [[ ${COMP_WORDS[i]} != -* ]]; then | |
| if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then | |
| _hg_cmd_qguard; | |
| return 0; | |
| fi; | |
| else | |
| if [ "${COMP_WORDS[i]}" = -- ]; then | |
| _hg_cmd_qguard; | |
| return 0; | |
| fi; | |
| fi; | |
| done; | |
| return 1 | |
| } | |
| _hg_paths () | |
| { | |
| local paths="$(_hg_cmd paths -q)"; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$paths' -- "$cur")) | |
| } | |
| _hg_repos () | |
| { | |
| local i; | |
| for i in $(compgen -d -- "$cur"); | |
| do | |
| test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i"); | |
| done | |
| } | |
| _hg_shelves () | |
| { | |
| local shelves="$(_hg_cmd shelve -ql)"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$shelves' -- "$cur")) | |
| } | |
| _hg_status () | |
| { | |
| local files="$(_hg_cmd status -n$1 "glob:$cur**")"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur")) | |
| } | |
| _iconv () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -'?' | --help | --usage | -V | --version | --unicode-subst | --byte-subst | --widechar-subst) | |
| return 0 | |
| ;; | |
| -f | --from-code | -t | --to-code) | |
| COMPREPLY=($( compgen -W '$( iconv -l | \ | |
| sed -e "s@/*\$@@" -e "s/[,()]//g" )' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -o | --output) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" = -* ]]; then | |
| COMPREPLY=($( compgen -W '--from-code --to-code --list -c | |
| --unicode-subst --byte-subst --widechar-subst --output --silent | |
| --verbose --help --usage --version' -- "$cur" )); | |
| return 0; | |
| fi | |
| } | |
| _id () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a -g --group -G --groups -n --name\ | |
| -r --real -u --user --help --version' -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -u "$cur" )); | |
| fi | |
| } | |
| _identify () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-alpha -antialias -authenticate \ | |
| -channel -colorspace -crop -debug -define -density \ | |
| -depth -extract -format -fuzz -gamma -help -interlace \ | |
| -interpolate -limit -list -log -monitor -ping -quiet \ | |
| -regard-warnings -respect-parenthesis \ | |
| -sampling-factor -seed -set -size -strip -units \ | |
| -verbose -version -virtual-pixel' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _import () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-adjoin -annotate -border -channel \ | |
| -colors -colorspace -comment -compress -crop -debug \ | |
| -define -delay -density -depth -descend -display \ | |
| -dispose -dither -encipher -encoding -endian -filter \ | |
| -format -frame -geometry -gravity -help -identify \ | |
| -interlace -interpolate -label -limit -list -log \ | |
| -monitor -monochrome -negate -page -pause -pointsize \ | |
| -quality -quantize -quiet -regard-warnings -repage \ | |
| -resize -respect-parenthesis -rotate -sampling-factor \ | |
| -scene -screen -seed -set -silent -snaps -strip \ | |
| -thumbnail -transparent -transparent-color -treedepth \ | |
| -trim -type -verbose -version -virtual-pixel \ | |
| -window' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _info () | |
| { | |
| local cur i infopath; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _expand || return 0; | |
| if [[ "$cur" == */* ]]; then | |
| _filedir; | |
| return 0; | |
| fi; | |
| infopath='/usr/share/info'; | |
| if [ "${INFOPATH: -1:1}" == ':' ]; then | |
| infopath=${INFOPATH}${infopath}; | |
| else | |
| if [ ${INFOPATH:+set} ]; then | |
| infopath=$INFOPATH; | |
| fi; | |
| fi; | |
| infopath=$infopath:; | |
| if [ -n "$cur" ]; then | |
| infopath="${infopath//://$cur* }"; | |
| else | |
| infopath="${infopath//:// }"; | |
| fi; | |
| COMPREPLY=($( eval command ls "$infopath" 2>/dev/null )); | |
| COMPREPLY=(${COMPREPLY[@]##*/?(:)}); | |
| for ((i=0 ; i < ${#COMPREPLY[@]} ; ++i )) | |
| do | |
| if [ "${COMPREPLY[$i]}" == 'dir' ]; then | |
| unset COMPREPLY[$i]; | |
| fi; | |
| done; | |
| COMPREPLY=(${COMPREPLY[@]%.@(gz|bz2|xz|lzma)}); | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" )); | |
| return 0 | |
| } | |
| _installed_modules () | |
| { | |
| COMPREPLY=($( compgen -W "$( PATH="$PATH:/sbin" lsmod | awk '{if (NR != 1) print $1}' )" -- "$1" )) | |
| } | |
| _ipmitool () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h | -V | -p | -U | -e | -k | -y | -P | -m | -b | -t | -B | -T | -l) | |
| return 0 | |
| ;; | |
| -d) | |
| COMPREPLY=($( compgen -W "$( command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* 2>/dev/null | sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p' )" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -I) | |
| COMPREPLY=($( compgen -W "$( $1 -h 2>&1 | sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' -ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p' )" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -H) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -f | -S | -O) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -C) | |
| COMPREPLY=($( compgen -W '0 1 2 3 4 5 6 7 8 9 10 11 12 13 14' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -L) | |
| COMPREPLY=($( compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -A) | |
| COMPREPLY=($( compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -o) | |
| COMPREPLY=($( compgen -W "$( $1 -o list 2>&1 | awk '/^[ \t]+/ { print $1 }' ) list" -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-h -V -v -c -d -I -H -p -U -f -S -a \ | |
| -e -C -k -y -L -A -P -E -K -m -b -t -B -T -l -o -O' -- "$cur" )); | |
| return 0; | |
| fi; | |
| local cmds=(raw i2c spd lan chassis power event mc sdr sensor fru gendev sel pef sol tsol isol user channel session sunoem kontronoem picmg fwum firewall shell exec set hpm ekanalyzer); | |
| local i c cmd subcmd; | |
| for ((i=1; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| [[ -n $cmd ]] && subcmd=${COMP_WORDS[i]} && break; | |
| for c in ${cmds[@]}; | |
| do | |
| [ ${COMP_WORDS[i]} = $c ] && cmd=$c && break; | |
| done; | |
| done; | |
| if [ -z "$cmd" ]; then | |
| COMPREPLY=($( compgen -W '${cmds[@]}' -- "$cur" )); | |
| return 0; | |
| fi; | |
| case $cmd in | |
| shell) | |
| ;; | |
| exec) | |
| _filedir | |
| ;; | |
| chassis | power | kontronoem | fwum) | |
| _ipmitool_singleline_help $1 $cmd | |
| ;; | |
| lan) | |
| case $subcmd in | |
| print | set) | |
| ;; | |
| alert) | |
| [ "$prev" = alert ] && COMPREPLY=($( compgen -W 'print set' -- "$cur" )) | |
| ;; | |
| stats) | |
| [ "$prev" = stats ] && COMPREPLY=($( compgen -W 'print set' -- "$cur" )) | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W 'print set alert stats' -- "$cur" )) | |
| ;; | |
| esac | |
| ;; | |
| sdr) | |
| case $subcmd in | |
| get | info | type | list | entity) | |
| ;; | |
| elist) | |
| COMPREPLY=($( compgen -W 'all full compact event mclog fru | |
| generic' -- "$cur" )) | |
| ;; | |
| dump) | |
| _filedir | |
| ;; | |
| fill) | |
| case $prev in | |
| fill) | |
| COMPREPLY=($( compgen -W 'sensors file' -- "$cur" )) | |
| ;; | |
| file) | |
| _filedir | |
| ;; | |
| esac | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W 'get info type list elist entity | |
| dump fill' -- "$cur" )) | |
| ;; | |
| esac | |
| ;; | |
| sensor) | |
| case $subcmd in | |
| list | get | thresh) | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W 'list get thresh' -- "$cur" )) | |
| ;; | |
| esac | |
| ;; | |
| sel) | |
| case $subcmd in | |
| info | clear | list | elist | delete) | |
| ;; | |
| add | save | writeraw | readraw) | |
| _filedir | |
| ;; | |
| time) | |
| [ "$prev" = time ] && COMPREPLY=($( compgen -W 'get set' -- "$cur" )) | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W 'info clear list elist delete add | |
| get save writeraw readraw time' -- "$cur" )) | |
| ;; | |
| esac | |
| ;; | |
| user) | |
| case $subcmd in | |
| summary | list | disable | enable | priv | test) | |
| ;; | |
| set) | |
| [ "$prev" = set ] && COMPREPLY=($( compgen -W 'name password' -- "$cur" )) | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W 'summary list set disable enable | |
| priv test' -- "$cur" )) | |
| ;; | |
| esac | |
| ;; | |
| set) | |
| [ "$prev" = set ] && COMPREPLY=($( compgen -W 'hostname username password privlvl | |
| authtype localaddr targetaddr port csv verbose' -- "$cur" )) | |
| ;; | |
| esac | |
| } | |
| _ipmitool_singleline_help () | |
| { | |
| COMPREPLY=($( compgen -W "$( $1 $2 2>&1 | sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p' )" -- "$cur" )) | |
| } | |
| _isql () | |
| { | |
| local cur; | |
| _get_comp_words_by_ref cur; | |
| [ -f "$ODBCINI" ] && COMPREPLY=($( command grep \\["$cur" "$ODBCINI" | tr -d \\[\\] )) | |
| } | |
| _jar () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [ $COMP_CWORD = 1 ]; then | |
| COMPREPLY=($( compgen -W 'c t x u' -- "$cur" )); | |
| return 0; | |
| fi; | |
| case ${COMP_WORDS[1]} in | |
| *c*f) | |
| _filedir | |
| ;; | |
| *f) | |
| _filedir '@([ejw]ar|zip|apk)' | |
| ;; | |
| *) | |
| _filedir | |
| ;; | |
| esac | |
| } | |
| _jarsigner () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -keystore) | |
| COMPREPLY=($( compgen -W 'NONE' -- "$cur" )); | |
| _filedir '@(jks|ks|p12|pfx)'; | |
| return 0 | |
| ;; | |
| -storepass | -keypass | -sigfile | -digestalg | -sigalg | -tsacert | -altsigner | -altsignerpath | -providerName | -providerClass | -providerArg) | |
| return 0 | |
| ;; | |
| -storetype) | |
| COMPREPLY=($( compgen -W 'JKS PKCS11 PKCS12' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -signedjar) | |
| _filedir jar; | |
| return 0 | |
| ;; | |
| -tsa) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| local i jar=false; | |
| for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == *.jar && "${COMP_WORDS[i-1]}" != -signedjar ]]; then | |
| jar=true; | |
| break; | |
| fi; | |
| done; | |
| if ! $jar; then | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-keystore -storepass -storetype \ | |
| -keypass -sigfile -signedjar -digestalg -sigalg -verify \ | |
| -verbose -certs -tsa -tsacert -altsigner -altsignerpath \ | |
| -protected -providerName -providerClass -providerArg' -- "$cur" )); | |
| fi; | |
| _filedir jar; | |
| fi | |
| } | |
| _java () | |
| { | |
| local cur prev words cword i; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev words cword; | |
| for ((i=1; i < $cword; i++)) | |
| do | |
| case ${words[$i]} in | |
| -cp | -classpath) | |
| ((i++)) | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| done; | |
| case $cur in | |
| -verbose:*) | |
| COMPREPLY=($( compgen -W 'class gc jni' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -javaagent:*) | |
| cur=${cur#*:}; | |
| _filedir '@(jar|zip)'; | |
| return 0 | |
| ;; | |
| -agentpath:*) | |
| cur=${cur#*:}; | |
| _filedir so; | |
| return 0 | |
| ;; | |
| -splash:*) | |
| cur=${cur#*:}; | |
| _filedir '@(gif|jp?(e)g|png)'; | |
| return 0 | |
| ;; | |
| -Xbootclasspath*:*) | |
| _java_path; | |
| return 0 | |
| ;; | |
| -Xcheck:*) | |
| COMPREPLY=($( compgen -W 'jni' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -Xgc:*) | |
| COMPREPLY=($( compgen -W 'singlecon gencon singlepar genpar' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -Xgcprio:*) | |
| COMPREPLY=($( compgen -W 'throughput pausetime deterministic' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -Xloggc:* | -Xverboselog:*) | |
| cur=${cur#*:}; | |
| _filedir; | |
| return 0 | |
| ;; | |
| -Xshare:*) | |
| COMPREPLY=($( compgen -W 'auto off on' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -Xverbose:*) | |
| COMPREPLY=($( compgen -W 'memory load jni cpuinfo codegen opt | |
| gcpause gcreport' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -Xverify:*) | |
| COMPREPLY=($( compgen -W 'all none remote' -- "${cur#*:}" )); | |
| return 0 | |
| ;; | |
| -D* | -*:*) | |
| return 0 | |
| ;; | |
| esac; | |
| case $prev in | |
| -cp | -classpath) | |
| _java_path; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-client -server -agentlib: -agentpath: | |
| -classpath -D -d32 -d64 -enableassertions -disableassertions | |
| -enablesystemassertions -disablesystemassertions -jar -javaagent: | |
| -verbose -verbose -version -showversion -help -X' -- "$cur" )); | |
| else | |
| if [[ "$prev" == -jar ]]; then | |
| _filedir jar; | |
| else | |
| _java_classes; | |
| fi; | |
| fi; | |
| [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == -*[:=] ]] && type compopt >&/dev/null && compopt -o nospace; | |
| __ltrim_colon_completions "$cur" | |
| } | |
| _java_classes () | |
| { | |
| local classpath i; | |
| _java_find_classpath; | |
| cur=${cur//.//}; | |
| for i in ${classpath//:/ }; | |
| do | |
| if [[ "$i" == *.@(jar|zip) && -r $i ]]; then | |
| if type zipinfo >&/dev/null; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( zipinfo -1 "$i" "$cur*" 2>/dev/null | command grep '^[^$]*\.class$' )); | |
| else | |
| COMPREPLY=("${COMPREPLY[@]}" $( jar tf "$i" "$cur" | command grep '^[^$]*\.class$' )); | |
| fi; | |
| else | |
| if [ -d $i ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( command ls $i/$cur*.class 2>/dev/null | sed -ne '/\$/d' -e "s|^$i//*||p" )); | |
| fi; | |
| fi; | |
| done; | |
| COMPREPLY=(${COMPREPLY[@]%.class}); | |
| COMPREPLY=(${COMPREPLY[@]//\//.}) | |
| } | |
| _java_find_classpath () | |
| { | |
| local i; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then | |
| classpath=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| [ -z "$classpath" ] && classpath=$CLASSPATH; | |
| [ -z "$classpath" ] && classpath=. | |
| } | |
| _java_find_sourcepath () | |
| { | |
| local i; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then | |
| sourcepath=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| if [ -z "$sourcepath" ]; then | |
| _java_find_classpath; | |
| sourcepath=$classpath; | |
| fi | |
| } | |
| _java_packages () | |
| { | |
| local sourcepath i; | |
| _java_find_sourcepath; | |
| cur=${cur//.//}; | |
| for i in ${sourcepath//:/ }; | |
| do | |
| if [ -d $i ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( command ls -F -d $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' )); | |
| fi; | |
| done; | |
| COMPREPLY=($( tr " " "\n" <<<"${COMPREPLY[@]}" | command grep "/$" )); | |
| COMPREPLY=(${COMPREPLY[@]%/}); | |
| cur=${COMPREPLY[@]//\//.} | |
| } | |
| _java_path () | |
| { | |
| cur=${cur##*:}; | |
| _filedir '@(jar|zip)' | |
| } | |
| _javac () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -d) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -classpath | -bootclasspath | -sourcepath | -extdirs) | |
| _java_path; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-g -g:none -g:lines -g:vars \ | |
| -g:source -O -nowarn -verbose -deprecation -classpath \ | |
| -sourcepath -bootclasspath -extdirs -d -encoding -source \ | |
| -target -help' -- "$cur" )); | |
| else | |
| _filedir java; | |
| fi | |
| } | |
| _javadoc () | |
| { | |
| COMPREPLY=(); | |
| local cur prev classpath; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -overview | -helpfile) | |
| _filedir '?(x)htm?(l)'; | |
| return 0 | |
| ;; | |
| -stylesheetfile) | |
| _filedir css; | |
| return 0 | |
| ;; | |
| -d | -link | -linkoffline) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -classpath | -bootclasspath | -docletpath | -sourcepath | -extdirs) | |
| _java_path; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-overview -public -protected \ | |
| -package -private -help -doclet -docletpath \ | |
| -sourcepath -classpath -exclude -subpackages \ | |
| -breakiterator -bootclasspath -source -extdirs \ | |
| -verbose -locale -encoding -J -d -use -version \ | |
| -author -docfilessubdirs -splitindex \ | |
| -windowtitle -doctitle -header -footer -bottom \ | |
| -link -linkoffline -excludedocfilessubdir \ | |
| -group -nocomment -nodeprecated -noqualifier \ | |
| -nosince -nodeprecatedlist -notree -noindex \ | |
| -nohelp -nonavbar -quiet -serialwarn -tag \ | |
| -taglet -tagletpath -charset -helpfile \ | |
| -linksource -stylesheetfile -docencoding' -- "$cur" )); | |
| else | |
| _filedir java; | |
| _java_packages; | |
| fi | |
| } | |
| _javaws () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -help | -license | -about | -viewer | -arg | -param | -property | -update | -umask) | |
| return 0 | |
| ;; | |
| -basedir | -codebase) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -uninstall | -import) | |
| _filedir jnlp; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W "$( _parse_help "$1" -help ) " -- "$cur" )); | |
| return 0; | |
| fi; | |
| _filedir jnlp | |
| } | |
| _kernel_versions () | |
| { | |
| COMPREPLY=($( compgen -W '$( command ls /lib/modules )' -- "$cur" )) | |
| } | |
| _kill () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then | |
| _signals; | |
| else | |
| _pids; | |
| fi | |
| } | |
| _killall () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then | |
| _signals; | |
| else | |
| _pnames; | |
| fi; | |
| return 0 | |
| } | |
| _known_hosts () | |
| { | |
| local options; | |
| COMPREPLY=(); | |
| [[ "$1" == -a || "$2" == -a ]] && options=-a; | |
| [[ "$1" == -c || "$2" == -c ]] && options="$options -c"; | |
| _known_hosts_real $options "$(_get_cword :)" | |
| } | |
| _known_hosts_real () | |
| { | |
| local configfile flag prefix; | |
| local cur curd awkcur user suffix aliases i host; | |
| local -a kh khd config; | |
| local OPTIND=1; | |
| while getopts "acF:p:" flag "$@"; do | |
| case $flag in | |
| a) | |
| aliases='yes' | |
| ;; | |
| c) | |
| suffix=':' | |
| ;; | |
| F) | |
| configfile=$OPTARG | |
| ;; | |
| p) | |
| prefix=$OPTARG | |
| ;; | |
| esac; | |
| done; | |
| [ $# -lt $OPTIND ] && echo "error: $FUNCNAME: missing mandatory argument CWORD"; | |
| cur=${!OPTIND}; | |
| let "OPTIND += 1"; | |
| [ $# -ge $OPTIND ] && echo "error: $FUNCNAME("$@"): unprocessed arguments:" $(while [ $# -ge $OPTIND ]; do printf '%s\n' ${!OPTIND}; shift; done); | |
| [[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}; | |
| kh=(); | |
| if [ -n "$configfile" ]; then | |
| [ -r "$configfile" ] && config=("${config[@]}" "$configfile"); | |
| else | |
| for i in /etc/ssh/ssh_config "${HOME}/.ssh/config" "${HOME}/.ssh2/config"; | |
| do | |
| [ -r $i ] && config=("${config[@]}" "$i"); | |
| done; | |
| fi; | |
| if [ ${#config[@]} -gt 0 ]; then | |
| local OIFS=$IFS IFS=' | |
| '; | |
| local -a tmpkh; | |
| tmpkh=($( awk 'sub("^[ \t]*([Gg][Ll][Oo][Bb][Aa][Ll]|[Uu][Ss][Ee][Rr])[Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee][ \t]+", "") { print $0 }' "${config[@]}" | sort -u )); | |
| for i in "${tmpkh[@]}"; | |
| do | |
| i=${i//\"}; | |
| __expand_tilde_by_ref i; | |
| [ -r "$i" ] && kh=("${kh[@]}" "$i"); | |
| done; | |
| IFS=$OIFS; | |
| fi; | |
| if [ -z "$configfile" ]; then | |
| for i in /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2 /etc/known_hosts /etc/known_hosts2 ~/.ssh/known_hosts ~/.ssh/known_hosts2; | |
| do | |
| [ -r $i ] && kh=("${kh[@]}" $i); | |
| done; | |
| for i in /etc/ssh2/knownhosts ~/.ssh2/hostkeys; | |
| do | |
| [ -d $i ] && khd=("${khd[@]}" $i/*pub); | |
| done; | |
| fi; | |
| if [[ ${#kh[@]} -gt 0 || ${#khd[@]} -gt 0 ]]; then | |
| awkcur=${cur//\//\\\/}; | |
| awkcur=${awkcur//\./\\\.}; | |
| curd=$awkcur; | |
| if [[ "$awkcur" == [0-9]*[.:]* ]]; then | |
| awkcur="^$awkcur[.:]*"; | |
| else | |
| if [[ "$awkcur" == [0-9]* ]]; then | |
| awkcur="^$awkcur.*[.:]"; | |
| else | |
| if [ -z "$awkcur" ]; then | |
| awkcur="[a-z.:]"; | |
| else | |
| awkcur="^$awkcur"; | |
| fi; | |
| fi; | |
| fi; | |
| if [ ${#kh[@]} -gt 0 ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( awk 'BEGIN {FS=","} | |
| /^\s*[^|\#]/ {for (i=1; i<=2; ++i) { \ | |
| sub(" .*$", "", $i); \ | |
| sub("^\\[", "", $i); sub("\\](:[0-9]+)?$", "", $i); \ | |
| if ($i ~ /'"$awkcur"'/) {print $i} \ | |
| }}' "${kh[@]}" 2>/dev/null )); | |
| fi; | |
| if [ ${#khd[@]} -gt 0 ]; then | |
| for i in "${khd[@]}"; | |
| do | |
| if [[ "$i" == *key_22_$curd*.pub && -r "$i" ]]; then | |
| host=${i/#*key_22_/}; | |
| host=${host/%.pub/}; | |
| COMPREPLY=("${COMPREPLY[@]}" $host); | |
| fi; | |
| done; | |
| fi; | |
| for ((i=0; i < ${#COMPREPLY[@]}; i++ )) | |
| do | |
| COMPREPLY[i]=$prefix$user${COMPREPLY[i]}$suffix; | |
| done; | |
| fi; | |
| if [[ ${#config[@]} -gt 0 && -n "$aliases" ]]; then | |
| local hosts=$( sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\{0,1\}['"$'\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" ); | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -P "$prefix$user" -S "$suffix" -W "$hosts" -- "$cur" )); | |
| fi; | |
| if [[ -n ${COMP_KNOWN_HOSTS_WITH_AVAHI:-} ]] && type avahi-browse >&/dev/null; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -P "$prefix$user" -S "$suffix" -W "$( avahi-browse -cpr _workstation._tcp 2>/dev/null | awk -F';' '/^=/ { print $7 }' | sort -u )" -- "$cur" )); | |
| fi; | |
| if [ -n "${COMP_KNOWN_HOSTS_WITH_HOSTFILE-1}" ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -A hostname -P "$prefix$user" -S "$suffix" -- "$cur" )); | |
| fi; | |
| __ltrim_colon_completions "$prefix$user$cur"; | |
| return 0 | |
| } | |
| _ktutil () | |
| { | |
| local cur prev command options split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -p | --principal) | |
| _heimdal_principals; | |
| return 0 | |
| ;; | |
| -e | --enctype) | |
| _heimdal_encodings; | |
| return 0 | |
| ;; | |
| -a | --admin-server) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -r | --realm) | |
| _heimdal_realms; | |
| return 0 | |
| ;; | |
| -s | -k | --srvtab | --keytab) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| commands='add change copy get list remove rename purge srvconvert \ | |
| srv2keytab srvcreate key2srvtab'; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| case ${COMP_WORDS[i]} in | |
| -k | --keytab) | |
| i=$(($i+1)) | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| command=${COMP_WORDS[i]}; | |
| break | |
| ;; | |
| esac; | |
| done; | |
| if [[ "$cur" == -* ]]; then | |
| case $command in | |
| add) | |
| options='-p --principal -V -e --enctype -w --password -r \ | |
| --random -s --no-salt -h --hex' | |
| ;; | |
| change) | |
| options='-r --realm -a --admin-server -s --server-port' | |
| ;; | |
| get) | |
| options='-p --principal -e --enctype -r --realm -a \ | |
| --admin-server -s server --server-port' | |
| ;; | |
| list) | |
| options='--keys --timestamp' | |
| ;; | |
| remove) | |
| options='-p --principal -V --kvno -e --enctype' | |
| ;; | |
| purge) | |
| options='--age' | |
| ;; | |
| srv2keytab | key2srvtab) | |
| options='-s --srvtab' | |
| ;; | |
| *) | |
| options='-k --keytab -v --verbose --version -v --help' | |
| ;; | |
| esac; | |
| COMPREPLY=($( compgen -W "$options" -- "$cur" )); | |
| else | |
| case $command in | |
| copy) | |
| _filedir | |
| ;; | |
| get) | |
| _heimdal_principals | |
| ;; | |
| rename) | |
| _heimdal_principals | |
| ;; | |
| *) | |
| COMPREPLY=($( compgen -W "$commands" -- "$cur" )) | |
| ;; | |
| esac; | |
| fi | |
| } | |
| _ldap_protocols () | |
| { | |
| COMPREPLY=($( compgen -W '2 3' -- "$cur" )) | |
| } | |
| _ldap_uris () | |
| { | |
| COMPREPLY=($( compgen -W 'ldap:// ldaps://' -- "$cur" )) | |
| } | |
| _ldapaddmodify () | |
| { | |
| local cur prev options; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -S | -f | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| options='-c -S -n -v -M -MM -d -D -W -w -y -h -H -p -P -O -I \ | |
| -Q -U -R -x -X -Y -Z -ZZ -f'; | |
| if [[ ${COMP_WORDS[0]} == ldapmodify ]]; then | |
| options="$options -a"; | |
| fi; | |
| COMPREPLY=($( compgen -W "$options" -- "$cur" )); | |
| fi | |
| } | |
| _ldapcompare () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-n -v -z -M -MM -d -D -W -w -y \ | |
| -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" )); | |
| fi | |
| } | |
| _ldapdelete () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -f | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-n -v -c -M -MM -d -f -D -W -w -y \ | |
| -H -h -P -p -O -U -R -r -x -I -Q -X -Y -Z -ZZ' -- "$cur" )); | |
| fi | |
| } | |
| _ldapmodrdn () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -f | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-r -s -n -v -c -M -MM -d -D -W -w \ | |
| -y -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ -f' -- "$cur" )); | |
| fi | |
| } | |
| _ldappasswd () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -t | -T | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-A -a -t -d -D -H -h -n -p -S -s -T \ | |
| -v -W -w -y -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" )); | |
| fi | |
| } | |
| _ldapsearch () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -T) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -f | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -s) | |
| COMPREPLY=($( compgen -W 'base one sub children' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -a) | |
| COMPREPLY=($( compgen -W 'never always search find' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-n -u -v -t -tt -T -F -A -C -L -LL \ | |
| -LLL -M -MM -S -d -f -x -D -W -w -y -H -h -p -b -s -a \ | |
| -P -e -E -l -z -O -I -Q -U -R -X -Y -Z -ZZ' -- "$cur" )); | |
| fi | |
| } | |
| _ldapwhoami () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -H) | |
| _ldap_uris; | |
| return 0 | |
| ;; | |
| -f | -y) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -P) | |
| _ldap_protocols; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-n -v -z -d -D -W -w -y -H -h -p -P \ | |
| -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" )); | |
| fi | |
| } | |
| _linux_fstab () | |
| { | |
| COMPREPLY=(); | |
| local fs_spec fs_file fs_other; | |
| local oldifs="$IFS"; | |
| while read -r fs_spec fs_file fs_other; do | |
| if [[ $fs_spec = [#]* ]]; then | |
| continue; | |
| fi; | |
| if [[ $1 == -L ]]; then | |
| local fs_label=${fs_spec/#LABEL=}; | |
| if [[ $fs_label != "$fs_spec" ]]; then | |
| __linux_fstab_unescape fs_label; | |
| IFS=''; | |
| COMPREPLY+=("$fs_label"); | |
| IFS=$oldifs; | |
| fi; | |
| else | |
| __linux_fstab_unescape fs_spec; | |
| __linux_fstab_unescape fs_file; | |
| IFS=''; | |
| [[ $fs_spec = */* ]] && COMPREPLY+=("$fs_spec"); | |
| [[ $fs_file = */* ]] && COMPREPLY+=("$fs_file"); | |
| IFS=$oldifs; | |
| fi; | |
| done; | |
| _reply_compgen_array | |
| } | |
| _longopt () | |
| { | |
| local cur prev split=false; | |
| _get_comp_words_by_ref -n = cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --*[Dd][Ii][Rr]*) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| --*[Ff][Ii][Ll][Ee]* | --*[Pp][Aa][Tt][Hh]*) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W "$( $1 --help 2>&1 | sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" -- "$cur" )); | |
| else | |
| if [[ "$1" == @(mk|rm)dir ]]; then | |
| _filedir -d; | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _look () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [ $COMP_CWORD = 1 ]; then | |
| COMPREPLY=($( compgen -W '$(look "$cur" 2>/dev/null)' -- "$cur" )); | |
| fi | |
| } | |
| _lsof () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -'?' | -h | +c | -c | -d | -F | -i | +r | -r | -s | -S | -T) | |
| return 0 | |
| ;; | |
| -A | -k | -m | +m | -o) | |
| _filedir; | |
| return 0 | |
| ;; | |
| +d | +D) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -D) | |
| COMPREPLY=($( compgen -W '? b i r u' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -f) | |
| COMPREPLY=($( compgen -W 'c f g G n' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -g) | |
| _pgids; | |
| return 0 | |
| ;; | |
| -p) | |
| _pids; | |
| return 0 | |
| ;; | |
| -u) | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == [-+]* ]]; then | |
| COMPREPLY=($( compgen -W '-h -a -A -b -c +c -C +d -d +D -D +f -f -F -g | |
| -i -k -l +L -L +m -m +M -M -n -N -o -O -p -P +r -r -R -s -S -T -t | |
| -u -U -v -V +w -w -x -X -z -Z' -- "$cur" )); | |
| return 0; | |
| fi; | |
| _filedir | |
| } | |
| _lsvirtualenv_usage () | |
| { | |
| echo "lsvirtualenv [-blh]"; | |
| echo " -b -- brief mode"; | |
| echo " -l -- long mode"; | |
| echo " -h -- this help message" | |
| } | |
| _lzma () | |
| { | |
| local cur prev xspec; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 \ | |
| --help --decompress --compress --keep --force --suffix \ | |
| --test --stdout --quiet --verbose --license --list \ | |
| --version --small --fast --best --text' -- "$cur" )); | |
| return 0; | |
| fi; | |
| local IFS=' | |
| '; | |
| xspec="*.@(lzma|tlz)"; | |
| if [[ "$prev" == --* ]]; then | |
| [[ "$prev" == --decompress || "$prev" == --list || "$prev" == --test ]] && xspec="!"$xspec; | |
| [[ "$prev" == --compress ]] && xspec=; | |
| else | |
| if [[ "$prev" == -* ]]; then | |
| [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec; | |
| [[ "$prev" == -*z* ]] && xspec=; | |
| fi; | |
| fi; | |
| _expand || return 0; | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -X "$xspec" -- "$cur" ) $( compgen -d -- "$cur" )) | |
| } | |
| _mac_addresses () | |
| { | |
| local re='\([A-Fa-f0-9]\{2\}:\)\{5\}[A-Fa-f0-9]\{2\}'; | |
| local PATH="$PATH:/sbin:/usr/sbin"; | |
| COMPREPLY=("${COMPREPLY[@]}" $( ifconfig -a 2>/dev/null | sed -ne "s/.*[[:space:]]HWaddr[[:space:]]\{1,\}\($re\)[[:space:]]*$/\1/p" )); | |
| COMPREPLY=("${COMPREPLY[@]}" $( arp -an 2>/dev/null | sed -ne "s/.*[[:space:]]\($re\)[[:space:]].*/\1/p" -ne "s/.*[[:space:]]\($re\)[[:space:]]*$/\1/p" )); | |
| COMPREPLY=("${COMPREPLY[@]}" $( sed -ne "s/^[[:space:]]*\($re\)[[:space:]].*/\1/p" /etc/ethers 2>/dev/null )); | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]}' -- "$cur" )); | |
| __ltrim_colon_completions "$cur" | |
| } | |
| _make () | |
| { | |
| local file makef makef_dir="." makef_inc cur prev i split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -f | -o | -W | --file | --makefile | --old-file | --new-file | --assume-old | --assume-new | --what-if) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -I | -C | --directory | --include-dir) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-b -m -B -C -d -e -f -h -i -I\ | |
| -j -l -k -n -o -p -q -r -R - s -S -t -v -w -W \ | |
| --always-make --directory --debug \ | |
| --environment-overrides --file --makefile --help \ | |
| --ignore-errors --include-dir --jobs --load-average \ | |
| --max-load --keep-going --just-print --dry-run \ | |
| --recon --old-file --assume-old --print-data-base \ | |
| --question --no-builtin-rules --no-builtin-variables \ | |
| --silent --quiet --no-keep-goind --stop --touch \ | |
| --version --print-directory --no-print-directory \ | |
| --what-if --new-file --assume-new \ | |
| --warn-undefined-variables' -- "$cur" )); | |
| else | |
| for ((i=0; i < ${#COMP_WORDS[@]}; i++ )) | |
| do | |
| if [[ ${COMP_WORDS[i]} == -@(C|-directory) ]]; then | |
| eval makef_dir=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| for ((i=0; i < ${#COMP_WORDS[@]}; i++ )) | |
| do | |
| if [[ ${COMP_WORDS[i]} == -@(f|-?(make)file) ]]; then | |
| eval makef=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| [ -n "$makef" ] && makef="-f ${makef}"; | |
| [ -n "$makef_dir" ] && makef_dir="-C ${makef_dir}"; | |
| COMPREPLY=($( compgen -W "$( make -qp $makef $makef_dir 2>/dev/null | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \ | |
| {split($1,A,/ /);for(i in A)print A[i]}' )" -- "$cur" )); | |
| fi | |
| } | |
| _man () | |
| { | |
| local cur i prev sect manpath manext mansect uname; | |
| manext="@([0-9lnp]|[0-9][px]|man|3pm)?(.@([gx]z|bz2|lzma|Z))"; | |
| mansect="@([0-9lnp]|[0-9][px]|3pm)"; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| if [[ "$prev" == -l ]]; then | |
| _filedir $manext; | |
| return 0; | |
| fi; | |
| _expand || return 0; | |
| if [[ "$cur" == */* ]]; then | |
| _filedir $manext; | |
| return 0; | |
| fi; | |
| uname=$( uname -s ); | |
| if [[ $uname == @(Linux|GNU|GNU/*|FreeBSD|Cygwin|CYGWIN_*) ]]; then | |
| manpath=$( manpath 2>/dev/null || command man --path ); | |
| else | |
| manpath=$MANPATH; | |
| fi; | |
| if [ -z "$manpath" ]; then | |
| COMPREPLY=($( compgen -c -- "$cur" )); | |
| return 0; | |
| fi; | |
| [[ "$prev" == $mansect ]] && sect=$prev || sect='*'; | |
| manpath=$manpath:; | |
| if [ -n "$cur" ]; then | |
| manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }"; | |
| else | |
| manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }"; | |
| fi; | |
| COMPREPLY=($( eval command ls "$manpath" 2>/dev/null )); | |
| COMPREPLY=(${COMPREPLY[@]##*/?(:)}); | |
| COMPREPLY=(${COMPREPLY[@]%.@([gx]z|bz2|lzma|Z)}); | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" )); | |
| if [[ "$prev" != $mansect ]]; then | |
| local start=${#COMPREPLY[@]}; | |
| _filedir $manext; | |
| for ((i=$start; i < ${#COMPREPLY[@]}; i++ )) | |
| do | |
| [[ ${COMPREPLY[i]} == */* ]] || COMPREPLY[i]=./${COMPREPLY[i]}; | |
| done; | |
| fi; | |
| __ltrim_colon_completions "$cur"; | |
| return 0 | |
| } | |
| _mktemp () | |
| { | |
| COMPREPLY=(); | |
| local cur prev split=false; | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case "$prev" in | |
| --help | --version | --suffix) | |
| return 0 | |
| ;; | |
| --tmpdir | -p) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| [[ "$cur" == -* ]] && COMPREPLY=($( compgen -W '-d -u -q -p -t' -- "$cur" )) | |
| } | |
| _modules () | |
| { | |
| local modpath; | |
| modpath=/lib/modules/$1; | |
| COMPREPLY=($( compgen -W "$( command ls -R $modpath | sed -ne 's/^\(.*\)\.k\{0,1\}o\(\.gz\)\{0,1\}$/\1/p' )" -- "$cur" )) | |
| } | |
| _mogrify () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-adaptive-blur -adaptive-resize \ | |
| -adaptive-sharpen -adjoin -affine -alpha -annotate \ | |
| -antialias -attenuate -authenticate -auto-orient \ | |
| -background -bias -black-point-compensation \ | |
| -black-threshold -blue-primary -blur -border \ | |
| -bordercolor -caption -channel -charcoal -chop -clip \ | |
| -clip-mask -clip-path -clut -colorize -colors \ | |
| -colorspace -comment -compose -compress -contrast \ | |
| -contrast-stretch -convolve -cycle -debug -decipher \ | |
| -define -delay -density -depth -despeckle -display \ | |
| -dispose -distort -dither -draw -edge -emboss \ | |
| -encipher -encoding -endian -enhance -equalize \ | |
| -evaluate -extent -extract -family -fill -filter \ | |
| -flip -floodfill -flop -font -format -frame -fuzz \ | |
| -gamma -gaussian-blur -geometry -gravity \ | |
| -green-primary -help -identify -implode -intent \ | |
| -interlace -interpolate -label -lat -layers -level \ | |
| -limit -linear-stretch -liquid-rescale -list -log \ | |
| -loop -mask -mattecolor -median -modulate -monitor \ | |
| -monochrome -motion-blur -negate -noise -normalize \ | |
| -opaque -ordered-dither -orient -page -paint -path \ | |
| -ping -pointsize -polaroid -posterize -preview -print \ | |
| -profile -quality -quantize -quiet -radial-blur \ | |
| -raise -random-threshold -recolor -red-primary \ | |
| -regard-warnings -region -render -repage -resample \ | |
| -resize -roll -rotate -sample -sampling-factor -scale \ | |
| -scene -seed -segment -sepia-tone -set -shade -shadow \ | |
| -sharpen -shave -shear -sigmoidal-contrast -size \ | |
| -sketch -solarize -splice -spread -stretch -strip \ | |
| -stroke -strokewidth -style -swirl -taint -texture \ | |
| -threshold -thumbnail -tile -tile-offset -tint \ | |
| -transform -transparent -transparent-color -transpose \ | |
| -transverse -treedepth -trim -type -undercolor \ | |
| -unique-colors -units -unsharp -verbose -version \ | |
| -view -vignette -virtual-pixel -wave -weight \ | |
| -white-point -white-threshold' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+compress +contrast +debug +dither \ | |
| +endian +gamma +label +map +mask +matte +negate +page \ | |
| +raise' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _montage () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-adjoin -affine -alpha \ | |
| -authenticate -background -blue-primary -blur -border \ | |
| -bordercolor -borderwidth -caption -channel -clone \ | |
| -coalesce -colors -colorspace -comment -compose \ | |
| -compress -crop -debug -define -density -depth \ | |
| -display -dispose -dither -draw -encoding -endian \ | |
| -extract -fill -filter -flatten -flip -flop -font \ | |
| -format -frame -gamma -geometry -gravity \ | |
| -green-primary -help -identify -interlace \ | |
| -interpolate -label -limit -list -log -mattecolor \ | |
| -mode -monitor -monochrome -origin -page -pointsize \ | |
| -polaroid -profile -quality -quantize -quiet \ | |
| -red-primary -regard-warnings -repage -resize \ | |
| -respect-parenthesis -rotate -sampling-factor -scenes \ | |
| -seed -set -shadow -size -strip -stroke -texture \ | |
| -thumbnail -tile -title -transform -transparent \ | |
| -transparent-color -treedepth -trim -type -units \ | |
| -verbose -version -virtual-pixel \ | |
| -white-point' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+adjoin +compress +debug +dither \ | |
| +endian +gamma +label +matte +page' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _mount () | |
| { | |
| local cur sm host prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| case $prev in | |
| -t | --types) | |
| _fstypes; | |
| return 0 | |
| ;; | |
| esac; | |
| [[ "$cur" == \\ ]] && cur="/"; | |
| if [[ "$cur" == *:* ]]; then | |
| for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; | |
| do | |
| [ -x "$sm" ] || continue; | |
| COMPREPLY=($( compgen -W "$( "$sm" -e ${cur%%:*} | awk 'NR>1 {print $1}' )" -- "${cur#*:}" )); | |
| return 0; | |
| done; | |
| fi; | |
| if [[ "$cur" == //* ]]; then | |
| host=${cur#//}; | |
| host=${host%%/*}; | |
| if [ -n "$host" ]; then | |
| COMPREPLY=($( compgen -P "//$host" -W "$( smbclient -d 0 -NL $host 2>/dev/null | | |
| sed -ne '/^['"$'\t '"']*Sharename/,/^$/p' | | |
| sed -ne '3,$s|^[^A-Za-z]*\([^'"$'\t '"']*\).*$|/\1|p' )" -- "${cur#//$host}" )); | |
| fi; | |
| else | |
| if [ -r /etc/vfstab ]; then | |
| COMPREPLY=($( compgen -W "$( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab )" -- "$cur" )); | |
| else | |
| if [ ! -e /etc/fstab ]; then | |
| COMPREPLY=($( compgen -W "$( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' )" -- "$cur" )); | |
| else | |
| if [ "$prev" = -L ]; then | |
| _linux_fstab -L < /etc/fstab; | |
| else | |
| if [ "$prev" = -U ]; then | |
| COMPREPLY=($( compgen -W '$(sed -ne "s/^[[:space:]]*UUID=\([^[:space:]]*\).*/\1/p" /etc/fstab )' -- "$cur" )); | |
| else | |
| _linux_fstab < /etc/fstab; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| fi; | |
| return 0 | |
| } | |
| _mysqladmin () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -u | --user) | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| return 0 | |
| ;; | |
| -h | --host) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| --character-sets-dir | --ssl-capath) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -S | --socket) | |
| _filedir sock; | |
| return 0 | |
| ;; | |
| --defaults-file | --defaults-extra-file) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -c | --count | --default-character-set | -P | --port | -O | --set-variable | -i | --sleep | --ssl-ca | --ssl-cert | --ssl-cipher | --ssl-key | -w | --wait | --connect_timeout | --shutdown_timeout) | |
| return 0 | |
| ;; | |
| '-?' | --help | -V | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| COMPREPLY=($( compgen -W '--count --debug-check --debug-info --force \ | |
| --compress --character-sets-dir --default-character-set --help --host \ | |
| --no-beep --password --port --protocol --relative --set-variable \ | |
| --silent --socket --sleep --ssl --ssl-ca --ssl-capath --ssl-cert \ | |
| --ssl-cipher --ssl-key --ssl-verify-server-cert --user --verbose \ | |
| --version --vertical --wait --connect_timeout --shutdown_timeout \ | |
| --print-defaults --no-defaults --defaults-file --defaults-extra-file' -- "$cur" )); | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W 'create debug drop extended-status flush-hosts \ | |
| flush-logs flush-status flush-tables flush-threads flush-privileges \ | |
| kill password old-password ping processlist reload refresh shutdown \ | |
| status start-slave stop-slave variables version' -- "$cur" )) | |
| } | |
| _newgrp () | |
| { | |
| COMPREPLY=(); | |
| if [[ "`_get_cword`" == "-" ]]; then | |
| COMPREPLY=(-); | |
| else | |
| _allowed_groups; | |
| fi | |
| } | |
| _nmap () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| cur=`_get_cword`; | |
| prev=`_get_pword`; | |
| case $prev in | |
| -iL | -oN | -oX | -oS | -oG | ---excludefile | --resume | --stylesheet) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -oA | --datadir) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -e) | |
| _available_interfaces; | |
| return 0 | |
| ;; | |
| -b | --dns-servers) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-iL -iR --exclude --excludefile -sL -sP \ | |
| -PN -PS -PA -PU -PY -PE -PP -PM -PO -n -R --dns-servers \ | |
| --system-dns --traceroute -sS -sT -sA -sW -sM -sU -sN -sF -sX \ | |
| --scanflags -sI -sY -sZ -sO -b -p -F -r --top-ports --port-ratio \ | |
| -sV --version-intensity --version-light --version-all \ | |
| --version-trace -sC --script= --script-args= --script-trace \ | |
| --script-updatedb -O --osscan-limit --osscan-guess -T0 -T1 -T2 -T3 \ | |
| -T4 -T5 --min-hostgroup --max-hostgroup --min-parallelism \ | |
| --max-parallelism --min-rtt-timeout --max-rtt-timeout \ | |
| --initial-rtt-timeout --max-retries --host-timeout --scan-delay \ | |
| --max-scan-delay --min-rate --max-rate -f --mtu -D -S -e \ | |
| --source-port --data-length --ip-options --ttl --spoof-mac \ | |
| --badsum --adler32 -oN -oX -oS -oG -oA -v -d --reason --open \ | |
| --packet-trace --iflist --log-errors --append-output --resume \ | |
| --stylesheet --webxml --no-stylesheet -6 -A --datadir --send-eth \ | |
| --send-ip --privilege--unprivileged -V -h' -- "$cur" )); | |
| else | |
| _known_hosts_real "$cur"; | |
| fi | |
| } | |
| _nslookup () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| COMPREPLY=($( compgen -P '-' -W 'all class= debug d2 domain= srchlist= \ | |
| defname search port= querytype= type= recurse retry root timeout vc \ | |
| ignoretc' -- "$cur" )) | |
| } | |
| _ntpdate () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -k) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -U) | |
| COMPREPLY=($( compgen -u "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-4 -6 -b -B -d -Q -q -s -u -v -a\ | |
| -e -k -p -o -r -t' -- "$cur" )); | |
| else | |
| _known_hosts_real "$cur"; | |
| fi | |
| } | |
| _openssl () | |
| { | |
| local cur prev commands command options formats; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| commands='asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa \ | |
| dsaparam ec ecparam enc engine errstr gendh gendsa genrsa \ | |
| nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa \ | |
| rsautl s_client s_server s_time sess_id smime speed spkac \ | |
| verify version x509 md2 md4 md5 rmd160 sha sha1 aes-128-cbc \ | |
| aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb \ | |
| base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc \ | |
| camellia-128-ecb camellia-192-cbc camellia-192-ecb \ | |
| camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc \ | |
| cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb \ | |
| des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 \ | |
| des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 \ | |
| rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 \ | |
| rc4-40'; | |
| if [ $COMP_CWORD -eq 1 ]; then | |
| COMPREPLY=($( compgen -W "$commands" -- "$cur" )); | |
| else | |
| command=${COMP_WORDS[1]}; | |
| case $prev in | |
| -CA | -CAfile | -CAkey | -CAserial | -cert | -certfile | -config | -content | -dcert | -dkey | -dhparam | -extfile | -in | -inkey | -kfile | -key | -keyout | -out | -oid | -prvrify | -rand | -recip | -revoke | -sess_in | -sess_out | -spkac | -sign | -signkey | -signer | -signature | -ss_cert | -untrusted | -verify) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -outdir | -CApath) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -name | -crlexts | -extensions) | |
| _openssl_sections; | |
| return 0 | |
| ;; | |
| -inform | -outform | -keyform | -certform | -CAform | -CAkeyform | -dkeyform | -dcertform) | |
| formats='DER PEM'; | |
| case $command in | |
| x509) | |
| formats="$formats NET" | |
| ;; | |
| smime) | |
| formats="$formats SMIME" | |
| ;; | |
| esac; | |
| COMPREPLY=($( compgen -W "$formats" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -connect) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -starttls) | |
| COMPREPLY=($( compgen -W 'smtp pop3 imap ftp' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -cipher) | |
| COMPREPLY=($( compgen -W "$(openssl ciphers | tr ':' '\n')" -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| case $command in | |
| asn1parse) | |
| options='-inform -in -out -noout -offset -length -i -oid \ | |
| -strparse' | |
| ;; | |
| ca) | |
| options='-verbose -config -name -gencrl -revoke \ | |
| -crl_reason -crl_hold -crl_compromise \ | |
| -crl_CA_compromise -crldays -crlhours -crlexts \ | |
| -startdate -enddate -days -md -policy -keyfile -key \ | |
| -passin -cert -selfsig -in -out -notext -outdir \ | |
| -infiles -spkac -ss_cert -preserveDN -noemailDN \ | |
| -batch -msie_hack -extensions -extfile -engine \ | |
| -subj -utf8 -multivalue-rdn' | |
| ;; | |
| ciphers) | |
| options='-v -ssl2 -ssl3 -tls1' | |
| ;; | |
| crl) | |
| options='-inform -outform -text -in -out -noout -hash \ | |
| -issuer -lastupdate -nextupdate -CAfile -CApath' | |
| ;; | |
| crl2pkcs7) | |
| options='-inform -outform -in -out -print_certs' | |
| ;; | |
| dgst) | |
| options='-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \ | |
| -c -d -hex -binary -out -sign -verify -prverify \ | |
| -signature' | |
| ;; | |
| dsa) | |
| options='-inform -outform -in -passin -out -passout -des \ | |
| -des3 -idea -text -noout -modulus -pubin -pubout' | |
| ;; | |
| dsaparam) | |
| options='-inform -outform -in -out -noout -text -C -rand \ | |
| -genkey' | |
| ;; | |
| enc) | |
| options='-ciphername -in -out -pass -e -d -a -A -k -kfile \ | |
| -S -K -iv -p -P -bufsize -debug' | |
| ;; | |
| dhparam) | |
| options='-inform -outform -in -out -dsaparam -noout -text \ | |
| -C -2 -5 -rand' | |
| ;; | |
| gendsa) | |
| options='-out -des -des3 -idea -rand' | |
| ;; | |
| genrsa) | |
| options='-out -passout -des -des3 -idea -f4 -3 -rand' | |
| ;; | |
| pkcs7) | |
| options='-inform -outform -in -out -print_certs -text \ | |
| -noout' | |
| ;; | |
| rand) | |
| options='-out -rand -base64' | |
| ;; | |
| req) | |
| options='-inform -outform -in -passin -out -passout -text \ | |
| -noout -verify -modulus -new -rand -newkey -newkey \ | |
| -nodes -key -keyform -keyout -md5 -sha1 -md2 -mdc2 \ | |
| -config -x509 -days -asn1-kludge -newhdr -extensions \ | |
| -reqexts section' | |
| ;; | |
| rsa) | |
| options='-inform -outform -in -passin -out -passout \ | |
| -sgckey -des -des3 -idea -text -noout -modulus -check \ | |
| -pubin -pubout -engine' | |
| ;; | |
| rsautl) | |
| options='-in -out -inkey -pubin -certin -sign -verify \ | |
| -encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse' | |
| ;; | |
| s_client) | |
| options='-connect -verify -cert -certform -key -keyform \ | |
| -pass -CApath -CAfile -reconnect -pause -showcerts \ | |
| -debug -msg -nbio_test -state -nbio -crlf -ign_eof \ | |
| -quiet -ssl2 -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 \ | |
| -bugs -cipher -starttls -engine -tlsextdebug \ | |
| -no_ticket -sess_out -sess_in -rand' | |
| ;; | |
| s_server) | |
| options='-accept -context -verify -Verify -crl_check \ | |
| -crl_check_all -cert -certform -key -keyform -pass \ | |
| -dcert -dcertform -dkey -dkeyform -dpass -dhparam \ | |
| -nbio -nbio_test -crlf -debug -msg -state -CApath \ | |
| -CAfile -nocert -cipher -quiet -no_tmp_rsa -ssl2 \ | |
| -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 -no_dhe \ | |
| -bugs -hack -www -WWW -HTTP -engine -tlsextdebug \ | |
| -no_ticket -id_prefix -rand' | |
| ;; | |
| s_time) | |
| options='-connect -www -cert -key -CApath -CAfile -reuse \ | |
| -new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher' | |
| ;; | |
| sess_id) | |
| options='-inform -outform -in -out -text -noout -context \ | |
| ID' | |
| ;; | |
| smime) | |
| options='-encrypt -decrypt -sign -verify -pk7out -des \ | |
| -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 \ | |
| -in -certfile -signer -recip -inform -passin -inkey \ | |
| -out -outform -content -to -from -subject -text -rand' | |
| ;; | |
| speed) | |
| options='-engine' | |
| ;; | |
| verify) | |
| options='-CApath -CAfile -purpose -untrusted -help \ | |
| -issuer_checks -verbose -certificates' | |
| ;; | |
| x509) | |
| options='-inform -outform -keyform -CAform -CAkeyform -in \ | |
| -out -serial -hash -subject_hash -issuer_hash -subject \ | |
| -issuer -nameopt -email -startdate -enddate -purpose \ | |
| -dates -modulus -fingerprint -alias -noout -trustout \ | |
| -clrtrust -clrreject -addtrust -addreject -setalias \ | |
| -days -set_serial -signkey -x509toreq -req -CA -CAkey \ | |
| -CAcreateserial -CAserial -text -C -md2 -md5 -sha1 \ | |
| -mdc2 -clrext -extfile -extensions -engine' | |
| ;; | |
| md5 | md4 | md2 | sha1 | sha | mdc2 | ripemd160) | |
| options='-c -d' | |
| ;; | |
| esac; | |
| COMPREPLY=($( compgen -W "$options" -- "$cur" )); | |
| else | |
| if [[ "$command" == speed ]]; then | |
| COMPREPLY=($( compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 \ | |
| idea-cbc rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 \ | |
| rsa512 rsa1024 rsa2048 rsa4096 dsa512 dsa1024 dsa2048 idea \ | |
| rc2 des rsa blowfish' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi; | |
| fi | |
| } | |
| _openssl_sections () | |
| { | |
| local config f; | |
| for ((i=2; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -config ]]; then | |
| config=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| if [ -z "$config" ]; then | |
| for f in /etc/ssl/openssl.cnf /etc/pki/tls/openssl.cnf /usr/share/ssl/openssl.cnf; | |
| do | |
| [ -f $f ] && config=$f && break; | |
| done; | |
| fi; | |
| [ ! -f "$config" ] && return 0; | |
| COMPREPLY=($( compgen -W "$( awk '/\[.*\]/ {print $2}' $config )" -- "$cur" )) | |
| } | |
| _pack200 () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -S | --segment-limit | -P | --pass-file | -C | --class-attribute | -F | --field-attribute | -M | --method-attribute | -D | --code-attribute | '-?' | -h | --help | -V | --version | -J) | |
| return 0 | |
| ;; | |
| -E | --effort) | |
| COMPREPLY=($( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -H | --deflate-hint) | |
| COMPREPLY=($( compgen -W 'true false keep' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -m | --modification-time) | |
| COMPREPLY=($( compgen -W 'latest keep' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -U | --unknown-attribute) | |
| COMPREPLY=($( compgen -W 'error strip pass' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -f | --config-file) | |
| _filedir properties; | |
| return 0 | |
| ;; | |
| -l | --log-file) | |
| COMPREPLY=($( compgen -W '-' -- "$cur" )); | |
| _filedir log; | |
| return 0 | |
| ;; | |
| -r | --repack) | |
| _filedir jar; | |
| return 0 | |
| ;; | |
| esac; | |
| local i pack=false jar=false; | |
| for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| case ${COMP_WORDS[i]} in | |
| *.pack | *.pack.gz) | |
| pack=true | |
| ;; | |
| *.jar) | |
| jar=true | |
| ;; | |
| esac; | |
| done; | |
| if ! $pack; then | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--no-gzip --gzip --strip-debug \ | |
| --no-keep-file-order --segment-limit= --effort= \ | |
| --deflate-hint= --modification-time= --pass-file= \ | |
| --unknown-attribute= --class-attribute= --field-attribute= \ | |
| --method-attribute= --code-attribute= --config-file= \ | |
| --verbose --quiet --log-file= --help --version -J \ | |
| --repack' -- "$cur" )); | |
| [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && type compopt >&/dev/null && compopt -o nospace; | |
| else | |
| _filedir 'pack?(.gz)'; | |
| fi; | |
| else | |
| if ! $jar; then | |
| _filedir jar; | |
| fi; | |
| fi | |
| } | |
| _parse_help () | |
| { | |
| $1 ${2:---help} 2>&1 | sed -e '/^[[:space:]]*-/!d' -e 's|[,/]| |g' | awk '{ print $1; if ($2 ~ /^-/) { print $2 } }' | sed -e 's|[<=].*||' | |
| } | |
| _passwd () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -n | -x | -w | -i | -\? | --help | --usage) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-k -l --stdin -u -d -n -x -w -i -S \ | |
| -? --help --usage' -- "$cur" )); | |
| return 0; | |
| fi; | |
| _allowed_users | |
| } | |
| _pci_ids () | |
| { | |
| COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$( PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur" )) | |
| } | |
| _perl () | |
| { | |
| local cur prev prefix temp; | |
| local optPrefix optSuffix; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| prefix=""; | |
| if [[ "$cur" == -?* ]]; then | |
| temp=$cur; | |
| prev=${temp:0:2}; | |
| cur=${temp:2}; | |
| optPrefix=-P$prev; | |
| optSuffix=-S/; | |
| prefix=$prev; | |
| fi; | |
| case $prev in | |
| -D | -e | -E | -i | -F | -l) | |
| return 0 | |
| ;; | |
| -I | -x) | |
| local IFS=' | |
| '; | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -d $optPrefix $optSuffix -- "$cur" )); | |
| return 0 | |
| ;; | |
| -m | -M) | |
| temp="${cur#-}"; | |
| prefix="$prefix${cur%$temp}"; | |
| cur="$temp"; | |
| _perlmodules $1; | |
| return 0 | |
| ;; | |
| -V) | |
| if [[ $cur == :* ]]; then | |
| temp="${cur##+(:)}"; | |
| prefix="$prefix${cur%$temp}"; | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -P "$prefix" -W '$( $1 -MConfig -e "print join \"\\n\", | |
| keys %Config::Config" 2>/dev/null )' -- "$temp" )); | |
| __ltrim_colon_completions "$prefix$temp"; | |
| fi; | |
| return 0 | |
| ;; | |
| -d | -dt) | |
| if [[ $cur == :* ]]; then | |
| temp="${cur#:}"; | |
| prefix="$prefix${cur%$temp}"; | |
| cur="Devel::$temp"; | |
| _perlmodules $1; | |
| fi; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \ | |
| -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi | |
| } | |
| _perldoc () | |
| { | |
| local cur prev prefix temp; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| prefix=""; | |
| if [[ "$cur" == -?* ]]; then | |
| temp=$cur; | |
| prev=${temp:0:2}; | |
| cur=${temp:2}; | |
| prefix=$prev; | |
| fi; | |
| case $prev in | |
| -f) | |
| _perlfunctions "$cur"; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- "$cur" )); | |
| else | |
| if [[ "$cur" != */* ]]; then | |
| _perlmodules; | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W '$( PAGER=/bin/cat man perl | \ | |
| sed -ne "/perl.*Perl overview/,/perlwin32/p" | \ | |
| awk "\$NF=2 { print \$1}" | command grep perl )' -- "$cur" )); | |
| fi; | |
| _filedir 'p@(l|m|od)'; | |
| fi | |
| } | |
| _perlfunctions () | |
| { | |
| COMPREPLY=($( compgen -P "$prefix" -W "$( ${BASH_SOURCE[0]%/*}/helpers/perl functions $cur )" -- "$cur" )) | |
| } | |
| _perlmodules () | |
| { | |
| COMPREPLY=($( compgen -P "$prefix" -W "$( $1 ${BASH_SOURCE[0]%/*}/helpers/perl modules $cur )" -- "$cur" )); | |
| __ltrim_colon_completions "$prefix$cur" | |
| } | |
| _pg_databases () | |
| { | |
| COMPREPLY=($( compgen -W "$( psql -AtqwlF ' ' 2>/dev/null | awk 'NF > 1 { print $1 }' )" -- "$cur" )) | |
| } | |
| _pg_users () | |
| { | |
| COMPREPLY=($( compgen -W "$( psql -Atqwc 'select usename from pg_user' template1 2>/dev/null )" -- "$cur" )); | |
| [ ${#COMPREPLY[@]} -eq 0 ] && COMPREPLY=($( compgen -u -- "$cur" )) | |
| } | |
| _pgids () | |
| { | |
| COMPREPLY=($( compgen -W '$( command ps axo pgid= )' -- "$cur" )) | |
| } | |
| _pgrep () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _pnames; | |
| return 0 | |
| } | |
| _pids () | |
| { | |
| COMPREPLY=($( compgen -W '$( command ps axo pid= )' -- "$cur" )) | |
| } | |
| _pkg_config () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| --variable | --define-variable | --atleast-version | --atleast-pkgconfig-version | --exact-version | --max-version) | |
| return 0 | |
| ;; | |
| -\? | --help | --version | --usage) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--version --modversion \ | |
| --atleast-pkgconfig-version --libs --static \ | |
| --short-errors --libs-only-l --libs-only-other \ | |
| --libs-only-L --cflags --cflags-only-I \ | |
| --cflags-only-other --variable --define-variable \ | |
| --exists --uninstalled --atleast-version \ | |
| --exact-version --max-version --list-all --debug \ | |
| --print-errors --silence-errors --errors-to-stdout \ | |
| --print-provides --print-requires --help --usage' -- "$cur")); | |
| else | |
| COMPREPLY=($( compgen -W "$( pkg-config --list-all 2>/dev/null | awk '{print $1}' )" -- "$cur" )); | |
| fi | |
| } | |
| _pnames () | |
| { | |
| COMPREPLY=($( compgen -X '<defunct>' -W '$( command ps axo command= | \ | |
| sed -e "s/ .*//" -e "s:.*/::" -e "s/:$//" -e "s/^[[(-]//" \ | |
| -e "s/[])]$//" | sort -u )' -- "$cur" )) | |
| } | |
| _postcat () | |
| { | |
| local cur prev pval len idx qfile; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -c) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W '-c -q -v' -- "$cur" )); | |
| return 0; | |
| fi; | |
| qfile=0; | |
| for idx in "${COMP_WORDS[@]}"; | |
| do | |
| [[ "$idx" = -q ]] && qfile=1 && break; | |
| done; | |
| if [[ $qfile == 1 ]]; then | |
| len=${#cur}; | |
| idx=0; | |
| for pval in $( mailq 2>/dev/null | sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* !].*$//' ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]=$pval; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| return 0; | |
| else | |
| _filedir; | |
| return 0; | |
| fi | |
| } | |
| _postconf () | |
| { | |
| local cur prev pval len idx eqext; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -b | -t) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -c) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -e) | |
| cur=${cur#[\"\']}; | |
| eqext='=' | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W '-A -a -b -c -d -e -h -m -l -n -t -v' -- "$cur" )); | |
| return 0; | |
| fi; | |
| len=${#cur}; | |
| idx=0; | |
| for pval in $( /usr/sbin/postconf 2>/dev/null | cut -d ' ' -f 1 ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]="$pval$eqext"; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| return 0 | |
| } | |
| _postfix () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -c) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -D) | |
| COMPREPLY=($( compgen -W 'start' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W '-c -D -v' -- "$cur" )); | |
| return 0; | |
| fi; | |
| COMPREPLY=($( compgen -W 'check start stop abort flush reload status \ | |
| set-permissions upgrade-configuration' -- "$cur" )) | |
| } | |
| _postmap () | |
| { | |
| local cur prev len idx; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -c) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -[dq]) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W '-N -f -i -n -o -p -r -v -w -c -d -q' -- "$cur" )); | |
| return 0; | |
| fi; | |
| if [[ "$cur" == *:* ]]; then | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -- "${cur#*:}" )); | |
| else | |
| len=${#cur}; | |
| idx=0; | |
| for pval in $( /usr/sbin/postconf -m ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]="$pval:"; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| if [[ $idx -eq 0 ]]; then | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -- "$cur" )); | |
| fi; | |
| fi; | |
| return 0 | |
| } | |
| _postsuper () | |
| { | |
| local cur prev pval len idx; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -c) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -[dr]) | |
| len=${#cur}; | |
| idx=0; | |
| for pval in ALL $( mailq 2>/dev/null | sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* !].*$//' ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]=$pval; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| return 0 | |
| ;; | |
| -h) | |
| len=${#cur}; | |
| idx=0; | |
| for pval in ALL $( mailq 2>/dev/null | sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* ].*$//; /!$/d' ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]=$pval; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| return 0 | |
| ;; | |
| -H) | |
| len=${#cur}; | |
| idx=0; | |
| for pval in ALL $( mailq 2>/dev/null | sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); | |
| do | |
| if [[ "$cur" == "${pval:0:$len}" ]]; then | |
| COMPREPLY[$idx]=$pval; | |
| idx=$(($idx+1)); | |
| fi; | |
| done; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ $cur == -* ]]; then | |
| COMPREPLY=($( compgen -W '-c -d -h -H -p -r -s -v' -- "$cur" )); | |
| return 0; | |
| fi; | |
| COMPREPLY=($( compgen -W 'hold incoming active deferred' -- "$cur" )) | |
| } | |
| _psql () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -h | --host) | |
| _known_hosts_real "$cur"; | |
| return 0 | |
| ;; | |
| -U | --username) | |
| _pg_users; | |
| return 0 | |
| ;; | |
| -d | --dbname) | |
| _pg_databases; | |
| return 0 | |
| ;; | |
| -o | --output | -f | --file | -L | --log-file) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -c | --command | -F | --field-separator | -p | --port | -P | --pset | -R | --record-separator | -T | --table-attr | -v | --set | --variable) | |
| return 0 | |
| ;; | |
| -\? | --help | -V | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--echo-all --no-align --command --dbname \ | |
| --echo-queries --echo-hidden --file --field-separator --host \ | |
| --html --list --log-file --output --port --pset --quiet \ | |
| --record-separator --single-step --single-line --tuples-only \ | |
| --table-attr --username --set --version --password --expanded \ | |
| --no-psqlrc --single-transaction --help' -- "$cur" )); | |
| else | |
| _pg_databases; | |
| fi | |
| } | |
| _python () | |
| { | |
| local prev cur i; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -'?' | -h | --help | -V | --version | -c | -m) | |
| return 0 | |
| ;; | |
| -Q) | |
| COMPREPLY=($( compgen -W "old new warn warnall" -- "$cur" )); | |
| return 0 | |
| ;; | |
| -W) | |
| COMPREPLY=($( compgen -W "ignore default all module once error" -- "$cur" )); | |
| return 0 | |
| ;; | |
| !(?(*/)python*([0-9.])|-?)) | |
| [[ $COMP_CWORD -lt 2 || ${COMP_WORDS[COMP_CWORD-2]} != -@(Q|W) ]] && _filedir | |
| ;; | |
| esac; | |
| for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| if [[ ${COMP_WORDS[i]} == -c ]]; then | |
| _filedir; | |
| fi; | |
| done; | |
| if [[ "$cur" != -* ]]; then | |
| _filedir 'py?([co])'; | |
| else | |
| COMPREPLY=($( compgen -W "$( _parse_help $1 -h )" -- "$cur" )); | |
| fi; | |
| return 0 | |
| } | |
| _quota () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-F --format -g --group -u --user -v \ | |
| --verbose -s --human-readable -p --raw-grace -i --no-autofs -l \ | |
| --local-only -A --all-nfs -m --no-mixed-pathnames -q --quiet -Q \ | |
| --quiet-refuse -w --no-wrap' -- "$cur" )); | |
| else | |
| _user_or_group; | |
| fi | |
| } | |
| _quota_formats () | |
| { | |
| COMPREPLY=($( compgen -W 'vfsold vfsv0 rpc xfs' -- "$cur" )) | |
| } | |
| _quotacheck () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-b --backup -v --verbose -d --debug \ | |
| -g --group -u --user -c --create-files -f --force -i \ | |
| --interactive -n --use-first-dquot -M --try-remount -m \ | |
| --no-remount -R --exclude-root -F --format -a --all' -- "$cur" )); | |
| else | |
| _filesystems; | |
| fi | |
| } | |
| _quotaoff () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| -x | --xfs-command) | |
| COMPREPLY=($( compgen -W 'delete enforce' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a --all -v --verbose -u --user \ | |
| -g --group -p --print-state -x --xfs-command -F --format' -- "$cur" )); | |
| else | |
| _filesystems; | |
| fi | |
| } | |
| _quotaon () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a --all -v --verbose -u --user \ | |
| -g --group -f --off -p --print-state -F --format' -- "$cur" )); | |
| else | |
| _filesystems; | |
| fi | |
| } | |
| _quote_readline_by_ref () | |
| { | |
| if [[ ${1:0:1} == "'" ]]; then | |
| if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then | |
| printf -v $2 %s "${1:1}"; | |
| else | |
| printf -v $2 %q "${1:1}"; | |
| printf -v $2 %q ${!2}; | |
| fi; | |
| else | |
| if [[ ${BASH_VERSINFO[0]} -le 3 && ${1:0:1} == '"' ]]; then | |
| printf -v $2 %q "${1:1}"; | |
| else | |
| printf -v $2 %q "$1"; | |
| fi; | |
| fi; | |
| [[ ${!2:0:1} == '$' ]] && eval $2=${!2} | |
| } | |
| _rbenv () | |
| { | |
| COMPREPLY=(); | |
| local word="${COMP_WORDS[COMP_CWORD]}"; | |
| if [ "$COMP_CWORD" -eq 1 ]; then | |
| COMPREPLY=($(compgen -W "$(rbenv commands)" -- "$word")); | |
| else | |
| local words=("${COMP_WORDS[@]}"); | |
| unset words[0]; | |
| unset words[$COMP_CWORD]; | |
| local completions=$(rbenv completions "${words[@]}"); | |
| COMPREPLY=($(compgen -W "$completions" -- "$word")); | |
| fi | |
| } | |
| _realcommand () | |
| { | |
| type -P "$1" > /dev/null && { | |
| if type -p realpath > /dev/null; then | |
| realpath "$(type -P "$1")"; | |
| else | |
| if type -p readlink > /dev/null; then | |
| readlink "$(type -P "$1")"; | |
| else | |
| type -P "$1"; | |
| fi; | |
| fi | |
| } | |
| } | |
| _renice () | |
| { | |
| local command cur curopt i; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| command=$1; | |
| i=0; | |
| while [[ $i -le $COMP_CWORD && ${#COMPREPLY[@]} -eq 0 ]]; do | |
| curopt=${COMP_WORDS[COMP_CWORD-$i]}; | |
| case "$curopt" in | |
| -u) | |
| _allowed_users | |
| ;; | |
| -g) | |
| _pgids | |
| ;; | |
| -p | $command) | |
| _pids | |
| ;; | |
| esac; | |
| i=$(( ++i )); | |
| done | |
| } | |
| _reply_compgen_array () | |
| { | |
| local i wlist; | |
| for i in ${!COMPREPLY[*]}; | |
| do | |
| local q=$(quote "$(printf %q "${COMPREPLY[$i]}")"); | |
| wlist+=$q' | |
| '; | |
| done; | |
| local ecur="$cur"; | |
| ecur="${ecur//\\/\\\\}"; | |
| ecur="${ecur//\'/\'}"; | |
| local oldifs=$IFS; | |
| IFS=' | |
| ' eval 'COMPREPLY=(`compgen -W "$wlist" -- "${ecur}"`)'; | |
| IFS=$oldifs | |
| } | |
| _repquota () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a --all -v --verbose -s --human-readable \ | |
| -c --batch-translation -C --no-batch-translation -t \ | |
| --truncate-names -n --no-names -p --raw-grace -i --no-autofs \ | |
| -u --user -g --group -F --format' -- "$cur" )); | |
| else | |
| _filesystems; | |
| fi | |
| } | |
| _ri () | |
| { | |
| local cur class method prefix ri_path ri_version separator IFS; | |
| local -a classes; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| ri_path=$(type -p ri); | |
| ri_version="$(ruby -W0 $ri_path -v 2>&1)" || ri_version=integrated; | |
| [ "$ri_version" != "${ri_version%200*}" ] && ri_version=integrated; | |
| IFS=', | |
| '; | |
| if [[ "$cur" == [A-Z]*[#.]* ]]; then | |
| [[ "$cur" == *#* ]] && separator=# || separator=.; | |
| class=${cur%$separator*}; | |
| method=${cur#*$separator}; | |
| classes=($class); | |
| prefix="-P $class$separator"; | |
| ri_get_methods; | |
| return 0; | |
| fi; | |
| if [ "$ri_version" = integrated ]; then | |
| classes=($( ri -c | ruby -ne 'if /^\s*$/..$stdin.eof then \ | |
| if /, [A-Z]+/ then print; end; end' )); | |
| else | |
| if [ "$ri_version" = "ri 1.8a" ]; then | |
| classes=($( ruby -W0 $ri_path | ruby -ne 'if /^'"'"'ri'"'"' has/..$stdin.eof then \ | |
| if /^ .*[A-Z]/ then print; end; end' )); | |
| else | |
| classes=($( ruby -W0 $ri_path | ruby -ne 'if /^I have/..$stdin.eof then \ | |
| if /^ .*[A-Z]/ then print; end; end' )); | |
| fi; | |
| fi; | |
| COMPREPLY=($( compgen -W '${classes[@]}' -- "$cur" )); | |
| if [[ "$cur" == [A-Z]* ]]; then | |
| return 0; | |
| fi; | |
| method=$cur; | |
| ri_get_methods | |
| } | |
| _rl_enabled () | |
| { | |
| [[ "$( bind -v )" = *$1+([[:space:]])on* ]] | |
| } | |
| _root_command () | |
| { | |
| local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin; | |
| local root_command=$1; | |
| _command $1 $2 $3 | |
| } | |
| _rsync () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref -n : cur prev; | |
| _expand || return 0; | |
| case $prev in | |
| --config | --password-file | --include-from | --exclude-from) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -T | --temp-dir | --compare-dest) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| -e | --rsh) | |
| COMPREPLY=($( compgen -W 'rsh ssh' -- "$cur" )); | |
| return 0 | |
| ;; | |
| --compress-level) | |
| COMPREPLY=($( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| case $cur in | |
| -*) | |
| COMPREPLY=($( compgen -W '--verbose --quiet --no-motd --checksum \ | |
| --archive --recursive --relative --no-implied-dirs \ | |
| --backup --backup-dir --suffix= --update --inplace --append \ | |
| --append-verify --dirs --old-dirs --links --copy-links \ | |
| --copy-unsafe-links --safe-links --copy-dirlinks \ | |
| --keep-dirlinks --hard-links --perms --executability --chmod= \ | |
| --acls --xattrs --owner --group --devices --copy-devices \ | |
| --specials --times --omit-dir-times --super --fake-super \ | |
| --sparse --dry-run --whole-file --no-whole-file \ | |
| --one-file-system --block-size= --rsh= --rsync-path= \ | |
| --existing --ignore-existing --remove-source-files --delete \ | |
| --delete-before --delete-during --delete-delay --delete-after \ | |
| --delete-excluded --ignore-errors --force --max-delete= \ | |
| --max-size= --min-size= --partial --partial-dir= \ | |
| --delay-updates --prune-empty-dirs --numeric-ids --timeout= \ | |
| --contimeout= --ignore-times --size-only --modify-window= \ | |
| --temp-dir= --fuzzy --compare-dest= --copy-dest= --link-dest= \ | |
| --compress --compress-level= --skip-compress= --cvs-exclude \ | |
| --filter= --exclude= --exclude-from= --include= \ | |
| --include-from= --files-from= --from0 --protect-args \ | |
| --address= --port= --sockopts= --blocking-io --no-blocking-io \ | |
| --stats --8-bit-output --human-readable --progress \ | |
| --itemize-changes --out-format= --log-file= \ | |
| --log-file-format= --password-file= --list-only --bwlimit= \ | |
| --write-batch= --only-write-batch= --read-batch= --protocol= \ | |
| --iconv= --ipv4 --ipv6 --version --help --daemon --config= \ | |
| --no-detach' -- "$cur" )) | |
| ;; | |
| *:*) | |
| if type _scp_remote_files >&/dev/null; then | |
| local i shell=ssh; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then | |
| shell=${COMP_WORDS[i+1]}; | |
| break; | |
| fi; | |
| done; | |
| [ "$shell" = ssh ] && _scp_remote_files; | |
| fi | |
| ;; | |
| *) | |
| _known_hosts_real -c -a "$cur"; | |
| type _scp_local_files >&/dev/null && _scp_local_files || _filedir | |
| ;; | |
| esac; | |
| return 0 | |
| } | |
| _scp () | |
| { | |
| local configfile cur prev prefix; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| _ssh_suboption_check && { | |
| COMPREPLY=("${COMPREPLY[@]/%/ }"); | |
| return 0 | |
| }; | |
| case $prev in | |
| -l | -P) | |
| return 0 | |
| ;; | |
| -F | -i | -S) | |
| _filedir; | |
| type compopt >&/dev/null && compopt +o nospace; | |
| return 0 | |
| ;; | |
| -c) | |
| _ssh_ciphers; | |
| COMPREPLY=("${COMPREPLY[@]/%/ }"); | |
| return 0 | |
| ;; | |
| -o) | |
| _ssh_options; | |
| return 0 | |
| ;; | |
| esac; | |
| _expand || return 0; | |
| if [[ "$cur" == *:* ]]; then | |
| _scp_remote_files; | |
| return 0; | |
| fi; | |
| if [[ "$cur" == -F* ]]; then | |
| cur=${cur#-F}; | |
| prefix=-F; | |
| else | |
| set -- "${COMP_WORDS[@]}"; | |
| while [ $# -gt 0 ]; do | |
| if [ "${1:0:2}" = -F ]; then | |
| if [ ${#1} -gt 2 ]; then | |
| configfile="$(dequote "${1:2}")"; | |
| else | |
| shift; | |
| [ "$1" ] && configfile="$(dequote "$1")"; | |
| fi; | |
| break; | |
| fi; | |
| shift; | |
| done; | |
| case $cur in | |
| -*) | |
| COMPREPLY=($( compgen -W '-1 -2 -4 -6 -B -C -c -F -i -l -o \ | |
| -P -p -q -r -S -v' -- "$cur" )); | |
| COMPREPLY=("${COMPREPLY[@]/%/ }"); | |
| return 0 | |
| ;; | |
| */*) | |
| ;; | |
| *) | |
| _known_hosts_real -c -a -F "$configfile" "$cur" | |
| ;; | |
| esac; | |
| fi; | |
| _scp_local_files "$prefix"; | |
| return 0 | |
| } | |
| _scp_local_files () | |
| { | |
| local IFS=' | |
| '; | |
| local dirsonly=false; | |
| if [ "$1" = -d ]; then | |
| dirsonly=true; | |
| shift; | |
| fi; | |
| if $dirsonly; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/")); | |
| else | |
| COMPREPLY=("${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' -e "s/^/$1/")); | |
| fi | |
| } | |
| _scp_remote_files () | |
| { | |
| local IFS=' | |
| '; | |
| cur=${cur/\\:/:}; | |
| local userhost=${cur%%?(\\):*}; | |
| local path=${cur#*:}; | |
| path=$( sed -e 's/\\\\\\\('$_scp_path_esc'\)/\\\1/g' <<<"$path" ); | |
| if [ -z "$path" ]; then | |
| path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null); | |
| fi; | |
| local files; | |
| if [ "$1" = -d ]; then | |
| files=$( ssh -o 'Batchmode yes' $userhost command ls -aF1d "$path*" 2>/dev/null | sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e '/[^\/]$/d' ); | |
| else | |
| files=$( ssh -o 'Batchmode yes' $userhost command ls -aF1d "$path*" 2>/dev/null | sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ); | |
| fi; | |
| COMPREPLY=("${COMPREPLY[@]}" $files) | |
| } | |
| _screen () | |
| { | |
| local cur prev words cword; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev words cword; | |
| if ((cword > 2)); then | |
| case ${words[cword-2]} in | |
| -[dD]) | |
| _screen_sessions; | |
| return 0 | |
| ;; | |
| esac; | |
| fi; | |
| case $prev in | |
| -[rR]) | |
| _screen_sessions 'Detached'; | |
| return 0 | |
| ;; | |
| -[dD]) | |
| _screen_sessions 'Attached'; | |
| return 0 | |
| ;; | |
| -x) | |
| _screen_sessions; | |
| return 0 | |
| ;; | |
| -s) | |
| _shells; | |
| return 0 | |
| ;; | |
| -c) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a -A -c -d -D -e -f -fn -fa -h -i -ln \ | |
| -list -L -m -O -p -q -r -R -s -S -t -U -v -wipe -x -X --help \ | |
| --version' -- "$cur" )); | |
| fi | |
| } | |
| _screen_sessions () | |
| { | |
| COMPREPLY=($( compgen -W "$( command screen -ls | sed -ne 's|^\t\{1,\}\([0-9]\{1,\}\.[^\t]\{1,\}\).*'"$1"'.*$|\1|p' )" -- "$cur" )) | |
| } | |
| _services () | |
| { | |
| local sysvdir famdir; | |
| [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d; | |
| famdir=/etc/xinetd.d; | |
| COMPREPLY=($( printf '%s\n' $sysvdir/!(*.rpm@(orig|new|save)|*~|functions) )); | |
| if [ -d $famdir ]; then | |
| COMPREPLY=("${COMPREPLY[@]}" $( printf '%s\n' $famdir/!(*.rpm@(orig|new|save)|*~) )); | |
| fi; | |
| COMPREPLY=($( compgen -W '${COMPREPLY[@]#@($sysvdir|$famdir)/}' -- "$cur" )) | |
| } | |
| _setquota () | |
| { | |
| local cur prev split=false; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -F | --format) | |
| _quota_formats; | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-r --remote -m --no-mixed-pathnames \ | |
| -F --format -g --group -u --user -p --prototype -b --batch \ | |
| -c --continue-batch -t --edit-period -T --edit-times -a --all' -- "$cur" )); | |
| else | |
| _count_args; | |
| case $args in | |
| 1) | |
| _user_or_group | |
| ;; | |
| 2) | |
| _filesystems | |
| ;; | |
| esac; | |
| fi | |
| } | |
| _sftp () | |
| { | |
| local cur prev configfile; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| _ssh_suboption_check && return 0; | |
| case $prev in | |
| -b | -F | -P) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -o) | |
| _ssh_options; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -F* ]]; then | |
| cur=${cur#-F}; | |
| _filedir; | |
| COMPREPLY=("${COMPREPLY[@]/#/-F}"); | |
| cur=-F$cur; | |
| else | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-1 -C -v -B -b -F -o -P -R -S -s' -- "$cur" )); | |
| else | |
| set -- "${COMP_WORDS[@]}"; | |
| while [ $# -gt 0 ]; do | |
| if [ "${1:0:2}" = -F ]; then | |
| if [ ${#1} -gt 2 ]; then | |
| configfile="$(dequote "${1:2}")"; | |
| else | |
| shift; | |
| [ "$1" ] && configfile="$(dequote "$1")"; | |
| fi; | |
| break; | |
| fi; | |
| shift; | |
| done; | |
| _known_hosts_real -a -F "$configfile" "$cur"; | |
| fi; | |
| fi; | |
| return 0 | |
| } | |
| _sh () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -c) | |
| return 0 | |
| ;; | |
| -o | +o) | |
| COMPREPLY=($( compgen -W 'allexport errexit ignoreeof monitor | |
| noclobber noglob noexec nolog notify nounset verbose vi | |
| xtrace' -- "$cur" )); | |
| return 0 | |
| ;; | |
| esac; | |
| local opts="-a -b -C -e -f -h -i -m -n -o -u -v -x"; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W "$opts -c -s" -- "$cur" )); | |
| return 0; | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W "${opts//-/+}" -- "$cur" )); | |
| return 0; | |
| fi; | |
| fi; | |
| _filedir sh | |
| } | |
| _shells () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W '$( command grep "^[[:space:]]*/" /etc/shells 2>/dev/null )' -- "$cur" )) | |
| } | |
| _signals () | |
| { | |
| local i; | |
| COMPREPLY=($( compgen -A signal SIG${cur#-} )); | |
| for ((i=0; i < ${#COMPREPLY[@]}; i++ )) | |
| do | |
| COMPREPLY[i]=-${COMPREPLY[i]#SIG}; | |
| done | |
| } | |
| _split_longopt () | |
| { | |
| if [[ "$cur" == --?*=* ]]; then | |
| prev="${cur%%?(\\)=*}"; | |
| cur="${cur#*=}"; | |
| return 0; | |
| fi; | |
| return 1 | |
| } | |
| _sqlite3 () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| local dbexts='@(sqlite?(3)|?(s?(3))db)'; | |
| case $prev in | |
| -help | -version | -separator | -nullvalue | *.$dbexts) | |
| return 0 | |
| ;; | |
| -init) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-help -init -echo -header -noheader -bail | |
| -interactive -batch -column -csv -html -line -list -separator | |
| -nullvalue -version' -- "$cur" )); | |
| return 0; | |
| fi; | |
| _filedir $dbexts | |
| } | |
| _ssh () | |
| { | |
| local cur prev configfile; | |
| local -a config; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur prev; | |
| _ssh_suboption_check && return 0; | |
| case $prev in | |
| -F | -i | -S) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -c) | |
| _ssh_ciphers; | |
| return 0 | |
| ;; | |
| -m) | |
| _ssh_macs; | |
| return 0 | |
| ;; | |
| -l) | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| return 0 | |
| ;; | |
| -o) | |
| _ssh_options; | |
| return 0 | |
| ;; | |
| -w) | |
| _available_interfaces; | |
| return 0 | |
| ;; | |
| -b) | |
| _ssh_bindaddress; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -F* ]]; then | |
| cur=${cur#-F}; | |
| _filedir; | |
| COMPREPLY=("${COMPREPLY[@]/#/-F}"); | |
| cur=-F$cur; | |
| else | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-1 -2 -4 -6 -A -a -C -f -g -K -k -M \ | |
| -N -n -q -s -T -t -V -v -X -v -Y -y -b -b -c -D -e -F \ | |
| -i -L -l -m -O -o -p -R -S -w' -- "$cur" )); | |
| else | |
| set -- "${COMP_WORDS[@]}"; | |
| while [ $# -gt 0 ]; do | |
| if [ "${1:0:2}" = -F ]; then | |
| if [ ${#1} -gt 2 ]; then | |
| configfile="$(dequote "${1:2}")"; | |
| else | |
| shift; | |
| [ "$1" ] && configfile="$(dequote "$1")"; | |
| fi; | |
| break; | |
| fi; | |
| shift; | |
| done; | |
| _known_hosts_real -a -F "$configfile" "$cur"; | |
| if [ $COMP_CWORD -ne 1 ]; then | |
| _compopt_o_filenames; | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -c -- "$cur" )); | |
| fi; | |
| fi; | |
| fi; | |
| return 0 | |
| } | |
| _ssh_bindaddress () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W "$( PATH="$PATH:/sbin" ifconfig -a | sed -ne 's/.*addr:\([^[:space:]]*\).*/\1/p' -ne 's/.*inet[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' )" -- "$cur" )) | |
| } | |
| _ssh_ciphers () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W '3des-cbc aes128-cbc \ | |
| aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr arcfour128 \ | |
| arcfour256 arcfour blowfish-cbc cast128-cbc' -- "$cur" )) | |
| } | |
| _ssh_copy_id () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -i) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-i' -- "$cur" )); | |
| else | |
| _known_hosts_real -a "$cur"; | |
| fi; | |
| return 0 | |
| } | |
| _ssh_macs () | |
| { | |
| COMPREPLY=("${COMPREPLY[@]}" $( compgen -W 'hmac-md5 hmac-sha1 \ | |
| umac-64@openssh.com hmac-ripemd160 hmac-sha1-96 hmac-md5-96' -- "$cur" )) | |
| } | |
| _ssh_options () | |
| { | |
| type compopt >&/dev/null && compopt -o nospace; | |
| COMPREPLY=($( compgen -S = -W 'AddressFamily BatchMode BindAddress \ | |
| ChallengeResponseAuthentication CheckHostIP Cipher Ciphers \ | |
| ClearAllForwardings Compression CompressionLevel ConnectionAttempts \ | |
| ConnectTimeout ControlMaster ControlPath DynamicForward EscapeChar \ | |
| ExitOnForwardFailure ForwardAgent ForwardX11 ForwardX11Trusted \ | |
| GatewayPorts GlobalKnownHostsFile GSSAPIAuthentication \ | |
| GSSAPIDelegateCredentials HashKnownHosts Host HostbasedAuthentication \ | |
| HostKeyAlgorithms HostKeyAlias HostName IdentityFile IdentitiesOnly \ | |
| KbdInteractiveDevices LocalCommand LocalForward LogLevel MACs \ | |
| NoHostAuthenticationForLocalhost NumberOfPasswordPrompts \ | |
| PasswordAuthentication PermitLocalCommand Port \ | |
| PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication \ | |
| RekeyLimit RemoteForward RhostsRSAAuthentication RSAAuthentication \ | |
| SendEnv ServerAliveInterval ServerAliveCountMax SmartcardDevice \ | |
| StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice \ | |
| UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS \ | |
| VisualHostKey XAuthLocation' -- "$cur" )) | |
| } | |
| _ssh_suboption () | |
| { | |
| local prev=${1%%=*} cur=${1#*=}; | |
| case $prev in | |
| BatchMode | ChallengeResponseAuthentication | CheckHostIP | ClearAllForwardings | Compression | ExitOnForwardFailure | ForwardAgent | ForwardX11 | ForwardX11Trusted | GatewayPorts | GSSAPIAuthentication | GSSAPIKeyExchange | GSSAPIDelegateCredentials | GSSAPITrustDns | HashKnownHosts | HostbasedAuthentication | IdentitiesOnly | KbdInteractiveAuthentication | KbdInteractiveDevices | NoHostAuthenticationForLocalhost | PasswordAuthentication | PubkeyAuthentication | RhostsRSAAuthentication | RSAAuthentication | StrictHostKeyChecking | TCPKeepAlive | UsePrivilegedPort | VerifyHostKeyDNS | VisualHostKey) | |
| COMPREPLY=($( compgen -W 'yes no' -- "$cur")) | |
| ;; | |
| AddressFamily) | |
| COMPREPLY=($( compgen -W 'any inet inet6' -- "$cur" )) | |
| ;; | |
| BindAddress) | |
| _ssh_bindaddress | |
| ;; | |
| Cipher) | |
| COMPREPLY=($( compgen -W 'blowfish des 3des' -- "$cur" )) | |
| ;; | |
| Protocol) | |
| COMPREPLY=($( compgen -W '1 2 1,2 2,1' -- "$cur" )) | |
| ;; | |
| Tunnel) | |
| COMPREPLY=($( compgen -W 'yes no point-to-point ethernet' -- "$cur" )) | |
| ;; | |
| PreferredAuthentications) | |
| COMPREPLY=($( compgen -W 'gssapi-with-mic host-based \ | |
| publickey keyboard-interactive password' -- "$cur" )) | |
| ;; | |
| MACs) | |
| _ssh_macs | |
| ;; | |
| Ciphers) | |
| _ssh_ciphers | |
| ;; | |
| esac; | |
| return 0 | |
| } | |
| _ssh_suboption_check () | |
| { | |
| local cureq=`_get_cword :=` preveq=`_get_pword :=`; | |
| if [[ $cureq == *=* && $preveq == -o ]]; then | |
| _ssh_suboption $cureq; | |
| return $?; | |
| fi; | |
| return 1 | |
| } | |
| _stream () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| _ImageMagick; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-authenticate -channel -colorspace \ | |
| -compress -debug -define -density -depth -extract \ | |
| -help -identify -interlace -interpolate -limit -list \ | |
| -log -map -monitor -quantize -quiet -regard-warnings \ | |
| -respect-parenthesis -sampling-factor -seed -set \ | |
| -size -storage-type -transparent-color -verbose \ | |
| -version -virtual-pixel' -- "$cur" )); | |
| else | |
| if [[ "$cur" == +* ]]; then | |
| COMPREPLY=($( compgen -W '+debug' -- "$cur" )); | |
| else | |
| _filedir; | |
| fi; | |
| fi | |
| } | |
| _sysctl () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| COMPREPLY=($( compgen -W "$( PATH="$PATH:/sbin" sysctl -N -a 2>/dev/null )" -- "$cur" )); | |
| return 0 | |
| } | |
| _tar () | |
| { | |
| local cur ext regex tar untar; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| if [ $COMP_CWORD -eq 1 ]; then | |
| COMPREPLY=($( compgen -W 'c t x u r d A' -- "$cur" )); | |
| return 0; | |
| fi; | |
| case ${COMP_WORDS[1]} in | |
| ?(-)[cr]*f) | |
| _filedir; | |
| return 0 | |
| ;; | |
| +([^IZzJjy])f) | |
| ext='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'; | |
| regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[gx]z\|bz?(2)\|lzma\)\)\?\|t\([glx]z\|bz2\?\)\)' | |
| ;; | |
| *[Zz]*f) | |
| ext='@(t?(ar.)|gem.|spkg.)@(gz|Z)'; | |
| regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)' | |
| ;; | |
| *[Ijy]*f) | |
| ext='@(@(t?(ar.)|gem.)bz?(2)|spkg)'; | |
| regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\)' | |
| ;; | |
| *[J]*f) | |
| ext='@(t?(ar.)|gem.|spkg.)@(lz?(ma)|xz)'; | |
| regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(lzma\|xz\)\?' | |
| ;; | |
| *) | |
| _filedir; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$COMP_LINE" == *$ext' ' ]]; then | |
| tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"$COMP_LINE" ); | |
| untar=t${COMP_WORDS[1]//[^Izjyf]/}; | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -W "$( printf '%s\n' $( tar $untar $tar 2>/dev/null ) )" -- "$cur" )); | |
| return 0; | |
| fi; | |
| _filedir "$ext"; | |
| return 0 | |
| } | |
| _tcpdump () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -r | -w | -F) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -i) | |
| _available_interfaces -a; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '-a -d -e -f -l -n -N -O -p \ | |
| -q -R -S -t -u -v -x -C -F -i -m -r -s -T -w -E' -- "$cur" )); | |
| fi | |
| } | |
| _tig () | |
| { | |
| local i c=1 command __tig_dir; | |
| while [ $c -lt $COMP_CWORD ]; do | |
| i="${COMP_WORDS[c]}"; | |
| case "$i" in | |
| --) | |
| command="log"; | |
| break | |
| ;; | |
| -*) | |
| ;; | |
| *) | |
| command="$i"; | |
| break | |
| ;; | |
| esac; | |
| c=$((++c)); | |
| done; | |
| if [ $c -eq $COMP_CWORD -a -z "$command" ]; then | |
| case "${COMP_WORDS[COMP_CWORD]}" in | |
| --*=*) | |
| COMPREPLY=() | |
| ;; | |
| -*) | |
| _tig_options | |
| ;; | |
| *) | |
| _tigcomp "blame status show log stash grep $(__tig_refs)" | |
| ;; | |
| esac; | |
| return; | |
| fi; | |
| case "$command" in | |
| blame) | |
| _tig_blame | |
| ;; | |
| show) | |
| _tig_show | |
| ;; | |
| status) | |
| ;; | |
| *) | |
| _tigcomp " | |
| $(__tig_complete_file) | |
| $(__tig_refs) | |
| " | |
| ;; | |
| esac | |
| } | |
| _tig_blame () | |
| { | |
| local reply="" ref=HEAD cur="${COMP_WORDS[COMP_CWORD]}"; | |
| if test "$COMP_CWORD" -lt 3; then | |
| reply="$(__tig_refs)"; | |
| else | |
| ref="${COMP_WORDS[2]}"; | |
| fi; | |
| reply="$reply $(git --git-dir="$(__tigdir)" ls-tree "$ref" | sed '/^100... blob /s,^.* ,, | |
| /^040000 tree /{ | |
| s,^.* ,, | |
| s,$,/, | |
| } | |
| s/^.* //')"; | |
| _tigcomp "$reply" | |
| } | |
| _tig_options () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --pretty=*) | |
| _tigcomp " | |
| oneline short medium full fuller email raw | |
| " "" "${cur##--pretty=}"; | |
| return | |
| ;; | |
| --*) | |
| _tigcomp " | |
| --max-count= --max-age= --since= --after= | |
| --min-age= --before= --until= | |
| --root --not --topo-order --date-order | |
| --no-merges | |
| --abbrev-commit --abbrev= | |
| --relative-date | |
| --author= --committer= --grep= | |
| --all-match | |
| --pretty= --name-status --name-only | |
| --not --all | |
| --help --version | |
| "; | |
| return | |
| ;; | |
| -*) | |
| _tigcomp "-v -h"; | |
| return | |
| ;; | |
| esac; | |
| __tig_complete_revlist | |
| } | |
| _tig_show () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| case "$cur" in | |
| --pretty=*) | |
| _tigcomp " | |
| oneline short medium full fuller email raw | |
| " "" "${cur##--pretty=}"; | |
| return | |
| ;; | |
| --*) | |
| _tigcomp "--pretty="; | |
| return | |
| ;; | |
| esac; | |
| __tig_complete_file | |
| } | |
| _tigcomp () | |
| { | |
| local all c s=' | |
| ' IFS=' '' '' | |
| '; | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| if [ $# -gt 2 ]; then | |
| cur="$3"; | |
| fi; | |
| for c in $1; | |
| do | |
| case "$c$4" in | |
| --*=*) | |
| all="$all$c$4$s" | |
| ;; | |
| *.) | |
| all="$all$c$4$s" | |
| ;; | |
| *) | |
| all="$all$c$4 $s" | |
| ;; | |
| esac; | |
| done; | |
| IFS=$s; | |
| COMPREPLY=($(compgen -P "$2" -W "$all" -- "$cur")); | |
| return | |
| } | |
| _tilde () | |
| { | |
| local result=0; | |
| if [[ ${1:0:1} == "~" && $1 == ${1//\/} ]]; then | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -P '~' -u "${1#\~}" )); | |
| result=${#COMPREPLY[@]}; | |
| fi; | |
| return $result | |
| } | |
| _tmux () | |
| { | |
| local cur prev opts; | |
| COMPREPLY=(); | |
| cur="${COMP_WORDS[COMP_CWORD]}"; | |
| prev="${COMP_WORDS[COMP_CWORD-1]}"; | |
| opts=" attach-session bind-key break-pane capture-pane choose-client choose-session choose-window clear-history clock-mode command-prompt confirm-before copy-buffer copy-mode delete-buffer detach-client display-message display-panes down-pane find-window has-session if-shell join-pane kill-pane kill-server kill-session kill-window last-window link-window list-buffers list-clients list-commands list-keys list-panes list-sessions list-windows load-buffer lock-client lock-server lock-session move-window new-session new-window next-layout next-window paste-buffer pipe-pane previous-layout previous-window refresh-client rename-session rename-window resize-pane respawn-window rotate-window run-shell save-buffer select-layout select-pane select-prompt select-window send-keys send-prefix server-info set-buffer set-environment set-option set-window-option show-buffer show-environment show-messages show-options show-window-options source-file split-window start-server suspend-client swap-pane swap-window switch-client unbind-key unlink-window up-pane"; | |
| COMPREPLY=($(compgen -W "${opts}" -- ${cur})); | |
| return 0 | |
| } | |
| _uids () | |
| { | |
| if type getent >&/dev/null; then | |
| COMPREPLY=($( compgen -W '$( getent passwd | cut -d: -f3 )' -- "$cur" )); | |
| else | |
| if type perl >&/dev/null; then | |
| COMPREPLY=($( compgen -W '$( perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"' )' -- "$cur" )); | |
| else | |
| COMPREPLY=($( compgen -W '$( cut -d: -f3 /etc/passwd )' -- "$cur" )); | |
| fi; | |
| fi | |
| } | |
| _umount () | |
| { | |
| local cur; | |
| _get_comp_words_by_ref cur; | |
| COMPREPLY=(); | |
| if [[ $(uname -s) = Linux && -r /proc/mounts ]]; then | |
| _linux_fstab < /proc/mounts; | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -W '$( mount | cut -d" " -f 3 )' -- "$cur" )); | |
| fi; | |
| return 0 | |
| } | |
| _unpack200 () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| '-?' | -h | --help | -V | --version | -J) | |
| return 0 | |
| ;; | |
| -H | --deflate-hint) | |
| COMPREPLY=($( compgen -W 'true false keep' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -l | --log-file) | |
| COMPREPLY=($( compgen -W '-' -- "$cur" )); | |
| _filedir log; | |
| return 0 | |
| ;; | |
| esac; | |
| local i pack=false jar=false; | |
| for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ )) | |
| do | |
| case ${COMP_WORDS[i]} in | |
| *.pack | *.pack.gz) | |
| pack=true | |
| ;; | |
| *.jar) | |
| jar=true | |
| ;; | |
| esac; | |
| done; | |
| if ! $pack; then | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--deflate-hint= --remove-pack-file \ | |
| --verbose --quiet --log-file= --help --version' -- "$cur" )); | |
| [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && type compopt >&/dev/null && compopt -o nospace; | |
| else | |
| _filedir 'pack?(.gz)'; | |
| fi; | |
| else | |
| if ! $jar; then | |
| _filedir jar; | |
| fi; | |
| fi | |
| } | |
| _upvar () | |
| { | |
| if unset -v "$1"; then | |
| if (( $# == 2 )); then | |
| eval $1=\"\$2\"; | |
| else | |
| eval $1=\(\"\${@:2}\"\); | |
| fi; | |
| fi | |
| } | |
| _upvars () | |
| { | |
| if ! (( $# )); then | |
| echo "${FUNCNAME[0]}: usage: ${FUNCNAME[0]} [-v varname" "value] | [-aN varname [value ...]] ..." 1>&2; | |
| return 2; | |
| fi; | |
| while (( $# )); do | |
| case $1 in | |
| -a*) | |
| [[ -n ${1#-a} ]] || { | |
| echo "bash: ${FUNCNAME[0]}: \`$1': missing" "number specifier" 1>&2; | |
| return 1 | |
| }; | |
| printf %d "${1#-a}" >&/dev/null || { | |
| echo "bash:" "${FUNCNAME[0]}: \`$1': invalid number specifier" 1>&2; | |
| return 1 | |
| }; | |
| [[ -n "$2" ]] && unset -v "$2" && eval $2=\(\"\${@:3:${1#-a}}\"\) && shift $((${1#-a} + 2)) || { | |
| echo "bash: ${FUNCNAME[0]}:" "\`$1${2+ }$2': missing argument(s)" 1>&2; | |
| return 1 | |
| } | |
| ;; | |
| -v) | |
| [[ -n "$2" ]] && unset -v "$2" && eval $2=\"\$3\" && shift 3 || { | |
| echo "bash: ${FUNCNAME[0]}: $1: missing" "argument(s)" 1>&2; | |
| return 1 | |
| } | |
| ;; | |
| *) | |
| echo "bash: ${FUNCNAME[0]}: $1: invalid option" 1>&2; | |
| return 1 | |
| ;; | |
| esac; | |
| done | |
| } | |
| _usb_ids () | |
| { | |
| COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$( PATH="$PATH:/sbin" lsusb | awk '{print $6}' )" -- "$cur" )) | |
| } | |
| _user_at_host () | |
| { | |
| local cur; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref -n : cur; | |
| if [[ $cur == *@* ]]; then | |
| _known_hosts_real "$cur"; | |
| else | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| fi; | |
| return 0 | |
| } | |
| _user_or_group () | |
| { | |
| local i; | |
| for ((i=1; i < COMP_CWORD; i++ )) | |
| do | |
| if [[ "${COMP_WORDS[i]}" == -g ]]; then | |
| COMPREPLY=($( compgen -g -- "$cur" )); | |
| return 0; | |
| fi; | |
| done; | |
| COMPREPLY=($( compgen -u -- "$cur" )) | |
| } | |
| _usergroup () | |
| { | |
| if [[ $cur = *\\\\* || $cur = *:*:* ]]; then | |
| return; | |
| else | |
| if [[ $cur = *\\:* ]]; then | |
| local prefix; | |
| prefix=${cur%%*([^:])}; | |
| prefix=${prefix//\\}; | |
| local mycur="${cur#*[:]}"; | |
| if [[ $1 == -u ]]; then | |
| _allowed_groups "$mycur"; | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -g -- "$mycur" )); | |
| fi; | |
| COMPREPLY=($( compgen -P "$prefix" -W "${COMPREPLY[@]}" )); | |
| else | |
| if [[ $cur = *:* ]]; then | |
| local mycur="${cur#*:}"; | |
| if [[ $1 == -u ]]; then | |
| _allowed_groups "$mycur"; | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -g -- "$mycur" )); | |
| fi; | |
| else | |
| if [[ $1 == -u ]]; then | |
| _allowed_users "$cur"; | |
| else | |
| local IFS=' | |
| '; | |
| COMPREPLY=($( compgen -u -- "$cur" )); | |
| fi; | |
| fi; | |
| fi; | |
| fi | |
| } | |
| _venv () | |
| { | |
| if [[ $VIRTUAL_ENV != "" ]]; then | |
| echo "(${VIRTUAL_ENV##*/})"; | |
| else | |
| echo ""; | |
| fi | |
| } | |
| _vipw () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -h | --help) | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--group --help --passwd \ | |
| --quiet --shadow' -- "$cur" )); | |
| return 0; | |
| fi | |
| } | |
| _virtualenvs () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| COMPREPLY=($(compgen -W "`virtualenvwrapper_show_workon_options`" -- ${cur})) | |
| } | |
| _xmllint () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| -o | --output) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --path | --dtdvalidfpi | --maxmem | --encode | --pattern) | |
| return 0 | |
| ;; | |
| --dtdvalid) | |
| _filedir 'dtd?(.gz)'; | |
| return 0 | |
| ;; | |
| --relaxng) | |
| _filedir 'rng?(.gz)'; | |
| return 0 | |
| ;; | |
| --schema) | |
| _filedir 'xsd?(.gz)'; | |
| return 0 | |
| ;; | |
| --schematron) | |
| _filedir 'sch?(.gz)'; | |
| return 0 | |
| ;; | |
| esac; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '$( xmllint --help 2>&1 | \ | |
| sed -ne "s/^[[:space:]]*\(--[^[:space:]:]*\).*/\1/p" ) \ | |
| -o' -- "$cur" )); | |
| return 0; | |
| fi; | |
| _filedir '@(*ml|htm|svg|xs[dl]|rng|wsdl|jnlp)?(.gz)' | |
| } | |
| _xsltproc () | |
| { | |
| local cur prev; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur prev; | |
| case $prev in | |
| --output | -o) | |
| _filedir; | |
| return 0 | |
| ;; | |
| --maxdepth) | |
| return 0 | |
| ;; | |
| --encoding) | |
| COMPREPLY=($( compgen -W "$( iconv -l | sed -e '/^UTF[1378]/d' -e '/^ISO[0-9_]/d' -e '/^8859/d' -e 's/\/.*//')" -- "$cur" )); | |
| return 0 | |
| ;; | |
| --param | --stringparam) | |
| return 0 | |
| ;; | |
| --path) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| --writesubtree) | |
| _filedir -d; | |
| return 0 | |
| ;; | |
| esac; | |
| [[ $COMP_CWORD -gt 2 && `_get_cword '' 2` == --?(string)param ]] && return 0; | |
| if [[ "$cur" == -* ]]; then | |
| _longopt xsltproc; | |
| else | |
| _filedir '@(xsl|xslt|xml)'; | |
| fi | |
| } | |
| _xz () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--compress --decompress --test --list \ | |
| --keep --force --stdout --suffix --files --files0 --format --check \ | |
| -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 --fast --best --extreme --memory \ | |
| --lzma1 --lzma2 --x86 --powerpc --ia64 --arm --armthumb --sparc \ | |
| --delta --quiet --verbose --no-warn --help --long-help --version' -- "$cur" )); | |
| return 0; | |
| fi; | |
| local split=false; | |
| _split_longopt && split=true; | |
| local xspec="*.@(xz|lzma|txz|tlz)"; | |
| case $prev in | |
| --decompress | --list | --test | -!(-*)[dlt]*) | |
| xspec="!"$xspec | |
| ;; | |
| --files | --files0) | |
| _filedir; | |
| return 0 | |
| ;; | |
| -C | --check) | |
| COMPREPLY=($( compgen -W 'crc32 crc64 sha256' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -F | --format) | |
| COMPREPLY=($( compgen -W 'auto xz lzma raw' -- "$cur" )); | |
| return 0 | |
| ;; | |
| -M | --memory | -S | --suffix | --delta | --lzma1 | --lzma2) | |
| return 0 | |
| ;; | |
| -h | --help | -H | --long-help | -V | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| _expand || return 0; | |
| local IFS=' | |
| '; | |
| _compopt_o_filenames; | |
| COMPREPLY=($( compgen -f -X "$xspec" -- "$cur" ) $( compgen -d -- "$cur" )) | |
| } | |
| _xzdec () | |
| { | |
| COMPREPLY=(); | |
| local cur prev; | |
| _get_comp_words_by_ref cur prev; | |
| if [[ "$cur" == -* ]]; then | |
| COMPREPLY=($( compgen -W '--memory --help --version' -- "$cur" )); | |
| return 0; | |
| fi; | |
| local split=false; | |
| _split_longopt && split=true; | |
| case $prev in | |
| -M | --memory) | |
| return 0 | |
| ;; | |
| -h | --help | -V | --version) | |
| return 0 | |
| ;; | |
| esac; | |
| $split && return 0; | |
| _filedir xz | |
| } | |
| _ypmatch () | |
| { | |
| local cur map cmd; | |
| COMPREPLY=(); | |
| _get_comp_words_by_ref cur; | |
| cmd=${1##*/}; | |
| [[ $cmd == ypcat && $COMP_CWORD -gt 1 ]] && return 0; | |
| [[ $cmd == ypmatch && $COMP_CWORD -gt 2 ]] && return 0; | |
| if [[ $cmd == ypmatch && $COMP_CWORD -eq 1 && ${#COMP_WORDS[@]} -eq 3 ]]; then | |
| map=${COMP_WORDS[2]}; | |
| COMPREPLY=($( compgen -W '$( ypcat $map | \ | |
| cut -d':' -f 1 )' -- "$cur")); | |
| else | |
| [[ $cmd == ypmatch && $COMP_CWORD -ne 2 ]] && return 0; | |
| COMPREPLY=($( compgen -W '$( printf "%s\n" $(ypcat -x | cut -d"\"" -f 2) )' -- "$cur")); | |
| fi; | |
| return 0 | |
| } | |
| add2virtualenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| site_packages="`virtualenvwrapper_get_site_packages_dir`"; | |
| if [ ! -d "${site_packages}" ]; then | |
| echo "ERROR: currently-active virtualenv does not appear to have a site-packages directory" 1>&2; | |
| return 1; | |
| fi; | |
| path_file="$site_packages/_virtualenv_path_extensions.pth"; | |
| if [ "$*" = "" ]; then | |
| echo "Usage: add2virtualenv dir [dir ...]"; | |
| if [ -f "$path_file" ]; then | |
| echo; | |
| echo "Existing paths:"; | |
| cat "$path_file" | grep -v "^import"; | |
| fi; | |
| return 1; | |
| fi; | |
| remove=0; | |
| if [ "$1" = "-d" ]; then | |
| remove=1; | |
| shift; | |
| fi; | |
| if [ ! -f "$path_file" ]; then | |
| echo "import sys; sys.__plen = len(sys.path)" > "$path_file" || return 1; | |
| echo "import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)" >> "$path_file" || return 1; | |
| fi; | |
| for pydir in "$@"; | |
| do | |
| absolute_path="$(virtualenvwrapper_absolutepath "$pydir")"; | |
| if [ "$absolute_path" != "$pydir" ]; then | |
| echo "Warning: Converting \"$pydir\" to \"$absolute_path\"" 1>&2; | |
| fi; | |
| if [ $remove -eq 1 ]; then | |
| sed -i.tmp "\:^$absolute_path$: d" "$path_file"; | |
| else | |
| sed -i.tmp '1 a\ | |
| '"$absolute_path"' | |
| ' "$path_file"; | |
| fi; | |
| rm -f "${path_file}.tmp"; | |
| done; | |
| return 0 | |
| } | |
| allvirtualenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| typeset d; | |
| virtualenvwrapper_show_workon_options | while read d; do | |
| [ ! -d "$WORKON_HOME/$d" ] && continue; | |
| echo "$d"; | |
| echo "$d" | sed 's/./=/g'; | |
| ( source "$WORKON_HOME/$d/bin/activate"; | |
| cd "$VIRTUAL_ENV"; | |
| $@ ); | |
| echo; | |
| done | |
| } | |
| cdproject () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| if [ -f "$VIRTUAL_ENV/$VIRTUALENVWRAPPER_PROJECT_FILENAME" ]; then | |
| typeset project_dir="$(cat "$VIRTUAL_ENV/$VIRTUALENVWRAPPER_PROJECT_FILENAME")"; | |
| if [ ! -z "$project_dir" ]; then | |
| cd "$project_dir"; | |
| else | |
| echo "Project directory $project_dir does not exist" 1>&2; | |
| return 1; | |
| fi; | |
| else | |
| echo "No project set in $VIRTUAL_ENV/$VIRTUALENVWRAPPER_PROJECT_FILENAME" 1>&2; | |
| return 1; | |
| fi; | |
| return 0 | |
| } | |
| cdsitepackages () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| typeset site_packages="`virtualenvwrapper_get_site_packages_dir`"; | |
| virtualenvwrapper_cd "$site_packages"/$1 | |
| } | |
| cdvirtualenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| virtualenvwrapper_cd $VIRTUAL_ENV/$1 | |
| } | |
| cpvirtualenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_virtualenv_clone || return 1; | |
| typeset src_name="$1"; | |
| typeset trg_name="$2"; | |
| typeset src; | |
| typeset trg; | |
| if [ "$src_name" = "" ]; then | |
| echo "Please provide a valid virtualenv to copy."; | |
| return 1; | |
| else | |
| if [ ! -e "$WORKON_HOME/$src_name" ]; then | |
| src="$(virtualenvwrapper_expandpath "$src_name")"; | |
| if [ ! -e "$src" ]; then | |
| echo "Please provide a valid virtualenv to copy."; | |
| return 1; | |
| fi; | |
| src_name="$(basename "$src")"; | |
| else | |
| src="$WORKON_HOME/$src_name"; | |
| fi; | |
| fi; | |
| if [ "$trg_name" = "" ]; then | |
| trg="$WORKON_HOME/$src_name"; | |
| trg_name="$src_name"; | |
| else | |
| trg="$WORKON_HOME/$trg_name"; | |
| fi; | |
| trg="$(virtualenvwrapper_expandpath "$trg")"; | |
| if [ -e "$trg" ]; then | |
| echo "$trg_name virtualenv already exists."; | |
| return 1; | |
| fi; | |
| echo "Copying $src_name as $trg_name..."; | |
| ( [ -n "$ZSH_VERSION" ] && setopt SH_WORD_SPLIT; | |
| virtualenvwrapper_cd "$WORKON_HOME" && "$VIRTUALENVWRAPPER_VIRTUALENV_CLONE" "$src" "$trg"; | |
| [ -d "$trg" ] && virtualenvwrapper_run_hook "pre_cpvirtualenv" "$src" "$trg_name" && virtualenvwrapper_run_hook "pre_mkvirtualenv" "$trg_name" ); | |
| typeset RC=$?; | |
| [ $RC -ne 0 ] && return $RC; | |
| [ ! -d "$WORKON_HOME/$trg_name" ] && return 1; | |
| workon "$trg_name"; | |
| virtualenvwrapper_run_hook "post_mkvirtualenv"; | |
| virtualenvwrapper_run_hook "post_cpvirtualenv" | |
| } | |
| dequote () | |
| { | |
| eval echo "$1" 2> /dev/null | |
| } | |
| lssitepackages () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| typeset site_packages="`virtualenvwrapper_get_site_packages_dir`"; | |
| ls $@ "$site_packages"; | |
| path_file="$site_packages/_virtualenv_path_extensions.pth"; | |
| if [ -f "$path_file" ]; then | |
| echo; | |
| echo "_virtualenv_path_extensions.pth:"; | |
| cat "$path_file"; | |
| fi | |
| } | |
| lsvirtualenv () | |
| { | |
| typeset long_mode=true; | |
| if command -v "getopts" >&/dev/null; then | |
| OPTIND=1; | |
| while getopts ":blh" opt "$@"; do | |
| case "$opt" in | |
| l) | |
| long_mode=true | |
| ;; | |
| b) | |
| long_mode=false | |
| ;; | |
| h) | |
| _lsvirtualenv_usage; | |
| return 1 | |
| ;; | |
| ?) | |
| echo "Invalid option: -$OPTARG" 1>&2; | |
| _lsvirtualenv_usage; | |
| return 1 | |
| ;; | |
| esac; | |
| done; | |
| else | |
| typeset -a args; | |
| args=($(getopt blh "$@")); | |
| if [ $? != 0 ]; then | |
| _lsvirtualenv_usage; | |
| return 1; | |
| fi; | |
| for opt in $args; | |
| do | |
| case "$opt" in | |
| -l) | |
| long_mode=true | |
| ;; | |
| -b) | |
| long_mode=false | |
| ;; | |
| -h) | |
| _lsvirtualenv_usage; | |
| return 1 | |
| ;; | |
| esac; | |
| done; | |
| fi; | |
| if $long_mode; then | |
| allvirtualenv showvirtualenv "$env_name"; | |
| else | |
| virtualenvwrapper_show_workon_options; | |
| fi | |
| } | |
| mkproject () | |
| { | |
| typeset -a in_args; | |
| typeset -a out_args; | |
| typeset -i i; | |
| typeset tst; | |
| typeset a; | |
| typeset t; | |
| typeset templates; | |
| in_args=("$@"); | |
| if [ -n "$ZSH_VERSION" ]; then | |
| i=1; | |
| tst="-le"; | |
| else | |
| i=0; | |
| tst="-lt"; | |
| fi; | |
| while [ $i $tst $# ]; do | |
| a="${in_args[$i]}"; | |
| case "$a" in | |
| -h | --help) | |
| virtualenvwrapper_mkproject_help; | |
| return | |
| ;; | |
| -t) | |
| i=$(( $i + 1 )); | |
| templates="$templates ${in_args[$i]}" | |
| ;; | |
| *) | |
| if [ ${#out_args} -gt 0 ]; then | |
| out_args=("${out_args[@]-}" "$a"); | |
| else | |
| out_args=("$a"); | |
| fi | |
| ;; | |
| esac; | |
| i=$(( $i + 1 )); | |
| done; | |
| set -- "${out_args[@]}"; | |
| eval "typeset envname=\$$#"; | |
| virtualenvwrapper_verify_project_home || return 1; | |
| if [ -d "$PROJECT_HOME/$envname" ]; then | |
| echo "Project $envname already exists." 1>&2; | |
| return 1; | |
| fi; | |
| mkvirtualenv "$@" || return 1; | |
| cd "$PROJECT_HOME"; | |
| virtualenvwrapper_run_hook "project.pre_mkproject" $envname; | |
| echo "Creating $PROJECT_HOME/$envname"; | |
| mkdir -p "$PROJECT_HOME/$envname"; | |
| setvirtualenvproject "$VIRTUAL_ENV" "$PROJECT_HOME/$envname"; | |
| cd "$PROJECT_HOME/$envname"; | |
| for t in $templates; | |
| do | |
| echo; | |
| echo "Applying template $t"; | |
| virtualenvwrapper_run_hook --name $(echo $t | sed 's/^ //') "project.template" "$envname" "$PROJECT_HOME/$envname"; | |
| done; | |
| virtualenvwrapper_run_hook "project.post_mkproject" | |
| } | |
| mktmpenv () | |
| { | |
| typeset tmpenvname; | |
| typeset RC; | |
| tmpenvname=$("$VIRTUALENVWRAPPER_PYTHON" -c 'import uuid,sys; sys.stdout.write(uuid.uuid4()+"\n")' 2>/dev/null); | |
| if [ -z "$tmpenvname" ]; then | |
| tmpenvname=$("$VIRTUALENVWRAPPER_PYTHON" -c 'import random,sys; sys.stdout.write(hex(random.getrandbits(64))[2:-1]+"\n")' 2>/dev/null); | |
| fi; | |
| mkvirtualenv "$@" "$tmpenvname"; | |
| RC=$?; | |
| if [ $RC -ne 0 ]; then | |
| return $RC; | |
| fi; | |
| cdvirtualenv; | |
| echo "This is a temporary environment. It will be deleted when you run 'deactivate'." | tee "$VIRTUAL_ENV/README.tmpenv"; | |
| cat - >> "$VIRTUAL_ENV/bin/postdeactivate" <<EOF | |
| if [ -f "$VIRTUAL_ENV/README.tmpenv" ] | |
| then | |
| echo "Removing temporary environment:" $(basename "$VIRTUAL_ENV") | |
| rmvirtualenv $(basename "$VIRTUAL_ENV") | |
| fi | |
| EOF | |
| } | |
| mkvirtualenv () | |
| { | |
| typeset -a in_args; | |
| typeset -a out_args; | |
| typeset -i i; | |
| typeset tst; | |
| typeset a; | |
| typeset envname; | |
| typeset requirements; | |
| typeset packages; | |
| typeset interpreter; | |
| in_args=("$@"); | |
| if [ -n "$ZSH_VERSION" ]; then | |
| i=1; | |
| tst="-le"; | |
| else | |
| i=0; | |
| tst="-lt"; | |
| fi; | |
| while [ $i $tst $# ]; do | |
| a="${in_args[$i]}"; | |
| case "$a" in | |
| -a) | |
| i=$(( $i + 1 )); | |
| project="${in_args[$i]}" | |
| ;; | |
| -h | --help) | |
| virtualenvwrapper_mkvirtualenv_help $a; | |
| return | |
| ;; | |
| -i) | |
| i=$(( $i + 1 )); | |
| packages="$packages ${in_args[$i]}" | |
| ;; | |
| -p | --python*) | |
| if echo "$a" | grep -q "="; then | |
| interpreter="$(echo "$a" | cut -f2 -d=)"; | |
| else | |
| i=$(( $i + 1 )); | |
| interpreter="${in_args[$i]}"; | |
| fi; | |
| interpreter="$(virtualenvwrapper_absolutepath "$interpreter")" | |
| ;; | |
| -r) | |
| i=$(( $i + 1 )); | |
| requirements="${in_args[$i]}"; | |
| requirements="$(virtualenvwrapper_expandpath "$requirements")" | |
| ;; | |
| *) | |
| if [ ${#out_args} -gt 0 ]; then | |
| out_args=("${out_args[@]-}" "$a"); | |
| else | |
| out_args=("$a"); | |
| fi | |
| ;; | |
| esac; | |
| i=$(( $i + 1 )); | |
| done; | |
| if [ ! -z $interpreter ]; then | |
| out_args=("--python=$interpreter" ${out_args[@]}); | |
| fi; | |
| set -- "${out_args[@]}"; | |
| eval "envname=\$$#"; | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_virtualenv || return 1; | |
| ( [ -n "$ZSH_VERSION" ] && setopt SH_WORD_SPLIT; | |
| virtualenvwrapper_cd "$WORKON_HOME" && "$VIRTUALENVWRAPPER_VIRTUALENV" $VIRTUALENVWRAPPER_VIRTUALENV_ARGS "$@" && [ -d "$WORKON_HOME/$envname" ] && virtualenvwrapper_run_hook "pre_mkvirtualenv" "$envname" ); | |
| typeset RC=$?; | |
| [ $RC -ne 0 ] && return $RC; | |
| [ ! -d "$WORKON_HOME/$envname" ] && return 0; | |
| if [ ! -z "$project" ]; then | |
| setvirtualenvproject "$WORKON_HOME/$envname" "$project"; | |
| fi; | |
| workon "$envname"; | |
| if [ ! -z "$requirements" ]; then | |
| pip install -r "$requirements"; | |
| fi; | |
| for a in $packages; | |
| do | |
| pip install $a; | |
| done; | |
| virtualenvwrapper_run_hook "post_mkvirtualenv" | |
| } | |
| parse_git_branch () | |
| { | |
| ref=$(git symbolic-ref HEAD 2> /dev/null) || return; | |
| echo "["${ref#refs/heads/}"] " | |
| } | |
| quote () | |
| { | |
| echo \'${1//\'/\'\\\'\'}\' | |
| } | |
| quote_readline () | |
| { | |
| local quoted; | |
| _quote_readline_by_ref "$1" ret; | |
| printf %s "$ret" | |
| } | |
| rbenv () | |
| { | |
| typeset command; | |
| command="$1"; | |
| if [ "$#" -gt 0 ]; then | |
| shift; | |
| fi; | |
| case "$command" in | |
| rehash | shell) | |
| eval `rbenv "sh-$command" "$@"` | |
| ;; | |
| *) | |
| command rbenv "$command" "$@" | |
| ;; | |
| esac | |
| } | |
| ri_get_methods () | |
| { | |
| local regex; | |
| if [ "$ri_version" = integrated ]; then | |
| if [ -z "$separator" ]; then | |
| regex="(Instance|Class)"; | |
| else | |
| if [ "$separator" = "#" ]; then | |
| regex=Instance; | |
| else | |
| regex=Class; | |
| fi; | |
| fi; | |
| COMPREPLY=(${COMPREPLY[@]} "$( ri ${classes[@]} 2>/dev/null | ruby -ane 'if /^'"$regex"' methods:/.../^------------------|^$/ and \ | |
| /^ / then print $_.split(/, |,$/).grep(/^[^\[]*$/).join("\n"); \ | |
| end' | sort -u )"); | |
| else | |
| COMPREPLY=(${COMPREPLY[@]} "$( ruby -W0 $ri_path ${classes[@]} | ruby -ane 'if /^-/.../^-/ and ! /^-/ and ! /^ +(class|module): / then \ | |
| print $_.split(/, |,$| +/).grep(/^[^\[]*$/).join("\n"); \ | |
| end' | sort -u )"); | |
| fi; | |
| COMPREPLY=($( compgen $prefix -W '${COMPREPLY[@]}' -- $method )) | |
| } | |
| rmvirtualenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| if [ ${#@} = 0 ]; then | |
| echo "Please specify an enviroment." 1>&2; | |
| return 1; | |
| fi; | |
| typeset env_name; | |
| for env_name in $@; | |
| do | |
| echo "Removing $env_name..."; | |
| typeset env_dir="$WORKON_HOME/$env_name"; | |
| if [ "$VIRTUAL_ENV" = "$env_dir" ]; then | |
| echo "ERROR: You cannot remove the active environment ('$env_name')." 1>&2; | |
| echo "Either switch to another environment, or run 'deactivate'." 1>&2; | |
| return 1; | |
| fi; | |
| typeset prior_dir="$(pwd)"; | |
| virtualenvwrapper_cd "$WORKON_HOME"; | |
| virtualenvwrapper_run_hook "pre_rmvirtualenv" "$env_name"; | |
| command \rm -rf "$env_dir"; | |
| virtualenvwrapper_run_hook "post_rmvirtualenv" "$env_name"; | |
| if [ -d "$prior_dir" ]; then | |
| virtualenvwrapper_cd "$prior_dir"; | |
| fi; | |
| done | |
| } | |
| setvirtualenvproject () | |
| { | |
| typeset venv="$1"; | |
| typeset prj="$2"; | |
| if [ -z "$venv" ]; then | |
| venv="$VIRTUAL_ENV"; | |
| fi; | |
| if [ -z "$prj" ]; then | |
| prj="$(pwd)"; | |
| fi; | |
| echo "Setting project for $(basename $venv) to $prj"; | |
| echo "$prj" > "$venv/$VIRTUALENVWRAPPER_PROJECT_FILENAME" | |
| } | |
| showvirtualenv () | |
| { | |
| typeset env_name="$1"; | |
| if [ -z "$env_name" ]; then | |
| if [ -z "$VIRTUAL_ENV" ]; then | |
| echo "showvirtualenv [env]"; | |
| return 1; | |
| fi; | |
| env_name=$(basename "$VIRTUAL_ENV"); | |
| fi; | |
| virtualenvwrapper_run_hook "get_env_details" "$env_name"; | |
| echo | |
| } | |
| toggleglobalsitepackages () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| typeset no_global_site_packages_file="`virtualenvwrapper_get_site_packages_dir`/../no-global-site-packages.txt"; | |
| if [ -f $no_global_site_packages_file ]; then | |
| rm $no_global_site_packages_file; | |
| [ "$1" = "-q" ] || echo "Enabled global site-packages"; | |
| else | |
| touch $no_global_site_packages_file; | |
| [ "$1" = "-q" ] || echo "Disabled global site-packages"; | |
| fi | |
| } | |
| virtualenvwrapper_absolutepath () | |
| { | |
| if [ "$1" = "" ]; then | |
| return 1; | |
| else | |
| "$VIRTUALENVWRAPPER_PYTHON" -c "import os,sys; sys.stdout.write(os.path.abspath(\"$1\")+'\n')"; | |
| return 0; | |
| fi | |
| } | |
| virtualenvwrapper_cd () | |
| { | |
| if [ -n "$BASH" ]; then | |
| builtin \cd "$@"; | |
| else | |
| if [ -n "$ZSH_VERSION" ]; then | |
| builtin \cd "$@"; | |
| else | |
| command \cd "$@"; | |
| fi; | |
| fi | |
| } | |
| virtualenvwrapper_derive_workon_home () | |
| { | |
| typeset workon_home_dir="$WORKON_HOME"; | |
| if [ "$workon_home_dir" = "" ]; then | |
| workon_home_dir="$HOME/.virtualenvs"; | |
| fi; | |
| if echo "$workon_home_dir" | ( unset GREP_OPTIONS; | |
| command \grep '^[^/~]' > /dev/null ); then | |
| workon_home_dir="$HOME/$WORKON_HOME"; | |
| fi; | |
| if echo "$workon_home_dir" | ( unset GREP_OPTIONS; | |
| command \egrep '([\$~]|//)' > /dev/null ); then | |
| workon_home_dir="$(virtualenvwrapper_expandpath "$workon_home_dir")"; | |
| fi; | |
| echo "$workon_home_dir"; | |
| return 0 | |
| } | |
| virtualenvwrapper_expandpath () | |
| { | |
| if [ "$1" = "" ]; then | |
| return 1; | |
| else | |
| "$VIRTUALENVWRAPPER_PYTHON" -c "import os,sys; sys.stdout.write(os.path.normpath(os.path.expanduser(os.path.expandvars(\"$1\")))+'\n')"; | |
| return 0; | |
| fi | |
| } | |
| virtualenvwrapper_get_python_version () | |
| { | |
| "$VIRTUAL_ENV/bin/python" -V 2>&1 | cut -f2 -d' ' | cut -f-2 -d. | |
| } | |
| virtualenvwrapper_get_site_packages_dir () | |
| { | |
| "$VIRTUAL_ENV/$VIRTUALENVWRAPPER_ENV_BIN_DIR/python" -c "import distutils; print(distutils.sysconfig.get_python_lib())" | |
| } | |
| virtualenvwrapper_initialize () | |
| { | |
| export WORKON_HOME="$(virtualenvwrapper_derive_workon_home)"; | |
| virtualenvwrapper_verify_workon_home -q || return 1; | |
| if [ "$VIRTUALENVWRAPPER_HOOK_DIR" = "" ]; then | |
| export VIRTUALENVWRAPPER_HOOK_DIR="$WORKON_HOME"; | |
| fi; | |
| virtualenvwrapper_run_hook "initialize"; | |
| virtualenvwrapper_setup_tab_completion; | |
| return 0 | |
| } | |
| virtualenvwrapper_mkproject_help () | |
| { | |
| echo "Usage: mkproject [-t template] [virtualenv options] project_name"; | |
| echo ""; | |
| echo "Multiple templates may be selected. They are applied in the order"; | |
| echo "specified on the command line."; | |
| echo; | |
| echo "mkvirtualenv help:"; | |
| echo; | |
| mkvirtualenv -h; | |
| echo; | |
| echo "Available project templates:"; | |
| echo; | |
| "$VIRTUALENVWRAPPER_PYTHON" -c 'from virtualenvwrapper.hook_loader import main; main()' -l project.template | |
| } | |
| virtualenvwrapper_mktemp () | |
| { | |
| command \mktemp "$@" | |
| } | |
| virtualenvwrapper_mkvirtualenv_help () | |
| { | |
| echo "Usage: mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] env_name"; | |
| echo; | |
| echo " -a project_path"; | |
| echo; | |
| echo " Provide a full path to a project directory to associate with"; | |
| echo " the new environment."; | |
| echo; | |
| echo " -i package"; | |
| echo; | |
| echo " Install a package after the environment is created."; | |
| echo " This option may be repeated."; | |
| echo; | |
| echo " -r requirements_file"; | |
| echo; | |
| echo " Provide a pip requirements file to install a base set of packages"; | |
| echo " into the new environment."; | |
| echo; | |
| echo 'virtualenv help:'; | |
| echo; | |
| "$VIRTUALENVWRAPPER_VIRTUALENV" $@ | |
| } | |
| virtualenvwrapper_run_hook () | |
| { | |
| typeset hook_script; | |
| typeset result; | |
| hook_script="$(virtualenvwrapper_tempfile ${1}-hook)" || return 1; | |
| ( cd "$WORKON_HOME" && "$VIRTUALENVWRAPPER_PYTHON" -m 'virtualenvwrapper.hook_loader' $HOOK_VERBOSE_OPTION --script "$hook_script" "$@" ); | |
| result=$?; | |
| if [ $result -eq 0 ]; then | |
| if [ ! -f "$hook_script" ]; then | |
| echo "ERROR: virtualenvwrapper_run_hook could not find temporary file $hook_script" 1>&2; | |
| command \rm -f "$hook_script"; | |
| return 2; | |
| fi; | |
| source "$hook_script"; | |
| else | |
| if [ "${1}" = "initialize" ]; then | |
| cat - 1>&2 <<EOF | |
| virtualenvwrapper.sh: There was a problem running the initialization hooks. | |
| If Python could not import the module virtualenvwrapper.hook_loader, | |
| check that virtualenv has been installed for | |
| VIRTUALENVWRAPPER_PYTHON=$VIRTUALENVWRAPPER_PYTHON and that PATH is | |
| set properly. | |
| EOF | |
| fi; | |
| fi | |
| command \rm -f "$hook_script"; | |
| return $result | |
| } | |
| virtualenvwrapper_setup_tab_completion () | |
| { | |
| if [ -n "$BASH" ]; then | |
| function _virtualenvs () | |
| { | |
| local cur="${COMP_WORDS[COMP_CWORD]}"; | |
| COMPREPLY=($(compgen -W "`virtualenvwrapper_show_workon_options`" -- ${cur})) | |
| }; | |
| function _cdvirtualenv_complete () | |
| { | |
| local cur="$2"; | |
| COMPREPLY=($(cdvirtualenv && compgen -d -- "${cur}" )) | |
| }; | |
| function _cdsitepackages_complete () | |
| { | |
| local cur="$2"; | |
| COMPREPLY=($(cdsitepackages && compgen -d -- "${cur}" )) | |
| }; | |
| complete -o nospace -F _cdvirtualenv_complete -S/ cdvirtualenv; | |
| complete -o nospace -F _cdsitepackages_complete -S/ cdsitepackages; | |
| complete -o default -o nospace -F _virtualenvs workon; | |
| complete -o default -o nospace -F _virtualenvs rmvirtualenv; | |
| complete -o default -o nospace -F _virtualenvs cpvirtualenv; | |
| complete -o default -o nospace -F _virtualenvs showvirtualenv; | |
| else | |
| if [ -n "$ZSH_VERSION" ]; then | |
| function _virtualenvs () | |
| { | |
| reply=($(virtualenvwrapper_show_workon_options)) | |
| }; | |
| function _cdvirtualenv_complete () | |
| { | |
| reply=($(cdvirtualenv && ls -d ${1}*)) | |
| }; | |
| function _cdsitepackages_complete () | |
| { | |
| reply=($(cdsitepackages && ls -d ${1}*)) | |
| }; | |
| compctl -K _virtualenvs workon rmvirtualenv cpvirtualenv showvirtualenv; | |
| compctl -K _cdvirtualenv_complete cdvirtualenv; | |
| compctl -K _cdsitepackages_complete cdsitepackages; | |
| fi; | |
| fi | |
| } | |
| virtualenvwrapper_show_workon_options () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| ( cd "$WORKON_HOME" && echo */$VIRTUALENVWRAPPER_ENV_BIN_DIR/activate ) 2> /dev/null | command \sed "s|/$VIRTUALENVWRAPPER_ENV_BIN_DIR/activate||g" | command \fmt -w 1 | ( unset GREP_OPTIONS; | |
| command \egrep -v '^\*$' ) 2> /dev/null | |
| } | |
| virtualenvwrapper_tempfile () | |
| { | |
| typeset suffix=${1:-hook}; | |
| typeset file; | |
| file="$(virtualenvwrapper_mktemp -t virtualenvwrapper-$suffix-XXXXXXXXXX)"; | |
| if [ $? -ne 0 ] || [ -z "$file" ] || [ ! -f "$file" ]; then | |
| echo "ERROR: virtualenvwrapper could not create a temporary file name." 1>&2; | |
| return 1; | |
| fi; | |
| echo $file; | |
| return 0 | |
| } | |
| virtualenvwrapper_verify_active_environment () | |
| { | |
| if [ ! -n "${VIRTUAL_ENV}" ] || [ ! -d "${VIRTUAL_ENV}" ]; then | |
| echo "ERROR: no virtualenv active, or active virtualenv is missing" 1>&2; | |
| return 1; | |
| fi; | |
| return 0 | |
| } | |
| virtualenvwrapper_verify_project_home () | |
| { | |
| if [ -z "$PROJECT_HOME" ]; then | |
| echo "ERROR: Set the PROJECT_HOME shell variable to the name of the directory where projects should be created." 1>&2; | |
| return 1; | |
| fi; | |
| if [ ! -d "$PROJECT_HOME" ]; then | |
| [ "$1" != "-q" ] && echo "ERROR: Project directory '$PROJECT_HOME' does not exist. Create it or set PROJECT_HOME to an existing directory." 1>&2; | |
| return 1; | |
| fi; | |
| return 0 | |
| } | |
| virtualenvwrapper_verify_resource () | |
| { | |
| typeset exe_path="$(command \which "$1" | (unset GREP_OPTIONS; command \grep -v "not found"))"; | |
| if [ "$exe_path" = "" ]; then | |
| echo "ERROR: virtualenvwrapper could not find $1 in your path" 1>&2; | |
| return 1; | |
| fi; | |
| if [ ! -e "$exe_path" ]; then | |
| echo "ERROR: Found $1 in path as \"$exe_path\" but that does not exist" 1>&2; | |
| return 1; | |
| fi; | |
| return 0 | |
| } | |
| virtualenvwrapper_verify_virtualenv () | |
| { | |
| virtualenvwrapper_verify_resource $VIRTUALENVWRAPPER_VIRTUALENV | |
| } | |
| virtualenvwrapper_verify_virtualenv_clone () | |
| { | |
| virtualenvwrapper_verify_resource $VIRTUALENVWRAPPER_VIRTUALENV_CLONE | |
| } | |
| virtualenvwrapper_verify_workon_environment () | |
| { | |
| typeset env_name="$1"; | |
| if [ ! -d "$WORKON_HOME/$env_name" ]; then | |
| echo "ERROR: Environment '$env_name' does not exist. Create it with 'mkvirtualenv $env_name'." 1>&2; | |
| return 1; | |
| fi; | |
| return 0 | |
| } | |
| virtualenvwrapper_verify_workon_home () | |
| { | |
| RC=0; | |
| if [ ! -d "$WORKON_HOME/" ]; then | |
| if [ "$1" != "-q" ]; then | |
| echo "NOTE: Virtual environments directory $WORKON_HOME does not exist. Creating..." 1>&2; | |
| fi; | |
| mkdir -p "$WORKON_HOME"; | |
| RC=$?; | |
| fi; | |
| return $RC | |
| } | |
| virtualenvwrapper_workon_help () | |
| { | |
| echo "Usage: workon env_name"; | |
| echo ""; | |
| echo " Deactivate any currently activated virtualenv"; | |
| echo " and activate the named environment, triggering"; | |
| echo " any hooks in the process."; | |
| echo ""; | |
| echo " workon"; | |
| echo ""; | |
| echo " Print a list of available environments."; | |
| echo " (See also lsvirtualenv -b)"; | |
| echo ""; | |
| echo " workon (-h|--help)"; | |
| echo ""; | |
| echo " Show this help message."; | |
| echo "" | |
| } | |
| wipeenv () | |
| { | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_active_environment || return 1; | |
| typeset req_file="$(virtualenvwrapper_tempfile "requirements.txt")"; | |
| pip freeze | egrep -v '(distribute|wsgiref)' > "$req_file"; | |
| if [ -n "$(cat "$req_file")" ]; then | |
| echo "Uninstalling packages:"; | |
| cat "$req_file"; | |
| echo; | |
| pip uninstall -y $(cat "$req_file" | sed 's/>/=/g' | cut -f1 -d=); | |
| else | |
| echo "Nothing to remove."; | |
| fi; | |
| rm -f "$req_file" | |
| } | |
| workon () | |
| { | |
| in_args=("$@"); | |
| if [ -n "$ZSH_VERSION" ]; then | |
| i=1; | |
| tst="-le"; | |
| else | |
| i=0; | |
| tst="-lt"; | |
| fi; | |
| while [ $i $tst $# ]; do | |
| a="${in_args[$i]}"; | |
| case "$a" in | |
| -h | --help) | |
| virtualenvwrapper_workon_help; | |
| return 0 | |
| ;; | |
| esac; | |
| i=$(( $i + 1 )); | |
| done; | |
| typeset env_name="$1"; | |
| if [ "$env_name" = "" ]; then | |
| lsvirtualenv -b; | |
| return 1; | |
| fi; | |
| virtualenvwrapper_verify_workon_home || return 1; | |
| virtualenvwrapper_verify_workon_environment $env_name || return 1; | |
| activate="$WORKON_HOME/$env_name/$VIRTUALENVWRAPPER_ENV_BIN_DIR/activate"; | |
| if [ ! -f "$activate" ]; then | |
| echo "ERROR: Environment '$WORKON_HOME/$env_name' does not contain an activate script." 1>&2; | |
| return 1; | |
| fi; | |
| type deactivate > /dev/null 2>&1; | |
| if [ $? -eq 0 ]; then | |
| deactivate; | |
| unset -f deactivate > /dev/null 2>&1; | |
| fi; | |
| virtualenvwrapper_run_hook "pre_activate" "$env_name"; | |
| source "$activate"; | |
| virtualenvwrapper_original_deactivate=`typeset -f deactivate | sed 's/deactivate/virtualenv_deactivate/g'`; | |
| eval "$virtualenvwrapper_original_deactivate"; | |
| unset -f deactivate > /dev/null 2>&1; | |
| eval 'deactivate () { | |
| typeset env_postdeactivate_hook | |
| typeset old_env | |
| # Call the local hook before the global so we can undo | |
| # any settings made by the local postactivate first. | |
| virtualenvwrapper_run_hook "pre_deactivate" | |
| env_postdeactivate_hook="$VIRTUAL_ENV/$VIRTUALENVWRAPPER_ENV_BIN_DIR/postdeactivate" | |
| old_env=$(basename "$VIRTUAL_ENV") | |
| # Call the original function. | |
| virtualenv_deactivate $1 | |
| virtualenvwrapper_run_hook "post_deactivate" "$old_env" | |
| if [ ! "$1" = "nondestructive" ] | |
| then | |
| # Remove this function | |
| unset -f virtualenv_deactivate >/dev/null 2>&1 | |
| unset -f deactivate >/dev/null 2>&1 | |
| fi | |
| }'; | |
| virtualenvwrapper_run_hook "post_activate"; | |
| return 0 | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| VIRTUALENVWRAPPER_PROJECT_FILENAME=.project | |
| VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh | |
| TERM_PROGRAM=iTerm.app | |
| TERM=screen-256color | |
| SHELL=/bin/bash | |
| TMPDIR=/var/folders/49/30k39lp17mz4_sdyz_0wcdb00000gn/T/ | |
| Apple_PubSub_Socket_Render=/tmp/launch-TMJdla/Render | |
| USER=bulkan | |
| SSH_AUTH_SOCK=/tmp/launch-3tw6z9/Listeners | |
| __CF_USER_TEXT_ENCODING=0x1F5:0:0 | |
| WORKON_HOME=/Users/bulkan/src/python | |
| PROJECT_HOME=/Users/bulkan/src/python | |
| __CHECKFIX1436934=1 | |
| PATH=/usr/local/sbin:/usr/local/bin:/usr/local/heroku/bin:/Users/bulkan/.bin:/Users/bulkan/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:/Users/bulkan/src/go/bin | |
| VIRTUALENVWRAPPER_HOOK_DIR=/Users/bulkan/src/python | |
| PWD=/Users/bulkan | |
| LANG=en_AU.UTF-8 | |
| ITERM_PROFILE=Solarized Dark | |
| SHLVL=1 | |
| COLORFGBG=7;0 | |
| HOME=/Users/bulkan | |
| ITERM_SESSION_ID=w0t2p0 | |
| LOGNAME=bulkan | |
| GOPATH=/Users/bulkan/src/go | |
| PROMPT_COMMAND=PS1="\[\033[36m\]$(_venv)\[\033[0m\][\[\033[0m\]\w]\[\033[36m\]$(parse_git_branch):\[\033[0m\] " | |
| _=/usr/bin/env |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment