diff options
author | Igor Murzov <e-mail@date.by> | 2011-11-17 04:02:35 +0300 |
---|---|---|
committer | Igor Murzov <e-mail@date.by> | 2011-11-17 04:02:35 +0300 |
commit | 82784121d863bede6b40433a52cceaabb79d7df6 (patch) | |
tree | c93ba333f02f7e4a9ec076f916fffb1e78085399 | |
parent | 068a1a1b531a1c1823da496156a8bed17373c4ee (diff) | |
download | bash-completion-82784121d863bede6b40433a52cceaabb79d7df6.tar.gz |
upgradepkg: Support oldpackage%newpackage notation.
-rw-r--r-- | completions/upgradepkg | 12 | ||||
-rw-r--r-- | test/lib/completions/upgradepkg.exp | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/completions/upgradepkg b/completions/upgradepkg index 06dbe571..59a27ca5 100644 --- a/completions/upgradepkg +++ b/completions/upgradepkg @@ -11,6 +11,18 @@ _upgradepkg() return 0 fi + if [[ "$cur" == ?*%* ]]; then + prev="${cur%%?(\\)%*}" + cur="${cur#*%}" + local nofiles IFS=$'\n' + compopt -o filenames + COMPREPLY=( $( compgen -P "$prev%" -f -X "!*.@(t[bgxl]z)" -- "$cur" ) ) + [[ $COMPREPLY ]] || nofiles=1 + COMPREPLY+=( $( compgen -P "$prev%" -S '/' -d -- "$cur" ) ) + [[ $nofiles ]] && compopt -o nospace + return 0 + fi + _filedir "t[bglx]z" } && complete -F _upgradepkg upgradepkg diff --git a/test/lib/completions/upgradepkg.exp b/test/lib/completions/upgradepkg.exp index 860dde9e..4783aec3 100644 --- a/test/lib/completions/upgradepkg.exp +++ b/test/lib/completions/upgradepkg.exp @@ -36,4 +36,16 @@ assert_complete_dir $files "upgradepkg " $dir $test sync_after_int +set test "should complete *.t\[gbxl\]z files and dirs after % sign" +set oldpkg "xx-2.0-i486-2" +set dir $::srcdir/fixtures/slackware/home +set files [split [exec bash -c "cd $dir && find . -mindepth 1 -maxdepth 1 \ + \\( -type d -printf '$oldpkg%%%P/\\n' \\) -o \ + \\( -type f -name '*.t\[bglx\]z' -printf '$oldpkg%%%P\\n' \\)"] "\n"] +assert_complete_dir $files "upgradepkg $oldpkg%" $dir $test + + +sync_after_int + + teardown |