@@ -1255,37 +1255,38 @@ send_completions() {
12551255 echo $' # Modifying it manually is not recommended'
12561256 echo $' '
12571257 echo $' _rush_completions_filter() {'
1258- echo $' local words=("$@") '
1258+ echo $' local words="$1" '
12591259 echo $' local cur=${COMP_WORDS[COMP_CWORD]}'
12601260 echo $' local result=()'
1261- echo $' local want_options=0'
12621261 echo $' '
12631262 echo $' # words the user already typed (excluding the command itself)'
12641263 echo $' local used=()'
12651264 echo $' if ((COMP_CWORD > 1)); then'
12661265 echo $' used=("${COMP_WORDS[@]:1:$((COMP_CWORD - 1))}")'
12671266 echo $' fi'
12681267 echo $' '
1269- echo $' # Completing an option: offer everything.'
1270- echo $' # Completing a non-option: drop options and already-used words.'
1271- echo $' [[ "${cur:0:1}" == "-" ]] && want_options=1'
1272- echo $' for word in "${words[@]}"; do'
1273- echo $' if ((!want_options)); then'
1268+ echo $' if [[ "${cur:0:1}" == "-" ]]; then'
1269+ echo $' # Completing an option: offer everything (including options)'
1270+ echo $' echo "$words"'
1271+ echo $' '
1272+ echo $' else'
1273+ echo $' # Completing a non-option: offer only non-options,'
1274+ echo $' # and don\' t re-offer ones already used earlier in the line.'
1275+ echo $' for word in $words; do'
12741276 echo $' [[ "${word:0:1}" == "-" ]] && continue'
12751277 echo $' '
1278+ echo $' local seen=0'
12761279 echo $' for u in "${used[@]}"; do'
12771280 echo $' if [[ "$u" == "$word" ]]; then'
1278- echo $' continue 2'
1281+ echo $' seen=1'
1282+ echo $' break'
12791283 echo $' fi'
12801284 echo $' done'
1281- echo $' fi'
1282- echo $' '
1283- echo $' # compgen -W expects shell-escaped words in one space-delimited string.'
1284- echo $' printf -v word \' %q\' "$word"'
1285- echo $' result+=("$word")'
1286- echo $' done'
1285+ echo $' ((!seen)) && result+=("$word")'
1286+ echo $' done'
12871287 echo $' '
1288- echo $' echo "${result[*]}"'
1288+ echo $' echo "${result[*]}"'
1289+ echo $' fi'
12891290 echo $' }'
12901291 echo $' '
12911292 echo $' _rush_completions() {'
@@ -1300,131 +1301,134 @@ send_completions() {
13001301 echo $' '
13011302 echo $' case "$compline" in'
13021303 echo $' \' completions\' *)'
1303- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1304+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13041305 echo $' ;;'
13051306 echo $' '
13061307 echo $' \' download\' *)'
1307- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1308+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13081309 echo $' ;;'
13091310 echo $' '
13101311 echo $' \' default\' *)'
1311- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1312+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13121313 echo $' ;;'
13131314 echo $' '
13141315 echo $' \' snatch\' *)'
1315- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--force" " --help" " --undo" " --verbose" "-f" "-h" "-u" " -v")" -- "$cur")'
1316+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--force --help --undo --verbose -f -h -u -v")" -- "$cur")'
13161317 echo $' ;;'
13171318 echo $' '
13181319 echo $' \' search\' *)'
1319- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1320+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13201321 echo $' ;;'
13211322 echo $' '
13221323 echo $' \' config\' *)'
1323- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--edit" " --help" "-e" " -h")" -- "$cur")'
1324+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--edit --help -e -h")" -- "$cur")'
13241325 echo $' ;;'
13251326 echo $' '
13261327 echo $' \' upload\' *)'
1327- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all" " --help" " --message" "-a" "-h" " -m")" -- "$cur")'
1328+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all --help --message -a -h -m")" -- "$cur")'
13281329 echo $' ;;'
13291330 echo $' '
13301331 echo $' \' update\' *)'
1331- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1332+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13321333 echo $' ;;'
13331334 echo $' '
13341335 echo $' \' remove\' *)'
1335- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " --purge" "-h" " -p")" -- "$cur")'
1336+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help --purge -h -p")" -- "$cur")'
13361337 echo $' ;;'
13371338 echo $' '
13381339 echo $' \' clone\' *)'
1339- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--default" "--help" "--ignore" "--name" "--shallow" "--ssh" "-d" "-h" "-i" "-n" "-s" "-w")" -- "$cur")'
1340+ echo $' compopt -o filenames 2>/dev/null'
1341+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--default --help --ignore --name --shallow --ssh -d -h -i -n -s -w")" -- "$cur")'
13401342 echo $' ;;'
13411343 echo $' '
13421344 echo $' \' edit\' *)'
1343- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " -h")" -- "$cur")'
1345+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help -h")" -- "$cur")'
13441346 echo $' ;;'
13451347 echo $' '
13461348 echo $' \' pull\' *)'
1347- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1349+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13481350 echo $' ;;'
13491351 echo $' '
13501352 echo $' \' push\' *)'
1351- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all" " --help" " --message" "-a" "-h" " -m")" -- "$cur")'
1353+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all --help --message -a -h -m")" -- "$cur")'
13521354 echo $' ;;'
13531355 echo $' '
13541356 echo $' \' show\' *)'
1355- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " -h")" -- "$cur")'
1357+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help -h")" -- "$cur")'
13561358 echo $' ;;'
13571359 echo $' '
13581360 echo $' \' undo\' *)'
1359- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " --verbose" "-h" " -v")" -- "$cur")'
1361+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help --verbose -h -v")" -- "$cur")'
13601362 echo $' ;;'
13611363 echo $' '
13621364 echo $' \' copy\' *)'
1363- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --force" " --help" "-f" " -h")" -- "$cur")'
1365+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --force --help -f -h")" -- "$cur")'
13641366 echo $' ;;'
13651367 echo $' '
13661368 echo $' \' info\' *)'
1367- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " -h")" -- "$cur")'
1369+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help -h")" -- "$cur")'
13681370 echo $' ;;'
13691371 echo $' '
13701372 echo $' \' list\' *)'
1371- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all" " --help" " --simple" "-a" "-h" " -s")" -- "$cur")'
1373+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all --help --simple -a -h -s")" -- "$cur")'
13721374 echo $' ;;'
13731375 echo $' '
13741376 echo $' \' get\' *)'
1375- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --clone" " --force" " --help" " --verbose" "-c" "-f" "-h" " -v")" -- "$cur")'
1377+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --clone --force --help --verbose -c -f -h -v")" -- "$cur")'
13761378 echo $' ;;'
13771379 echo $' '
13781380 echo $' \' add\' *)'
1379- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--help" "-h")" -- "$cur")'
1381+ echo $' compopt -o filenames 2>/dev/null'
1382+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13801383 echo $' ;;'
13811384 echo $' '
13821385 echo $' \' ls\' *)'
1383- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all" " --help" " --simple" "-a" "-h" " -s")" -- "$cur")'
1386+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all --help --simple -a -h -s")" -- "$cur")'
13841387 echo $' ;;'
13851388 echo $' '
13861389 echo $' \' e\' *)'
1387- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " -h")" -- "$cur")'
1390+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help -h")" -- "$cur")'
13881391 echo $' ;;'
13891392 echo $' '
13901393 echo $' \' s\' *)'
1391- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1394+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
13921395 echo $' ;;'
13931396 echo $' '
13941397 echo $' \' l\' *)'
1395- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all" " --help" " --simple" "-a" "-h" " -s")" -- "$cur")'
1398+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--all --help --simple -a -h -s")" -- "$cur")'
13961399 echo $' ;;'
13971400 echo $' '
13981401 echo $' \' i\' *)'
1399- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " -h")" -- "$cur")'
1402+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help -h")" -- "$cur")'
14001403 echo $' ;;'
14011404 echo $' '
14021405 echo $' \' u\' *)'
1403- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " --verbose" "-h" " -v")" -- "$cur")'
1406+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help --verbose -h -v")" -- "$cur")'
14041407 echo $' ;;'
14051408 echo $' '
14061409 echo $' \' g\' *)'
1407- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --clone" " --force" " --help" " --verbose" "-c" "-f" "-h" " -v")" -- "$cur")'
1410+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --clone --force --help --verbose -c -f -h -v")" -- "$cur")'
14081411 echo $' ;;'
14091412 echo $' '
14101413 echo $' \' c\' *)'
1411- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--edit" " --help" "-e" " -h")" -- "$cur")'
1414+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--edit --help -e -h")" -- "$cur")'
14121415 echo $' ;;'
14131416 echo $' '
14141417 echo $' \' p\' *)'
1415- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " -h")" -- "$cur")'
1418+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
14161419 echo $' ;;'
14171420 echo $' '
14181421 echo $' \' r\' *)'
1419- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help" " --purge" "-h" " -p")" -- "$cur")'
1422+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "--help --purge -h -p")" -- "$cur")'
14201423 echo $' ;;'
14211424 echo $' '
14221425 echo $' \' a\' *)'
1423- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--help" "-h")" -- "$cur")'
1426+ echo $' compopt -o filenames 2>/dev/null'
1427+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_rush_completions_filter "--help -h")" -- "$cur")'
14241428 echo $' ;;'
14251429 echo $' '
14261430 echo $' *)'
1427- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a)" " --help" " --version" "-h" "-v" "a" " add" "c" " clone" " completions" " config" " copy" " default" " download" "e" " edit" "g" " get" "i" " info" "l" " list" "ls" "p" " pull" " push" "r" " remove" "s" " search" " show" " snatch" "u" " undo" " update" " upload")" -- "$cur")'
1431+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_rush_completions_filter "$(rush list -s -a) --help --version -h -v a add c clone completions config copy default download e edit g get i info l list ls p pull push r remove s search show snatch u undo update upload")" -- "$cur")'
14281432 echo $' ;;'
14291433 echo $' '
14301434 echo $' esac'
0 commit comments