github.com/openshift/source-to-image@v1.4.1-0.20240516041539-bf52fc02204e/contrib/completions/bash/s2i (about) 1 # bash completion for s2i -*- shell-script -*- 2 3 __s2i_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 __s2i_init_completion() 13 { 14 COMPREPLY=() 15 _get_comp_words_by_ref "$@" cur prev words cword 16 } 17 18 __s2i_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 __s2i_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 __s2i_handle_go_custom_completion() 40 { 41 __s2i_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" 42 43 local shellCompDirectiveError=1 44 local shellCompDirectiveNoSpace=2 45 local shellCompDirectiveNoFileComp=4 46 local shellCompDirectiveFilterFileExt=8 47 local shellCompDirectiveFilterDirs=16 48 49 local out requestComp lastParam lastChar comp directive args 50 51 # Prepare the command to request completions for the program. 52 # Calling ${words[0]} instead of directly s2i allows handling aliases 53 args=("${words[@]:1}") 54 # Disable ActiveHelp which is not supported for bash completion v1 55 requestComp="S2I_ACTIVE_HELP=0 ${words[0]} __completeNoDesc ${args[*]}" 56 57 lastParam=${words[$((${#words[@]}-1))]} 58 lastChar=${lastParam:$((${#lastParam}-1)):1} 59 __s2i_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" 60 61 if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then 62 # If the last parameter is complete (there is a space following it) 63 # We add an extra empty parameter so we can indicate this to the go method. 64 __s2i_debug "${FUNCNAME[0]}: Adding extra empty parameter" 65 requestComp="${requestComp} \"\"" 66 fi 67 68 __s2i_debug "${FUNCNAME[0]}: calling ${requestComp}" 69 # Use eval to handle any environment variables and such 70 out=$(eval "${requestComp}" 2>/dev/null) 71 72 # Extract the directive integer at the very end of the output following a colon (:) 73 directive=${out##*:} 74 # Remove the directive 75 out=${out%:*} 76 if [ "${directive}" = "${out}" ]; then 77 # There is not directive specified 78 directive=0 79 fi 80 __s2i_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" 81 __s2i_debug "${FUNCNAME[0]}: the completions are: ${out}" 82 83 if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then 84 # Error code. No completion. 85 __s2i_debug "${FUNCNAME[0]}: received error from custom completion go code" 86 return 87 else 88 if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then 89 if [[ $(type -t compopt) = "builtin" ]]; then 90 __s2i_debug "${FUNCNAME[0]}: activating no space" 91 compopt -o nospace 92 fi 93 fi 94 if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then 95 if [[ $(type -t compopt) = "builtin" ]]; then 96 __s2i_debug "${FUNCNAME[0]}: activating no file completion" 97 compopt +o default 98 fi 99 fi 100 fi 101 102 if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then 103 # File extension filtering 104 local fullFilter filter filteringCmd 105 # Do not use quotes around the $out variable or else newline 106 # characters will be kept. 107 for filter in ${out}; do 108 fullFilter+="$filter|" 109 done 110 111 filteringCmd="_filedir $fullFilter" 112 __s2i_debug "File filtering command: $filteringCmd" 113 $filteringCmd 114 elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then 115 # File completion for directories only 116 local subdir 117 # Use printf to strip any trailing newline 118 subdir=$(printf "%s" "${out}") 119 if [ -n "$subdir" ]; then 120 __s2i_debug "Listing directories in $subdir" 121 __s2i_handle_subdirs_in_dir_flag "$subdir" 122 else 123 __s2i_debug "Listing directories in ." 124 _filedir -d 125 fi 126 else 127 while IFS='' read -r comp; do 128 COMPREPLY+=("$comp") 129 done < <(compgen -W "${out}" -- "$cur") 130 fi 131 } 132 133 __s2i_handle_reply() 134 { 135 __s2i_debug "${FUNCNAME[0]}" 136 local comp 137 case $cur in 138 -*) 139 if [[ $(type -t compopt) = "builtin" ]]; then 140 compopt -o nospace 141 fi 142 local allflags 143 if [ ${#must_have_one_flag[@]} -ne 0 ]; then 144 allflags=("${must_have_one_flag[@]}") 145 else 146 allflags=("${flags[*]} ${two_word_flags[*]}") 147 fi 148 while IFS='' read -r comp; do 149 COMPREPLY+=("$comp") 150 done < <(compgen -W "${allflags[*]}" -- "$cur") 151 if [[ $(type -t compopt) = "builtin" ]]; then 152 [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace 153 fi 154 155 # complete after --flag=abc 156 if [[ $cur == *=* ]]; then 157 if [[ $(type -t compopt) = "builtin" ]]; then 158 compopt +o nospace 159 fi 160 161 local index flag 162 flag="${cur%=*}" 163 __s2i_index_of_word "${flag}" "${flags_with_completion[@]}" 164 COMPREPLY=() 165 if [[ ${index} -ge 0 ]]; then 166 PREFIX="" 167 cur="${cur#*=}" 168 ${flags_completion[${index}]} 169 if [ -n "${ZSH_VERSION:-}" ]; then 170 # zsh completion needs --flag= prefix 171 eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" 172 fi 173 fi 174 fi 175 176 if [[ -z "${flag_parsing_disabled}" ]]; then 177 # If flag parsing is enabled, we have completed the flags and can return. 178 # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough 179 # to possibly call handle_go_custom_completion. 180 return 0; 181 fi 182 ;; 183 esac 184 185 # check if we are handling a flag with special work handling 186 local index 187 __s2i_index_of_word "${prev}" "${flags_with_completion[@]}" 188 if [[ ${index} -ge 0 ]]; then 189 ${flags_completion[${index}]} 190 return 191 fi 192 193 # we are parsing a flag and don't have a special handler, no completion 194 if [[ ${cur} != "${words[cword]}" ]]; then 195 return 196 fi 197 198 local completions 199 completions=("${commands[@]}") 200 if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then 201 completions+=("${must_have_one_noun[@]}") 202 elif [[ -n "${has_completion_function}" ]]; then 203 # if a go completion function is provided, defer to that function 204 __s2i_handle_go_custom_completion 205 fi 206 if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then 207 completions+=("${must_have_one_flag[@]}") 208 fi 209 while IFS='' read -r comp; do 210 COMPREPLY+=("$comp") 211 done < <(compgen -W "${completions[*]}" -- "$cur") 212 213 if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then 214 while IFS='' read -r comp; do 215 COMPREPLY+=("$comp") 216 done < <(compgen -W "${noun_aliases[*]}" -- "$cur") 217 fi 218 219 if [[ ${#COMPREPLY[@]} -eq 0 ]]; then 220 if declare -F __s2i_custom_func >/dev/null; then 221 # try command name qualified custom func 222 __s2i_custom_func 223 else 224 # otherwise fall back to unqualified for compatibility 225 declare -F __custom_func >/dev/null && __custom_func 226 fi 227 fi 228 229 # available in bash-completion >= 2, not always present on macOS 230 if declare -F __ltrim_colon_completions >/dev/null; then 231 __ltrim_colon_completions "$cur" 232 fi 233 234 # If there is only 1 completion and it is a flag with an = it will be completed 235 # but we don't want a space after the = 236 if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then 237 compopt -o nospace 238 fi 239 } 240 241 # The arguments should be in the form "ext1|ext2|extn" 242 __s2i_handle_filename_extension_flag() 243 { 244 local ext="$1" 245 _filedir "@(${ext})" 246 } 247 248 __s2i_handle_subdirs_in_dir_flag() 249 { 250 local dir="$1" 251 pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return 252 } 253 254 __s2i_handle_flag() 255 { 256 __s2i_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 257 258 # if a command required a flag, and we found it, unset must_have_one_flag() 259 local flagname=${words[c]} 260 local flagvalue="" 261 # if the word contained an = 262 if [[ ${words[c]} == *"="* ]]; then 263 flagvalue=${flagname#*=} # take in as flagvalue after the = 264 flagname=${flagname%=*} # strip everything after the = 265 flagname="${flagname}=" # but put the = back 266 fi 267 __s2i_debug "${FUNCNAME[0]}: looking for ${flagname}" 268 if __s2i_contains_word "${flagname}" "${must_have_one_flag[@]}"; then 269 must_have_one_flag=() 270 fi 271 272 # if you set a flag which only applies to this command, don't show subcommands 273 if __s2i_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then 274 commands=() 275 fi 276 277 # keep flag value with flagname as flaghash 278 # flaghash variable is an associative array which is only supported in bash > 3. 279 if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then 280 if [ -n "${flagvalue}" ] ; then 281 flaghash[${flagname}]=${flagvalue} 282 elif [ -n "${words[ $((c+1)) ]}" ] ; then 283 flaghash[${flagname}]=${words[ $((c+1)) ]} 284 else 285 flaghash[${flagname}]="true" # pad "true" for bool flag 286 fi 287 fi 288 289 # skip the argument to a two word flag 290 if [[ ${words[c]} != *"="* ]] && __s2i_contains_word "${words[c]}" "${two_word_flags[@]}"; then 291 __s2i_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" 292 c=$((c+1)) 293 # if we are looking for a flags value, don't show commands 294 if [[ $c -eq $cword ]]; then 295 commands=() 296 fi 297 fi 298 299 c=$((c+1)) 300 301 } 302 303 __s2i_handle_noun() 304 { 305 __s2i_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 306 307 if __s2i_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then 308 must_have_one_noun=() 309 elif __s2i_contains_word "${words[c]}" "${noun_aliases[@]}"; then 310 must_have_one_noun=() 311 fi 312 313 nouns+=("${words[c]}") 314 c=$((c+1)) 315 } 316 317 __s2i_handle_command() 318 { 319 __s2i_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 320 321 local next_command 322 if [[ -n ${last_command} ]]; then 323 next_command="_${last_command}_${words[c]//:/__}" 324 else 325 if [[ $c -eq 0 ]]; then 326 next_command="_s2i_root_command" 327 else 328 next_command="_${words[c]//:/__}" 329 fi 330 fi 331 c=$((c+1)) 332 __s2i_debug "${FUNCNAME[0]}: looking for ${next_command}" 333 declare -F "$next_command" >/dev/null && $next_command 334 } 335 336 __s2i_handle_word() 337 { 338 if [[ $c -ge $cword ]]; then 339 __s2i_handle_reply 340 return 341 fi 342 __s2i_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" 343 if [[ "${words[c]}" == -* ]]; then 344 __s2i_handle_flag 345 elif __s2i_contains_word "${words[c]}" "${commands[@]}"; then 346 __s2i_handle_command 347 elif [[ $c -eq 0 ]]; then 348 __s2i_handle_command 349 elif __s2i_contains_word "${words[c]}" "${command_aliases[@]}"; then 350 # aliashash variable is an associative array which is only supported in bash > 3. 351 if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then 352 words[c]=${aliashash[${words[c]}]} 353 __s2i_handle_command 354 else 355 __s2i_handle_noun 356 fi 357 else 358 __s2i_handle_noun 359 fi 360 __s2i_handle_word 361 } 362 363 _s2i_build() 364 { 365 last_command="s2i_build" 366 367 command_aliases=() 368 369 commands=() 370 371 flags=() 372 two_word_flags=() 373 local_nonpersistent_flags=() 374 flags_with_completion=() 375 flags_completion=() 376 377 flags+=("--add-host=") 378 two_word_flags+=("--add-host") 379 local_nonpersistent_flags+=("--add-host") 380 local_nonpersistent_flags+=("--add-host=") 381 flags+=("--allowed-uids=") 382 two_word_flags+=("--allowed-uids") 383 two_word_flags+=("-u") 384 local_nonpersistent_flags+=("--allowed-uids") 385 local_nonpersistent_flags+=("--allowed-uids=") 386 local_nonpersistent_flags+=("-u") 387 flags+=("--application-name=") 388 two_word_flags+=("--application-name") 389 two_word_flags+=("-n") 390 local_nonpersistent_flags+=("--application-name") 391 local_nonpersistent_flags+=("--application-name=") 392 local_nonpersistent_flags+=("-n") 393 flags+=("--as-dockerfile=") 394 two_word_flags+=("--as-dockerfile") 395 local_nonpersistent_flags+=("--as-dockerfile") 396 local_nonpersistent_flags+=("--as-dockerfile=") 397 flags+=("--assemble-runtime-user=") 398 two_word_flags+=("--assemble-runtime-user") 399 local_nonpersistent_flags+=("--assemble-runtime-user") 400 local_nonpersistent_flags+=("--assemble-runtime-user=") 401 flags+=("--assemble-user=") 402 two_word_flags+=("--assemble-user") 403 local_nonpersistent_flags+=("--assemble-user") 404 local_nonpersistent_flags+=("--assemble-user=") 405 flags+=("--callback-url=") 406 two_word_flags+=("--callback-url") 407 local_nonpersistent_flags+=("--callback-url") 408 local_nonpersistent_flags+=("--callback-url=") 409 flags+=("--cap-drop=") 410 two_word_flags+=("--cap-drop") 411 local_nonpersistent_flags+=("--cap-drop") 412 local_nonpersistent_flags+=("--cap-drop=") 413 flags+=("--context-dir=") 414 two_word_flags+=("--context-dir") 415 local_nonpersistent_flags+=("--context-dir") 416 local_nonpersistent_flags+=("--context-dir=") 417 flags+=("--copy") 418 flags+=("-c") 419 local_nonpersistent_flags+=("--copy") 420 local_nonpersistent_flags+=("-c") 421 flags+=("--description=") 422 two_word_flags+=("--description") 423 local_nonpersistent_flags+=("--description") 424 local_nonpersistent_flags+=("--description=") 425 flags+=("--destination=") 426 two_word_flags+=("--destination") 427 two_word_flags+=("-d") 428 local_nonpersistent_flags+=("--destination") 429 local_nonpersistent_flags+=("--destination=") 430 local_nonpersistent_flags+=("-d") 431 flags+=("--dockercfg-path=") 432 two_word_flags+=("--dockercfg-path") 433 local_nonpersistent_flags+=("--dockercfg-path") 434 local_nonpersistent_flags+=("--dockercfg-path=") 435 flags+=("--env=") 436 two_word_flags+=("--env") 437 two_word_flags+=("-e") 438 local_nonpersistent_flags+=("--env") 439 local_nonpersistent_flags+=("--env=") 440 local_nonpersistent_flags+=("-e") 441 flags+=("--environment-file=") 442 two_word_flags+=("--environment-file") 443 two_word_flags+=("-E") 444 local_nonpersistent_flags+=("--environment-file") 445 local_nonpersistent_flags+=("--environment-file=") 446 local_nonpersistent_flags+=("-E") 447 flags+=("--exclude=") 448 two_word_flags+=("--exclude") 449 local_nonpersistent_flags+=("--exclude") 450 local_nonpersistent_flags+=("--exclude=") 451 flags+=("--ignore-submodules") 452 local_nonpersistent_flags+=("--ignore-submodules") 453 flags+=("--image-scripts-url=") 454 two_word_flags+=("--image-scripts-url") 455 local_nonpersistent_flags+=("--image-scripts-url") 456 local_nonpersistent_flags+=("--image-scripts-url=") 457 flags+=("--incremental") 458 local_nonpersistent_flags+=("--incremental") 459 flags+=("--incremental-pull-policy=") 460 two_word_flags+=("--incremental-pull-policy") 461 local_nonpersistent_flags+=("--incremental-pull-policy") 462 local_nonpersistent_flags+=("--incremental-pull-policy=") 463 flags+=("--inject=") 464 two_word_flags+=("--inject") 465 two_word_flags+=("-i") 466 local_nonpersistent_flags+=("--inject") 467 local_nonpersistent_flags+=("--inject=") 468 local_nonpersistent_flags+=("-i") 469 flags+=("--keep-symlinks") 470 local_nonpersistent_flags+=("--keep-symlinks") 471 flags+=("--location=") 472 two_word_flags+=("--location") 473 two_word_flags+=("-l") 474 local_nonpersistent_flags+=("--location") 475 local_nonpersistent_flags+=("--location=") 476 local_nonpersistent_flags+=("-l") 477 flags+=("--network=") 478 two_word_flags+=("--network") 479 local_nonpersistent_flags+=("--network") 480 local_nonpersistent_flags+=("--network=") 481 flags+=("--pull-policy=") 482 two_word_flags+=("--pull-policy") 483 two_word_flags+=("-p") 484 local_nonpersistent_flags+=("--pull-policy") 485 local_nonpersistent_flags+=("--pull-policy=") 486 local_nonpersistent_flags+=("-p") 487 flags+=("--quiet") 488 flags+=("-q") 489 local_nonpersistent_flags+=("--quiet") 490 local_nonpersistent_flags+=("-q") 491 flags+=("--ref=") 492 two_word_flags+=("--ref") 493 two_word_flags+=("-r") 494 local_nonpersistent_flags+=("--ref") 495 local_nonpersistent_flags+=("--ref=") 496 local_nonpersistent_flags+=("-r") 497 flags+=("--rm") 498 local_nonpersistent_flags+=("--rm") 499 flags+=("--run") 500 local_nonpersistent_flags+=("--run") 501 flags+=("--runtime-artifact=") 502 two_word_flags+=("--runtime-artifact") 503 two_word_flags+=("-a") 504 local_nonpersistent_flags+=("--runtime-artifact") 505 local_nonpersistent_flags+=("--runtime-artifact=") 506 local_nonpersistent_flags+=("-a") 507 flags+=("--runtime-image=") 508 two_word_flags+=("--runtime-image") 509 local_nonpersistent_flags+=("--runtime-image") 510 local_nonpersistent_flags+=("--runtime-image=") 511 flags+=("--runtime-pull-policy=") 512 two_word_flags+=("--runtime-pull-policy") 513 local_nonpersistent_flags+=("--runtime-pull-policy") 514 local_nonpersistent_flags+=("--runtime-pull-policy=") 515 flags+=("--save-temp-dir") 516 local_nonpersistent_flags+=("--save-temp-dir") 517 flags+=("--scripts=") 518 two_word_flags+=("--scripts") 519 local_nonpersistent_flags+=("--scripts") 520 local_nonpersistent_flags+=("--scripts=") 521 flags+=("--scripts-url=") 522 two_word_flags+=("--scripts-url") 523 two_word_flags+=("-s") 524 local_nonpersistent_flags+=("--scripts-url") 525 local_nonpersistent_flags+=("--scripts-url=") 526 local_nonpersistent_flags+=("-s") 527 flags+=("--use-config") 528 local_nonpersistent_flags+=("--use-config") 529 flags+=("--volume=") 530 two_word_flags+=("--volume") 531 two_word_flags+=("-v") 532 local_nonpersistent_flags+=("--volume") 533 local_nonpersistent_flags+=("--volume=") 534 local_nonpersistent_flags+=("-v") 535 flags+=("--ca=") 536 two_word_flags+=("--ca") 537 flags+=("--cert=") 538 two_word_flags+=("--cert") 539 flags+=("--key=") 540 two_word_flags+=("--key") 541 flags+=("--loglevel=") 542 two_word_flags+=("--loglevel") 543 flags+=("--tls") 544 flags+=("--tlsverify") 545 flags+=("--url=") 546 two_word_flags+=("--url") 547 two_word_flags+=("-U") 548 549 must_have_one_flag=() 550 must_have_one_noun=() 551 noun_aliases=() 552 } 553 554 _s2i_completion() 555 { 556 last_command="s2i_completion" 557 558 command_aliases=() 559 560 commands=() 561 562 flags=() 563 two_word_flags=() 564 local_nonpersistent_flags=() 565 flags_with_completion=() 566 flags_completion=() 567 568 flags+=("--help") 569 flags+=("-h") 570 local_nonpersistent_flags+=("--help") 571 local_nonpersistent_flags+=("-h") 572 flags+=("--ca=") 573 two_word_flags+=("--ca") 574 flags+=("--cert=") 575 two_word_flags+=("--cert") 576 flags+=("--key=") 577 two_word_flags+=("--key") 578 flags+=("--loglevel=") 579 two_word_flags+=("--loglevel") 580 flags+=("--tls") 581 flags+=("--tlsverify") 582 flags+=("--url=") 583 two_word_flags+=("--url") 584 two_word_flags+=("-U") 585 586 must_have_one_flag=() 587 must_have_one_noun=() 588 must_have_one_noun+=("bash") 589 must_have_one_noun+=("zsh") 590 noun_aliases=() 591 } 592 593 _s2i_create() 594 { 595 last_command="s2i_create" 596 597 command_aliases=() 598 599 commands=() 600 601 flags=() 602 two_word_flags=() 603 local_nonpersistent_flags=() 604 flags_with_completion=() 605 flags_completion=() 606 607 flags+=("--ca=") 608 two_word_flags+=("--ca") 609 flags+=("--cert=") 610 two_word_flags+=("--cert") 611 flags+=("--key=") 612 two_word_flags+=("--key") 613 flags+=("--loglevel=") 614 two_word_flags+=("--loglevel") 615 flags+=("--tls") 616 flags+=("--tlsverify") 617 flags+=("--url=") 618 two_word_flags+=("--url") 619 two_word_flags+=("-U") 620 621 must_have_one_flag=() 622 must_have_one_noun=() 623 noun_aliases=() 624 } 625 626 _s2i_generate() 627 { 628 last_command="s2i_generate" 629 630 command_aliases=() 631 632 commands=() 633 634 flags=() 635 two_word_flags=() 636 local_nonpersistent_flags=() 637 flags_with_completion=() 638 flags_completion=() 639 640 flags+=("--assemble-runtime-user=") 641 two_word_flags+=("--assemble-runtime-user") 642 local_nonpersistent_flags+=("--assemble-runtime-user") 643 local_nonpersistent_flags+=("--assemble-runtime-user=") 644 flags+=("--assemble-user=") 645 two_word_flags+=("--assemble-user") 646 local_nonpersistent_flags+=("--assemble-user") 647 local_nonpersistent_flags+=("--assemble-user=") 648 flags+=("--env=") 649 two_word_flags+=("--env") 650 two_word_flags+=("-e") 651 local_nonpersistent_flags+=("--env") 652 local_nonpersistent_flags+=("--env=") 653 local_nonpersistent_flags+=("-e") 654 flags+=("--quiet") 655 flags+=("-q") 656 local_nonpersistent_flags+=("--quiet") 657 local_nonpersistent_flags+=("-q") 658 flags+=("--ca=") 659 two_word_flags+=("--ca") 660 flags+=("--cert=") 661 two_word_flags+=("--cert") 662 flags+=("--key=") 663 two_word_flags+=("--key") 664 flags+=("--loglevel=") 665 two_word_flags+=("--loglevel") 666 flags+=("--tls") 667 flags+=("--tlsverify") 668 flags+=("--url=") 669 two_word_flags+=("--url") 670 two_word_flags+=("-U") 671 672 must_have_one_flag=() 673 must_have_one_noun=() 674 noun_aliases=() 675 } 676 677 _s2i_help() 678 { 679 last_command="s2i_help" 680 681 command_aliases=() 682 683 commands=() 684 685 flags=() 686 two_word_flags=() 687 local_nonpersistent_flags=() 688 flags_with_completion=() 689 flags_completion=() 690 691 flags+=("--ca=") 692 two_word_flags+=("--ca") 693 flags+=("--cert=") 694 two_word_flags+=("--cert") 695 flags+=("--key=") 696 two_word_flags+=("--key") 697 flags+=("--loglevel=") 698 two_word_flags+=("--loglevel") 699 flags+=("--tls") 700 flags+=("--tlsverify") 701 flags+=("--url=") 702 two_word_flags+=("--url") 703 two_word_flags+=("-U") 704 705 must_have_one_flag=() 706 must_have_one_noun=() 707 has_completion_function=1 708 noun_aliases=() 709 } 710 711 _s2i_rebuild() 712 { 713 last_command="s2i_rebuild" 714 715 command_aliases=() 716 717 commands=() 718 719 flags=() 720 two_word_flags=() 721 local_nonpersistent_flags=() 722 flags_with_completion=() 723 flags_completion=() 724 725 flags+=("--callback-url=") 726 two_word_flags+=("--callback-url") 727 local_nonpersistent_flags+=("--callback-url") 728 local_nonpersistent_flags+=("--callback-url=") 729 flags+=("--destination=") 730 two_word_flags+=("--destination") 731 two_word_flags+=("-d") 732 local_nonpersistent_flags+=("--destination") 733 local_nonpersistent_flags+=("--destination=") 734 local_nonpersistent_flags+=("-d") 735 flags+=("--dockercfg-path=") 736 two_word_flags+=("--dockercfg-path") 737 local_nonpersistent_flags+=("--dockercfg-path") 738 local_nonpersistent_flags+=("--dockercfg-path=") 739 flags+=("--incremental") 740 local_nonpersistent_flags+=("--incremental") 741 flags+=("--incremental-pull-policy=") 742 two_word_flags+=("--incremental-pull-policy") 743 local_nonpersistent_flags+=("--incremental-pull-policy") 744 local_nonpersistent_flags+=("--incremental-pull-policy=") 745 flags+=("--pull-policy=") 746 two_word_flags+=("--pull-policy") 747 two_word_flags+=("-p") 748 local_nonpersistent_flags+=("--pull-policy") 749 local_nonpersistent_flags+=("--pull-policy=") 750 local_nonpersistent_flags+=("-p") 751 flags+=("--quiet") 752 flags+=("-q") 753 local_nonpersistent_flags+=("--quiet") 754 local_nonpersistent_flags+=("-q") 755 flags+=("--rm") 756 local_nonpersistent_flags+=("--rm") 757 flags+=("--runtime-pull-policy=") 758 two_word_flags+=("--runtime-pull-policy") 759 local_nonpersistent_flags+=("--runtime-pull-policy") 760 local_nonpersistent_flags+=("--runtime-pull-policy=") 761 flags+=("--save-temp-dir") 762 local_nonpersistent_flags+=("--save-temp-dir") 763 flags+=("--ca=") 764 two_word_flags+=("--ca") 765 flags+=("--cert=") 766 two_word_flags+=("--cert") 767 flags+=("--key=") 768 two_word_flags+=("--key") 769 flags+=("--loglevel=") 770 two_word_flags+=("--loglevel") 771 flags+=("--tls") 772 flags+=("--tlsverify") 773 flags+=("--url=") 774 two_word_flags+=("--url") 775 two_word_flags+=("-U") 776 777 must_have_one_flag=() 778 must_have_one_noun=() 779 noun_aliases=() 780 } 781 782 _s2i_usage() 783 { 784 last_command="s2i_usage" 785 786 command_aliases=() 787 788 commands=() 789 790 flags=() 791 two_word_flags=() 792 local_nonpersistent_flags=() 793 flags_with_completion=() 794 flags_completion=() 795 796 flags+=("--callback-url=") 797 two_word_flags+=("--callback-url") 798 local_nonpersistent_flags+=("--callback-url") 799 local_nonpersistent_flags+=("--callback-url=") 800 flags+=("--destination=") 801 two_word_flags+=("--destination") 802 two_word_flags+=("-d") 803 local_nonpersistent_flags+=("--destination") 804 local_nonpersistent_flags+=("--destination=") 805 local_nonpersistent_flags+=("-d") 806 flags+=("--dockercfg-path=") 807 two_word_flags+=("--dockercfg-path") 808 local_nonpersistent_flags+=("--dockercfg-path") 809 local_nonpersistent_flags+=("--dockercfg-path=") 810 flags+=("--incremental") 811 local_nonpersistent_flags+=("--incremental") 812 flags+=("--incremental-pull-policy=") 813 two_word_flags+=("--incremental-pull-policy") 814 local_nonpersistent_flags+=("--incremental-pull-policy") 815 local_nonpersistent_flags+=("--incremental-pull-policy=") 816 flags+=("--location=") 817 two_word_flags+=("--location") 818 two_word_flags+=("-l") 819 local_nonpersistent_flags+=("--location") 820 local_nonpersistent_flags+=("--location=") 821 local_nonpersistent_flags+=("-l") 822 flags+=("--pull-policy=") 823 two_word_flags+=("--pull-policy") 824 two_word_flags+=("-p") 825 local_nonpersistent_flags+=("--pull-policy") 826 local_nonpersistent_flags+=("--pull-policy=") 827 local_nonpersistent_flags+=("-p") 828 flags+=("--quiet") 829 flags+=("-q") 830 local_nonpersistent_flags+=("--quiet") 831 local_nonpersistent_flags+=("-q") 832 flags+=("--rm") 833 local_nonpersistent_flags+=("--rm") 834 flags+=("--runtime-pull-policy=") 835 two_word_flags+=("--runtime-pull-policy") 836 local_nonpersistent_flags+=("--runtime-pull-policy") 837 local_nonpersistent_flags+=("--runtime-pull-policy=") 838 flags+=("--save-temp-dir") 839 local_nonpersistent_flags+=("--save-temp-dir") 840 flags+=("--ca=") 841 two_word_flags+=("--ca") 842 flags+=("--cert=") 843 two_word_flags+=("--cert") 844 flags+=("--key=") 845 two_word_flags+=("--key") 846 flags+=("--loglevel=") 847 two_word_flags+=("--loglevel") 848 flags+=("--tls") 849 flags+=("--tlsverify") 850 flags+=("--url=") 851 two_word_flags+=("--url") 852 two_word_flags+=("-U") 853 854 must_have_one_flag=() 855 must_have_one_noun=() 856 noun_aliases=() 857 } 858 859 _s2i_version() 860 { 861 last_command="s2i_version" 862 863 command_aliases=() 864 865 commands=() 866 867 flags=() 868 two_word_flags=() 869 local_nonpersistent_flags=() 870 flags_with_completion=() 871 flags_completion=() 872 873 flags+=("--ca=") 874 two_word_flags+=("--ca") 875 flags+=("--cert=") 876 two_word_flags+=("--cert") 877 flags+=("--key=") 878 two_word_flags+=("--key") 879 flags+=("--loglevel=") 880 two_word_flags+=("--loglevel") 881 flags+=("--tls") 882 flags+=("--tlsverify") 883 flags+=("--url=") 884 two_word_flags+=("--url") 885 two_word_flags+=("-U") 886 887 must_have_one_flag=() 888 must_have_one_noun=() 889 noun_aliases=() 890 } 891 892 _s2i_root_command() 893 { 894 last_command="s2i" 895 896 command_aliases=() 897 898 commands=() 899 commands+=("build") 900 commands+=("completion") 901 commands+=("create") 902 commands+=("generate") 903 commands+=("help") 904 commands+=("rebuild") 905 commands+=("usage") 906 commands+=("version") 907 908 flags=() 909 two_word_flags=() 910 local_nonpersistent_flags=() 911 flags_with_completion=() 912 flags_completion=() 913 914 flags+=("--ca=") 915 two_word_flags+=("--ca") 916 flags+=("--cert=") 917 two_word_flags+=("--cert") 918 flags+=("--key=") 919 two_word_flags+=("--key") 920 flags+=("--loglevel=") 921 two_word_flags+=("--loglevel") 922 flags+=("--tls") 923 flags+=("--tlsverify") 924 flags+=("--url=") 925 two_word_flags+=("--url") 926 two_word_flags+=("-U") 927 928 must_have_one_flag=() 929 must_have_one_noun=() 930 noun_aliases=() 931 } 932 933 __start_s2i() 934 { 935 local cur prev words cword split 936 declare -A flaghash 2>/dev/null || : 937 declare -A aliashash 2>/dev/null || : 938 if declare -F _init_completion >/dev/null 2>&1; then 939 _init_completion -s || return 940 else 941 __s2i_init_completion -n "=" || return 942 fi 943 944 local c=0 945 local flag_parsing_disabled= 946 local flags=() 947 local two_word_flags=() 948 local local_nonpersistent_flags=() 949 local flags_with_completion=() 950 local flags_completion=() 951 local commands=("s2i") 952 local command_aliases=() 953 local must_have_one_flag=() 954 local must_have_one_noun=() 955 local has_completion_function="" 956 local last_command="" 957 local nouns=() 958 local noun_aliases=() 959 960 __s2i_handle_word 961 } 962 963 if [[ $(type -t compopt) = "builtin" ]]; then 964 complete -o default -F __start_s2i s2i 965 else 966 complete -o default -o nospace -F __start_s2i s2i 967 fi 968 969 # ex: ts=4 sw=4 et filetype=sh