github.com/projectriff/riff-cli@v0.0.5-0.20180301104501-5db7a3bd9fc1/etc/bash/riff (about) 1 # bash completion for riff -*- shell-script -*- 2 3 __debug() 4 { 5 if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then 6 echo "$*" >> "${BASH_COMP_DEBUG_FILE}" 7 fi 8 } 9 10 # Homebrew on Macs have version 1.3 of bash-completion which doesn't include 11 # _init_completion. This is a very minimal version of that function. 12 __my_init_completion() 13 { 14 COMPREPLY=() 15 _get_comp_words_by_ref "$@" cur prev words cword 16 } 17 18 __index_of_word() 19 { 20 local w word=$1 21 shift 22 index=0 23 for w in "$@"; do 24 [[ $w = "$word" ]] && return 25 index=$((index+1)) 26 done 27 index=-1 28 } 29 30 __contains_word() 31 { 32 local w word=$1; shift 33 for w in "$@"; do 34 [[ $w = "$word" ]] && return 35 done 36 return 1 37 } 38 39 __handle_reply() 40 { 41 __debug "${FUNCNAME[0]}" 42 case $cur in 43 -*) 44 if [[ $(type -t compopt) = "builtin" ]]; then 45 compopt -o nospace 46 fi 47 local allflags 48 if [ ${#must_have_one_flag[@]} -ne 0 ]; then 49 allflags=("${must_have_one_flag[@]}") 50 else 51 allflags=("${flags[*]} ${two_word_flags[*]}") 52 fi 53 COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) 54 if [[ $(type -t compopt) = "builtin" ]]; then 55 [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace 56 fi 57 58 # complete after --flag=abc 59 if [[ $cur == *=* ]]; then 60 if [[ $(type -t compopt) = "builtin" ]]; then 61 compopt +o nospace 62 fi 63 64 local index flag 65 flag="${cur%%=*}" 66 __index_of_word "${flag}" "${flags_with_completion[@]}" 67 COMPREPLY=() 68 if [[ ${index} -ge 0 ]]; then 69 PREFIX="" 70 cur="${cur#*=}" 71 ${flags_completion[${index}]} 72 if [ -n "${ZSH_VERSION}" ]; then 73 # zsh completion needs --flag= prefix 74 eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" 75 fi 76 fi 77 fi 78 return 0; 79 ;; 80 esac 81 82 # check if we are handling a flag with special work handling 83 local index 84 __index_of_word "${prev}" "${flags_with_completion[@]}" 85 if [[ ${index} -ge 0 ]]; then 86 ${flags_completion[${index}]} 87 return 88 fi 89 90 # we are parsing a flag and don't have a special handler, no completion 91 if [[ ${cur} != "${words[cword]}" ]]; then 92 return 93 fi 94 95 local completions 96 completions=("${commands[@]}") 97 if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then 98 completions=("${must_have_one_noun[@]}") 99 fi 100 if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then 101 completions+=("${must_have_one_flag[@]}") 102 fi 103 COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) 104 105 if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then 106 COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) 107 fi 108 109 if [[ ${#COMPREPLY[@]} -eq 0 ]]; then 110 declare -F __custom_func >/dev/null && __custom_func 111 fi 112 113 # available in bash-completion >= 2, not always present on macOS 114 if declare -F __ltrim_colon_completions >/dev/null; then 115 __ltrim_colon_completions "$cur" 116 fi 117 } 118 119 # The arguments should be in the form "ext1|ext2|extn" 120 __handle_filename_extension_flag() 121 { 122 local ext="$1" 123 _filedir "@(${ext})" 124 } 125 126 __handle_subdirs_in_dir_flag() 127 { 128 local dir="$1" 129 pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 130 } 131 132 __handle_flag() 133 { 134 __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 135 136 # if a command required a flag, and we found it, unset must_have_one_flag() 137 local flagname=${words[c]} 138 local flagvalue 139 # if the word contained an = 140 if [[ ${words[c]} == *"="* ]]; then 141 flagvalue=${flagname#*=} # take in as flagvalue after the = 142 flagname=${flagname%%=*} # strip everything after the = 143 flagname="${flagname}=" # but put the = back 144 fi 145 __debug "${FUNCNAME[0]}: looking for ${flagname}" 146 if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then 147 must_have_one_flag=() 148 fi 149 150 # if you set a flag which only applies to this command, don't show subcommands 151 if __contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then 152 commands=() 153 fi 154 155 # keep flag value with flagname as flaghash 156 if [ -n "${flagvalue}" ] ; then 157 flaghash[${flagname}]=${flagvalue} 158 elif [ -n "${words[ $((c+1)) ]}" ] ; then 159 flaghash[${flagname}]=${words[ $((c+1)) ]} 160 else 161 flaghash[${flagname}]="true" # pad "true" for bool flag 162 fi 163 164 # skip the argument to a two word flag 165 if __contains_word "${words[c]}" "${two_word_flags[@]}"; then 166 c=$((c+1)) 167 # if we are looking for a flags value, don't show commands 168 if [[ $c -eq $cword ]]; then 169 commands=() 170 fi 171 fi 172 173 c=$((c+1)) 174 175 } 176 177 __handle_noun() 178 { 179 __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 180 181 if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then 182 must_have_one_noun=() 183 elif __contains_word "${words[c]}" "${noun_aliases[@]}"; then 184 must_have_one_noun=() 185 fi 186 187 nouns+=("${words[c]}") 188 c=$((c+1)) 189 } 190 191 __handle_command() 192 { 193 __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 194 195 local next_command 196 if [[ -n ${last_command} ]]; then 197 next_command="_${last_command}_${words[c]//:/__}" 198 else 199 if [[ $c -eq 0 ]]; then 200 next_command="_$(basename "${words[c]//:/__}")" 201 else 202 next_command="_${words[c]//:/__}" 203 fi 204 fi 205 c=$((c+1)) 206 __debug "${FUNCNAME[0]}: looking for ${next_command}" 207 declare -F "$next_command" >/dev/null && $next_command 208 } 209 210 __handle_word() 211 { 212 if [[ $c -ge $cword ]]; then 213 __handle_reply 214 return 215 fi 216 __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 217 if [[ "${words[c]}" == -* ]]; then 218 __handle_flag 219 elif __contains_word "${words[c]}" "${commands[@]}"; then 220 __handle_command 221 elif [[ $c -eq 0 ]] && __contains_word "$(basename "${words[c]}")" "${commands[@]}"; then 222 __handle_command 223 else 224 __handle_noun 225 fi 226 __handle_word 227 } 228 229 _riff_apply() 230 { 231 last_command="riff_apply" 232 commands=() 233 234 flags=() 235 two_word_flags=() 236 local_nonpersistent_flags=() 237 flags_with_completion=() 238 flags_completion=() 239 240 flags+=("--dry-run") 241 local_nonpersistent_flags+=("--dry-run") 242 flags+=("--filepath=") 243 two_word_flags+=("-f") 244 local_nonpersistent_flags+=("--filepath=") 245 flags+=("--namespace=") 246 local_nonpersistent_flags+=("--namespace=") 247 flags+=("--config=") 248 249 must_have_one_flag=() 250 must_have_one_noun=() 251 noun_aliases=() 252 } 253 254 _riff_build() 255 { 256 last_command="riff_build" 257 commands=() 258 259 flags=() 260 two_word_flags=() 261 local_nonpersistent_flags=() 262 flags_with_completion=() 263 flags_completion=() 264 265 flags+=("--dry-run") 266 local_nonpersistent_flags+=("--dry-run") 267 flags+=("--filepath=") 268 two_word_flags+=("-f") 269 local_nonpersistent_flags+=("--filepath=") 270 flags+=("--name=") 271 two_word_flags+=("-n") 272 local_nonpersistent_flags+=("--name=") 273 flags+=("--push") 274 local_nonpersistent_flags+=("--push") 275 flags+=("--riff-version=") 276 local_nonpersistent_flags+=("--riff-version=") 277 flags+=("--useraccount=") 278 two_word_flags+=("-u") 279 local_nonpersistent_flags+=("--useraccount=") 280 flags+=("--version=") 281 two_word_flags+=("-v") 282 local_nonpersistent_flags+=("--version=") 283 flags+=("--config=") 284 285 must_have_one_flag=() 286 must_have_one_noun=() 287 noun_aliases=() 288 } 289 290 _riff_create_java() 291 { 292 last_command="riff_create_java" 293 commands=() 294 295 flags=() 296 two_word_flags=() 297 local_nonpersistent_flags=() 298 flags_with_completion=() 299 flags_completion=() 300 301 flags+=("--handler=") 302 local_nonpersistent_flags+=("--handler=") 303 flags+=("--artifact=") 304 two_word_flags+=("-a") 305 flags+=("--config=") 306 flags+=("--dry-run") 307 flags+=("--filepath=") 308 two_word_flags+=("-f") 309 flags+=("--force") 310 flags+=("--input=") 311 two_word_flags+=("-i") 312 flags+=("--name=") 313 two_word_flags+=("-n") 314 flags+=("--namespace=") 315 flags+=("--output=") 316 two_word_flags+=("-o") 317 flags+=("--protocol=") 318 two_word_flags+=("-p") 319 flags+=("--push") 320 flags+=("--riff-version=") 321 flags+=("--useraccount=") 322 two_word_flags+=("-u") 323 flags+=("--version=") 324 two_word_flags+=("-v") 325 326 must_have_one_flag=() 327 must_have_one_flag+=("--handler=") 328 must_have_one_noun=() 329 noun_aliases=() 330 } 331 332 _riff_create_js() 333 { 334 last_command="riff_create_js" 335 commands=() 336 337 flags=() 338 two_word_flags=() 339 local_nonpersistent_flags=() 340 flags_with_completion=() 341 flags_completion=() 342 343 flags+=("--artifact=") 344 two_word_flags+=("-a") 345 flags+=("--config=") 346 flags+=("--dry-run") 347 flags+=("--filepath=") 348 two_word_flags+=("-f") 349 flags+=("--force") 350 flags+=("--input=") 351 two_word_flags+=("-i") 352 flags+=("--name=") 353 two_word_flags+=("-n") 354 flags+=("--namespace=") 355 flags+=("--output=") 356 two_word_flags+=("-o") 357 flags+=("--protocol=") 358 two_word_flags+=("-p") 359 flags+=("--push") 360 flags+=("--riff-version=") 361 flags+=("--useraccount=") 362 two_word_flags+=("-u") 363 flags+=("--version=") 364 two_word_flags+=("-v") 365 366 must_have_one_flag=() 367 must_have_one_noun=() 368 noun_aliases=() 369 } 370 371 _riff_create_node() 372 { 373 last_command="riff_create_node" 374 commands=() 375 376 flags=() 377 two_word_flags=() 378 local_nonpersistent_flags=() 379 flags_with_completion=() 380 flags_completion=() 381 382 flags+=("--artifact=") 383 two_word_flags+=("-a") 384 flags+=("--config=") 385 flags+=("--dry-run") 386 flags+=("--filepath=") 387 two_word_flags+=("-f") 388 flags+=("--force") 389 flags+=("--input=") 390 two_word_flags+=("-i") 391 flags+=("--name=") 392 two_word_flags+=("-n") 393 flags+=("--namespace=") 394 flags+=("--output=") 395 two_word_flags+=("-o") 396 flags+=("--protocol=") 397 two_word_flags+=("-p") 398 flags+=("--push") 399 flags+=("--riff-version=") 400 flags+=("--useraccount=") 401 two_word_flags+=("-u") 402 flags+=("--version=") 403 two_word_flags+=("-v") 404 405 must_have_one_flag=() 406 must_have_one_noun=() 407 noun_aliases=() 408 } 409 410 _riff_create_python() 411 { 412 last_command="riff_create_python" 413 commands=() 414 415 flags=() 416 two_word_flags=() 417 local_nonpersistent_flags=() 418 flags_with_completion=() 419 flags_completion=() 420 421 flags+=("--handler=") 422 local_nonpersistent_flags+=("--handler=") 423 flags+=("--artifact=") 424 two_word_flags+=("-a") 425 flags+=("--config=") 426 flags+=("--dry-run") 427 flags+=("--filepath=") 428 two_word_flags+=("-f") 429 flags+=("--force") 430 flags+=("--input=") 431 two_word_flags+=("-i") 432 flags+=("--name=") 433 two_word_flags+=("-n") 434 flags+=("--namespace=") 435 flags+=("--output=") 436 two_word_flags+=("-o") 437 flags+=("--protocol=") 438 two_word_flags+=("-p") 439 flags+=("--push") 440 flags+=("--riff-version=") 441 flags+=("--useraccount=") 442 two_word_flags+=("-u") 443 flags+=("--version=") 444 two_word_flags+=("-v") 445 446 must_have_one_flag=() 447 must_have_one_flag+=("--handler=") 448 must_have_one_noun=() 449 noun_aliases=() 450 } 451 452 _riff_create_shell() 453 { 454 last_command="riff_create_shell" 455 commands=() 456 457 flags=() 458 two_word_flags=() 459 local_nonpersistent_flags=() 460 flags_with_completion=() 461 flags_completion=() 462 463 flags+=("--artifact=") 464 two_word_flags+=("-a") 465 flags+=("--config=") 466 flags+=("--dry-run") 467 flags+=("--filepath=") 468 two_word_flags+=("-f") 469 flags+=("--force") 470 flags+=("--input=") 471 two_word_flags+=("-i") 472 flags+=("--name=") 473 two_word_flags+=("-n") 474 flags+=("--namespace=") 475 flags+=("--output=") 476 two_word_flags+=("-o") 477 flags+=("--protocol=") 478 two_word_flags+=("-p") 479 flags+=("--push") 480 flags+=("--riff-version=") 481 flags+=("--useraccount=") 482 two_word_flags+=("-u") 483 flags+=("--version=") 484 two_word_flags+=("-v") 485 486 must_have_one_flag=() 487 must_have_one_noun=() 488 noun_aliases=() 489 } 490 491 _riff_create() 492 { 493 last_command="riff_create" 494 commands=() 495 commands+=("java") 496 commands+=("js") 497 commands+=("node") 498 commands+=("python") 499 commands+=("shell") 500 501 flags=() 502 two_word_flags=() 503 local_nonpersistent_flags=() 504 flags_with_completion=() 505 flags_completion=() 506 507 flags+=("--artifact=") 508 two_word_flags+=("-a") 509 flags+=("--dry-run") 510 flags+=("--filepath=") 511 two_word_flags+=("-f") 512 flags+=("--force") 513 flags+=("--input=") 514 two_word_flags+=("-i") 515 flags+=("--name=") 516 two_word_flags+=("-n") 517 flags+=("--namespace=") 518 flags+=("--output=") 519 two_word_flags+=("-o") 520 flags+=("--protocol=") 521 two_word_flags+=("-p") 522 flags+=("--push") 523 flags+=("--riff-version=") 524 flags+=("--useraccount=") 525 two_word_flags+=("-u") 526 flags+=("--version=") 527 two_word_flags+=("-v") 528 flags+=("--config=") 529 530 must_have_one_flag=() 531 must_have_one_noun=() 532 noun_aliases=() 533 } 534 535 _riff_delete() 536 { 537 last_command="riff_delete" 538 commands=() 539 540 flags=() 541 two_word_flags=() 542 local_nonpersistent_flags=() 543 flags_with_completion=() 544 flags_completion=() 545 546 flags+=("--all") 547 local_nonpersistent_flags+=("--all") 548 flags+=("--dry-run") 549 local_nonpersistent_flags+=("--dry-run") 550 flags+=("--filepath=") 551 two_word_flags+=("-f") 552 local_nonpersistent_flags+=("--filepath=") 553 flags+=("--name=") 554 two_word_flags+=("-n") 555 local_nonpersistent_flags+=("--name=") 556 flags+=("--namespace=") 557 local_nonpersistent_flags+=("--namespace=") 558 flags+=("--config=") 559 560 must_have_one_flag=() 561 must_have_one_noun=() 562 noun_aliases=() 563 } 564 565 _riff_init_java() 566 { 567 last_command="riff_init_java" 568 commands=() 569 570 flags=() 571 two_word_flags=() 572 local_nonpersistent_flags=() 573 flags_with_completion=() 574 flags_completion=() 575 576 flags+=("--handler=") 577 local_nonpersistent_flags+=("--handler=") 578 flags+=("--artifact=") 579 two_word_flags+=("-a") 580 flags+=("--config=") 581 flags+=("--dry-run") 582 flags+=("--filepath=") 583 two_word_flags+=("-f") 584 flags+=("--force") 585 flags+=("--input=") 586 two_word_flags+=("-i") 587 flags+=("--name=") 588 two_word_flags+=("-n") 589 flags+=("--output=") 590 two_word_flags+=("-o") 591 flags+=("--protocol=") 592 two_word_flags+=("-p") 593 flags+=("--riff-version=") 594 flags+=("--useraccount=") 595 two_word_flags+=("-u") 596 flags+=("--version=") 597 two_word_flags+=("-v") 598 599 must_have_one_flag=() 600 must_have_one_flag+=("--handler=") 601 must_have_one_noun=() 602 noun_aliases=() 603 } 604 605 _riff_init_node() 606 { 607 last_command="riff_init_node" 608 commands=() 609 610 flags=() 611 two_word_flags=() 612 local_nonpersistent_flags=() 613 flags_with_completion=() 614 flags_completion=() 615 616 flags+=("--artifact=") 617 two_word_flags+=("-a") 618 flags+=("--config=") 619 flags+=("--dry-run") 620 flags+=("--filepath=") 621 two_word_flags+=("-f") 622 flags+=("--force") 623 flags+=("--input=") 624 two_word_flags+=("-i") 625 flags+=("--name=") 626 two_word_flags+=("-n") 627 flags+=("--output=") 628 two_word_flags+=("-o") 629 flags+=("--protocol=") 630 two_word_flags+=("-p") 631 flags+=("--riff-version=") 632 flags+=("--useraccount=") 633 two_word_flags+=("-u") 634 flags+=("--version=") 635 two_word_flags+=("-v") 636 637 must_have_one_flag=() 638 must_have_one_noun=() 639 noun_aliases=() 640 } 641 642 _riff_init_python() 643 { 644 last_command="riff_init_python" 645 commands=() 646 647 flags=() 648 two_word_flags=() 649 local_nonpersistent_flags=() 650 flags_with_completion=() 651 flags_completion=() 652 653 flags+=("--handler=") 654 local_nonpersistent_flags+=("--handler=") 655 flags+=("--artifact=") 656 two_word_flags+=("-a") 657 flags+=("--config=") 658 flags+=("--dry-run") 659 flags+=("--filepath=") 660 two_word_flags+=("-f") 661 flags+=("--force") 662 flags+=("--input=") 663 two_word_flags+=("-i") 664 flags+=("--name=") 665 two_word_flags+=("-n") 666 flags+=("--output=") 667 two_word_flags+=("-o") 668 flags+=("--protocol=") 669 two_word_flags+=("-p") 670 flags+=("--riff-version=") 671 flags+=("--useraccount=") 672 two_word_flags+=("-u") 673 flags+=("--version=") 674 two_word_flags+=("-v") 675 676 must_have_one_flag=() 677 must_have_one_flag+=("--handler=") 678 must_have_one_noun=() 679 noun_aliases=() 680 } 681 682 _riff_init_shell() 683 { 684 last_command="riff_init_shell" 685 commands=() 686 687 flags=() 688 two_word_flags=() 689 local_nonpersistent_flags=() 690 flags_with_completion=() 691 flags_completion=() 692 693 flags+=("--artifact=") 694 two_word_flags+=("-a") 695 flags+=("--config=") 696 flags+=("--dry-run") 697 flags+=("--filepath=") 698 two_word_flags+=("-f") 699 flags+=("--force") 700 flags+=("--input=") 701 two_word_flags+=("-i") 702 flags+=("--name=") 703 two_word_flags+=("-n") 704 flags+=("--output=") 705 two_word_flags+=("-o") 706 flags+=("--protocol=") 707 two_word_flags+=("-p") 708 flags+=("--riff-version=") 709 flags+=("--useraccount=") 710 two_word_flags+=("-u") 711 flags+=("--version=") 712 two_word_flags+=("-v") 713 714 must_have_one_flag=() 715 must_have_one_noun=() 716 noun_aliases=() 717 } 718 719 _riff_init() 720 { 721 last_command="riff_init" 722 commands=() 723 commands+=("java") 724 commands+=("node") 725 commands+=("python") 726 commands+=("shell") 727 728 flags=() 729 two_word_flags=() 730 local_nonpersistent_flags=() 731 flags_with_completion=() 732 flags_completion=() 733 734 flags+=("--artifact=") 735 two_word_flags+=("-a") 736 flags+=("--dry-run") 737 flags+=("--filepath=") 738 two_word_flags+=("-f") 739 flags+=("--force") 740 flags+=("--input=") 741 two_word_flags+=("-i") 742 flags+=("--name=") 743 two_word_flags+=("-n") 744 flags+=("--output=") 745 two_word_flags+=("-o") 746 flags+=("--protocol=") 747 two_word_flags+=("-p") 748 flags+=("--riff-version=") 749 flags+=("--useraccount=") 750 two_word_flags+=("-u") 751 flags+=("--version=") 752 two_word_flags+=("-v") 753 flags+=("--config=") 754 755 must_have_one_flag=() 756 must_have_one_noun=() 757 noun_aliases=() 758 } 759 760 _riff_list() 761 { 762 last_command="riff_list" 763 commands=() 764 765 flags=() 766 two_word_flags=() 767 local_nonpersistent_flags=() 768 flags_with_completion=() 769 flags_completion=() 770 771 flags+=("--namespace=") 772 local_nonpersistent_flags+=("--namespace=") 773 flags+=("--config=") 774 775 must_have_one_flag=() 776 must_have_one_noun=() 777 noun_aliases=() 778 } 779 780 _riff_logs() 781 { 782 last_command="riff_logs" 783 commands=() 784 785 flags=() 786 two_word_flags=() 787 local_nonpersistent_flags=() 788 flags_with_completion=() 789 flags_completion=() 790 791 flags+=("--container=") 792 two_word_flags+=("-c") 793 local_nonpersistent_flags+=("--container=") 794 flags+=("--name=") 795 two_word_flags+=("-n") 796 local_nonpersistent_flags+=("--name=") 797 flags+=("--namespace=") 798 local_nonpersistent_flags+=("--namespace=") 799 flags+=("--tail") 800 flags+=("-t") 801 local_nonpersistent_flags+=("--tail") 802 flags+=("--config=") 803 804 must_have_one_flag=() 805 must_have_one_flag+=("--name=") 806 must_have_one_flag+=("-n") 807 must_have_one_noun=() 808 noun_aliases=() 809 } 810 811 _riff_publish() 812 { 813 last_command="riff_publish" 814 commands=() 815 816 flags=() 817 two_word_flags=() 818 local_nonpersistent_flags=() 819 flags_with_completion=() 820 flags_completion=() 821 822 flags+=("--count=") 823 two_word_flags+=("-c") 824 local_nonpersistent_flags+=("--count=") 825 flags+=("--data=") 826 two_word_flags+=("-d") 827 local_nonpersistent_flags+=("--data=") 828 flags+=("--input=") 829 two_word_flags+=("-i") 830 local_nonpersistent_flags+=("--input=") 831 flags+=("--namespace=") 832 local_nonpersistent_flags+=("--namespace=") 833 flags+=("--pause=") 834 two_word_flags+=("-p") 835 local_nonpersistent_flags+=("--pause=") 836 flags+=("--reply") 837 flags+=("-r") 838 local_nonpersistent_flags+=("--reply") 839 flags+=("--config=") 840 841 must_have_one_flag=() 842 must_have_one_flag+=("--data=") 843 must_have_one_flag+=("-d") 844 must_have_one_noun=() 845 noun_aliases=() 846 } 847 848 _riff_update() 849 { 850 last_command="riff_update" 851 commands=() 852 853 flags=() 854 two_word_flags=() 855 local_nonpersistent_flags=() 856 flags_with_completion=() 857 flags_completion=() 858 859 flags+=("--dry-run") 860 flags+=("--filepath=") 861 two_word_flags+=("-f") 862 flags+=("--name=") 863 two_word_flags+=("-n") 864 flags+=("--namespace=") 865 flags+=("--push") 866 flags+=("--riff-version=") 867 flags+=("--useraccount=") 868 two_word_flags+=("-u") 869 flags+=("--version=") 870 two_word_flags+=("-v") 871 flags+=("--config=") 872 873 must_have_one_flag=() 874 must_have_one_noun=() 875 noun_aliases=() 876 } 877 878 _riff_version() 879 { 880 last_command="riff_version" 881 commands=() 882 883 flags=() 884 two_word_flags=() 885 local_nonpersistent_flags=() 886 flags_with_completion=() 887 flags_completion=() 888 889 flags+=("--config=") 890 891 must_have_one_flag=() 892 must_have_one_noun=() 893 noun_aliases=() 894 } 895 896 _riff() 897 { 898 last_command="riff" 899 commands=() 900 commands+=("apply") 901 commands+=("build") 902 commands+=("create") 903 commands+=("delete") 904 commands+=("init") 905 commands+=("list") 906 commands+=("logs") 907 commands+=("publish") 908 commands+=("update") 909 commands+=("version") 910 911 flags=() 912 two_word_flags=() 913 local_nonpersistent_flags=() 914 flags_with_completion=() 915 flags_completion=() 916 917 flags+=("--config=") 918 919 must_have_one_flag=() 920 must_have_one_noun=() 921 noun_aliases=() 922 } 923 924 __start_riff() 925 { 926 local cur prev words cword 927 declare -A flaghash 2>/dev/null || : 928 if declare -F _init_completion >/dev/null 2>&1; then 929 _init_completion -s || return 930 else 931 __my_init_completion -n "=" || return 932 fi 933 934 local c=0 935 local flags=() 936 local two_word_flags=() 937 local local_nonpersistent_flags=() 938 local flags_with_completion=() 939 local flags_completion=() 940 local commands=("riff") 941 local must_have_one_flag=() 942 local must_have_one_noun=() 943 local last_command 944 local nouns=() 945 946 __handle_word 947 } 948 949 if [[ $(type -t compopt) = "builtin" ]]; then 950 complete -o default -F __start_riff riff 951 else 952 complete -o default -o nospace -F __start_riff riff 953 fi 954 955 # ex: ts=4 sw=4 et filetype=sh