Skip to content

Commit db6765d

Browse files
committed
- Fix completions (broken by completely 0.7.4)
1 parent 896c815 commit db6765d

File tree

2 files changed

+102
-94
lines changed

2 files changed

+102
-94
lines changed

rush

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)