You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2445 lines
62 KiB

  1. #!/bin/bash
  2. __debug()
  3. {
  4. if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
  5. echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
  6. fi
  7. }
  8. # Homebrew on Macs have version 1.3 of bash-completion which doesn't include
  9. # _init_completion. This is a very minimal version of that function.
  10. __my_init_completion()
  11. {
  12. COMPREPLY=()
  13. _get_comp_words_by_ref cur prev words cword
  14. }
  15. __index_of_word()
  16. {
  17. local w word=$1
  18. shift
  19. index=0
  20. for w in "$@"; do
  21. [[ $w = "$word" ]] && return
  22. index=$((index+1))
  23. done
  24. index=-1
  25. }
  26. __contains_word()
  27. {
  28. local w word=$1; shift
  29. for w in "$@"; do
  30. [[ $w = "$word" ]] && return
  31. done
  32. return 1
  33. }
  34. __handle_reply()
  35. {
  36. __debug "${FUNCNAME}"
  37. case $cur in
  38. -*)
  39. if [[ $(type -t compopt) = "builtin" ]]; then
  40. compopt -o nospace
  41. fi
  42. local allflags
  43. if [ ${#must_have_one_flag[@]} -ne 0 ]; then
  44. allflags=("${must_have_one_flag[@]}")
  45. else
  46. allflags=("${flags[*]} ${two_word_flags[*]}")
  47. fi
  48. COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
  49. if [[ $(type -t compopt) = "builtin" ]]; then
  50. [[ $COMPREPLY == *= ]] || compopt +o nospace
  51. fi
  52. return 0;
  53. ;;
  54. esac
  55. # check if we are handling a flag with special work handling
  56. local index
  57. __index_of_word "${prev}" "${flags_with_completion[@]}"
  58. if [[ ${index} -ge 0 ]]; then
  59. ${flags_completion[${index}]}
  60. return
  61. fi
  62. # we are parsing a flag and don't have a special handler, no completion
  63. if [[ ${cur} != "${words[cword]}" ]]; then
  64. return
  65. fi
  66. local completions
  67. if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then
  68. completions=("${must_have_one_flag[@]}")
  69. elif [[ ${#must_have_one_noun[@]} -ne 0 ]]; then
  70. completions=("${must_have_one_noun[@]}")
  71. else
  72. completions=("${commands[@]}")
  73. fi
  74. COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") )
  75. if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
  76. declare -F __custom_func >/dev/null && __custom_func
  77. fi
  78. }
  79. # The arguments should be in the form "ext1|ext2|extn"
  80. __handle_filename_extension_flag()
  81. {
  82. local ext="$1"
  83. _filedir "@(${ext})"
  84. }
  85. __handle_subdirs_in_dir_flag()
  86. {
  87. local dir="$1"
  88. pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
  89. }
  90. __handle_flag()
  91. {
  92. __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
  93. # if a command required a flag, and we found it, unset must_have_one_flag()
  94. local flagname=${words[c]}
  95. # if the word contained an =
  96. if [[ ${words[c]} == *"="* ]]; then
  97. flagname=${flagname%=*} # strip everything after the =
  98. flagname="${flagname}=" # but put the = back
  99. fi
  100. __debug "${FUNCNAME}: looking for ${flagname}"
  101. if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then
  102. must_have_one_flag=()
  103. fi
  104. # skip the argument to a two word flag
  105. if __contains_word "${words[c]}" "${two_word_flags[@]}"; then
  106. c=$((c+1))
  107. # if we are looking for a flags value, don't show commands
  108. if [[ $c -eq $cword ]]; then
  109. commands=()
  110. fi
  111. fi
  112. # skip the flag itself
  113. c=$((c+1))
  114. }
  115. __handle_noun()
  116. {
  117. __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
  118. if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
  119. must_have_one_noun=()
  120. fi
  121. nouns+=("${words[c]}")
  122. c=$((c+1))
  123. }
  124. __handle_command()
  125. {
  126. __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
  127. local next_command
  128. if [[ -n ${last_command} ]]; then
  129. next_command="_${last_command}_${words[c]}"
  130. else
  131. next_command="_${words[c]}"
  132. fi
  133. c=$((c+1))
  134. __debug "${FUNCNAME}: looking for ${next_command}"
  135. declare -F $next_command >/dev/null && $next_command
  136. }
  137. __handle_word()
  138. {
  139. if [[ $c -ge $cword ]]; then
  140. __handle_reply
  141. return
  142. fi
  143. __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
  144. if [[ "${words[c]}" == -* ]]; then
  145. __handle_flag
  146. elif __contains_word "${words[c]}" "${commands[@]}"; then
  147. __handle_command
  148. else
  149. __handle_noun
  150. fi
  151. __handle_word
  152. }
  153. # call kubectl get $1,
  154. __kubectl_parse_get()
  155. {
  156. local template
  157. template="{{ range .items }}{{ .metadata.name }} {{ end }}"
  158. local kubectl_out
  159. if kubectl_out=$(kubectl get -o template --template="${template}" "$1" 2>/dev/null); then
  160. COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
  161. fi
  162. }
  163. __kubectl_get_resource()
  164. {
  165. if [[ ${#nouns[@]} -eq 0 ]]; then
  166. return 1
  167. fi
  168. __kubectl_parse_get "${nouns[${#nouns[@]} -1]}"
  169. }
  170. __kubectl_get_resource_pod()
  171. {
  172. __kubectl_parse_get "pod"
  173. }
  174. __kubectl_get_resource_rc()
  175. {
  176. __kubectl_parse_get "rc"
  177. }
  178. # $1 is the name of the pod we want to get the list of containers inside
  179. __kubectl_get_containers()
  180. {
  181. local template
  182. template="{{ range .spec.containers }}{{ .name }} {{ end }}"
  183. __debug "${FUNCNAME} nouns are ${nouns[*]}"
  184. local len="${#nouns[@]}"
  185. if [[ ${len} -ne 1 ]]; then
  186. return
  187. fi
  188. local last=${nouns[${len} -1]}
  189. local kubectl_out
  190. if kubectl_out=$(kubectl get -o template --template="${template}" pods "${last}" 2>/dev/null); then
  191. COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
  192. fi
  193. }
  194. # Require both a pod and a container to be specified
  195. __kubectl_require_pod_and_container()
  196. {
  197. if [[ ${#nouns[@]} -eq 0 ]]; then
  198. __kubectl_parse_get pods
  199. return 0
  200. fi;
  201. __kubectl_get_containers
  202. return 0
  203. }
  204. __custom_func() {
  205. case ${last_command} in
  206. kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_stop)
  207. __kubectl_get_resource
  208. return
  209. ;;
  210. kubectl_logs)
  211. __kubectl_require_pod_and_container
  212. return
  213. ;;
  214. kubectl_exec)
  215. __kubectl_get_resource_pod
  216. return
  217. ;;
  218. kubectl_rolling-update)
  219. __kubectl_get_resource_rc
  220. return
  221. ;;
  222. *)
  223. ;;
  224. esac
  225. }
  226. _kubectl_get()
  227. {
  228. last_command="kubectl_get"
  229. commands=()
  230. flags=()
  231. two_word_flags=()
  232. flags_with_completion=()
  233. flags_completion=()
  234. flags+=("--all-namespaces")
  235. flags+=("--export")
  236. flags+=("--filename=")
  237. flags_with_completion+=("--filename")
  238. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  239. two_word_flags+=("-f")
  240. flags_with_completion+=("-f")
  241. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  242. flags+=("--label-columns=")
  243. two_word_flags+=("-L")
  244. flags+=("--no-headers")
  245. flags+=("--output=")
  246. two_word_flags+=("-o")
  247. flags+=("--output-version=")
  248. flags+=("--selector=")
  249. two_word_flags+=("-l")
  250. flags+=("--show-all")
  251. flags+=("-a")
  252. flags+=("--sort-by=")
  253. flags+=("--template=")
  254. two_word_flags+=("-t")
  255. flags+=("--watch")
  256. flags+=("-w")
  257. flags+=("--watch-only")
  258. flags+=("--alsologtostderr")
  259. flags+=("--api-version=")
  260. flags+=("--certificate-authority=")
  261. flags+=("--client-certificate=")
  262. flags+=("--client-key=")
  263. flags+=("--cluster=")
  264. flags+=("--context=")
  265. flags+=("--insecure-skip-tls-verify")
  266. flags+=("--kubeconfig=")
  267. flags+=("--log-backtrace-at=")
  268. flags+=("--log-dir=")
  269. flags+=("--log-flush-frequency=")
  270. flags+=("--logtostderr")
  271. flags+=("--match-server-version")
  272. flags+=("--namespace=")
  273. flags+=("--password=")
  274. flags+=("--server=")
  275. two_word_flags+=("-s")
  276. flags+=("--stderrthreshold=")
  277. flags+=("--token=")
  278. flags+=("--user=")
  279. flags+=("--username=")
  280. flags+=("--v=")
  281. flags+=("--vmodule=")
  282. must_have_one_flag=()
  283. must_have_one_noun=()
  284. must_have_one_noun+=("componentstatus")
  285. must_have_one_noun+=("daemonset")
  286. must_have_one_noun+=("deployment")
  287. must_have_one_noun+=("endpoints")
  288. must_have_one_noun+=("event")
  289. must_have_one_noun+=("horizontalpodautoscaler")
  290. must_have_one_noun+=("ingress")
  291. must_have_one_noun+=("job")
  292. must_have_one_noun+=("limitrange")
  293. must_have_one_noun+=("namespace")
  294. must_have_one_noun+=("node")
  295. must_have_one_noun+=("persistentvolume")
  296. must_have_one_noun+=("persistentvolumeclaim")
  297. must_have_one_noun+=("pod")
  298. must_have_one_noun+=("podtemplate")
  299. must_have_one_noun+=("replicationcontroller")
  300. must_have_one_noun+=("resourcequota")
  301. must_have_one_noun+=("secret")
  302. must_have_one_noun+=("service")
  303. must_have_one_noun+=("serviceaccount")
  304. must_have_one_noun+=("thirdpartyresource")
  305. }
  306. _kubectl_describe()
  307. {
  308. last_command="kubectl_describe"
  309. commands=()
  310. flags=()
  311. two_word_flags=()
  312. flags_with_completion=()
  313. flags_completion=()
  314. flags+=("--filename=")
  315. flags_with_completion+=("--filename")
  316. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  317. two_word_flags+=("-f")
  318. flags_with_completion+=("-f")
  319. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  320. flags+=("--selector=")
  321. two_word_flags+=("-l")
  322. flags+=("--alsologtostderr")
  323. flags+=("--api-version=")
  324. flags+=("--certificate-authority=")
  325. flags+=("--client-certificate=")
  326. flags+=("--client-key=")
  327. flags+=("--cluster=")
  328. flags+=("--context=")
  329. flags+=("--insecure-skip-tls-verify")
  330. flags+=("--kubeconfig=")
  331. flags+=("--log-backtrace-at=")
  332. flags+=("--log-dir=")
  333. flags+=("--log-flush-frequency=")
  334. flags+=("--logtostderr")
  335. flags+=("--match-server-version")
  336. flags+=("--namespace=")
  337. flags+=("--password=")
  338. flags+=("--server=")
  339. two_word_flags+=("-s")
  340. flags+=("--stderrthreshold=")
  341. flags+=("--token=")
  342. flags+=("--user=")
  343. flags+=("--username=")
  344. flags+=("--v=")
  345. flags+=("--vmodule=")
  346. must_have_one_flag=()
  347. must_have_one_noun=()
  348. must_have_one_noun+=("daemonset")
  349. must_have_one_noun+=("deployment")
  350. must_have_one_noun+=("endpoints")
  351. must_have_one_noun+=("horizontalpodautoscaler")
  352. must_have_one_noun+=("ingress")
  353. must_have_one_noun+=("job")
  354. must_have_one_noun+=("limitrange")
  355. must_have_one_noun+=("namespace")
  356. must_have_one_noun+=("node")
  357. must_have_one_noun+=("persistentvolume")
  358. must_have_one_noun+=("persistentvolumeclaim")
  359. must_have_one_noun+=("pod")
  360. must_have_one_noun+=("replicationcontroller")
  361. must_have_one_noun+=("resourcequota")
  362. must_have_one_noun+=("secret")
  363. must_have_one_noun+=("service")
  364. must_have_one_noun+=("serviceaccount")
  365. }
  366. _kubectl_create_namespace()
  367. {
  368. last_command="kubectl_create_namespace"
  369. commands=()
  370. flags=()
  371. two_word_flags=()
  372. flags_with_completion=()
  373. flags_completion=()
  374. flags+=("--dry-run")
  375. flags+=("--generator=")
  376. flags+=("--output=")
  377. two_word_flags+=("-o")
  378. flags+=("--output-version=")
  379. flags+=("--save-config")
  380. flags+=("--schema-cache-dir=")
  381. flags+=("--validate")
  382. flags+=("--alsologtostderr")
  383. flags+=("--api-version=")
  384. flags+=("--certificate-authority=")
  385. flags+=("--client-certificate=")
  386. flags+=("--client-key=")
  387. flags+=("--cluster=")
  388. flags+=("--context=")
  389. flags+=("--insecure-skip-tls-verify")
  390. flags+=("--kubeconfig=")
  391. flags+=("--log-backtrace-at=")
  392. flags+=("--log-dir=")
  393. flags+=("--log-flush-frequency=")
  394. flags+=("--logtostderr")
  395. flags+=("--match-server-version")
  396. flags+=("--namespace=")
  397. flags+=("--password=")
  398. flags+=("--server=")
  399. two_word_flags+=("-s")
  400. flags+=("--stderrthreshold=")
  401. flags+=("--token=")
  402. flags+=("--user=")
  403. flags+=("--username=")
  404. flags+=("--v=")
  405. flags+=("--vmodule=")
  406. must_have_one_flag=()
  407. must_have_one_noun=()
  408. }
  409. _kubectl_create_secret_docker-registry()
  410. {
  411. last_command="kubectl_create_secret_docker-registry"
  412. commands=()
  413. flags=()
  414. two_word_flags=()
  415. flags_with_completion=()
  416. flags_completion=()
  417. flags+=("--docker-email=")
  418. flags+=("--docker-password=")
  419. flags+=("--docker-server=")
  420. flags+=("--docker-username=")
  421. flags+=("--dry-run")
  422. flags+=("--generator=")
  423. flags+=("--output=")
  424. two_word_flags+=("-o")
  425. flags+=("--output-version=")
  426. flags+=("--save-config")
  427. flags+=("--schema-cache-dir=")
  428. flags+=("--validate")
  429. flags+=("--alsologtostderr")
  430. flags+=("--api-version=")
  431. flags+=("--certificate-authority=")
  432. flags+=("--client-certificate=")
  433. flags+=("--client-key=")
  434. flags+=("--cluster=")
  435. flags+=("--context=")
  436. flags+=("--insecure-skip-tls-verify")
  437. flags+=("--kubeconfig=")
  438. flags+=("--log-backtrace-at=")
  439. flags+=("--log-dir=")
  440. flags+=("--log-flush-frequency=")
  441. flags+=("--logtostderr")
  442. flags+=("--match-server-version")
  443. flags+=("--namespace=")
  444. flags+=("--password=")
  445. flags+=("--server=")
  446. two_word_flags+=("-s")
  447. flags+=("--stderrthreshold=")
  448. flags+=("--token=")
  449. flags+=("--user=")
  450. flags+=("--username=")
  451. flags+=("--v=")
  452. flags+=("--vmodule=")
  453. must_have_one_flag=()
  454. must_have_one_flag+=("--docker-email=")
  455. must_have_one_flag+=("--docker-password=")
  456. must_have_one_flag+=("--docker-username=")
  457. must_have_one_noun=()
  458. }
  459. _kubectl_create_secret_generic()
  460. {
  461. last_command="kubectl_create_secret_generic"
  462. commands=()
  463. flags=()
  464. two_word_flags=()
  465. flags_with_completion=()
  466. flags_completion=()
  467. flags+=("--dry-run")
  468. flags+=("--from-file=")
  469. flags+=("--from-literal=")
  470. flags+=("--generator=")
  471. flags+=("--output=")
  472. two_word_flags+=("-o")
  473. flags+=("--output-version=")
  474. flags+=("--save-config")
  475. flags+=("--schema-cache-dir=")
  476. flags+=("--type=")
  477. flags+=("--validate")
  478. flags+=("--alsologtostderr")
  479. flags+=("--api-version=")
  480. flags+=("--certificate-authority=")
  481. flags+=("--client-certificate=")
  482. flags+=("--client-key=")
  483. flags+=("--cluster=")
  484. flags+=("--context=")
  485. flags+=("--insecure-skip-tls-verify")
  486. flags+=("--kubeconfig=")
  487. flags+=("--log-backtrace-at=")
  488. flags+=("--log-dir=")
  489. flags+=("--log-flush-frequency=")
  490. flags+=("--logtostderr")
  491. flags+=("--match-server-version")
  492. flags+=("--namespace=")
  493. flags+=("--password=")
  494. flags+=("--server=")
  495. two_word_flags+=("-s")
  496. flags+=("--stderrthreshold=")
  497. flags+=("--token=")
  498. flags+=("--user=")
  499. flags+=("--username=")
  500. flags+=("--v=")
  501. flags+=("--vmodule=")
  502. must_have_one_flag=()
  503. must_have_one_noun=()
  504. }
  505. _kubectl_create_secret()
  506. {
  507. last_command="kubectl_create_secret"
  508. commands=()
  509. commands+=("docker-registry")
  510. commands+=("generic")
  511. flags=()
  512. two_word_flags=()
  513. flags_with_completion=()
  514. flags_completion=()
  515. flags+=("--alsologtostderr")
  516. flags+=("--api-version=")
  517. flags+=("--certificate-authority=")
  518. flags+=("--client-certificate=")
  519. flags+=("--client-key=")
  520. flags+=("--cluster=")
  521. flags+=("--context=")
  522. flags+=("--insecure-skip-tls-verify")
  523. flags+=("--kubeconfig=")
  524. flags+=("--log-backtrace-at=")
  525. flags+=("--log-dir=")
  526. flags+=("--log-flush-frequency=")
  527. flags+=("--logtostderr")
  528. flags+=("--match-server-version")
  529. flags+=("--namespace=")
  530. flags+=("--password=")
  531. flags+=("--server=")
  532. two_word_flags+=("-s")
  533. flags+=("--stderrthreshold=")
  534. flags+=("--token=")
  535. flags+=("--user=")
  536. flags+=("--username=")
  537. flags+=("--v=")
  538. flags+=("--vmodule=")
  539. must_have_one_flag=()
  540. must_have_one_noun=()
  541. }
  542. _kubectl_create()
  543. {
  544. last_command="kubectl_create"
  545. commands=()
  546. commands+=("namespace")
  547. commands+=("secret")
  548. flags=()
  549. two_word_flags=()
  550. flags_with_completion=()
  551. flags_completion=()
  552. flags+=("--filename=")
  553. flags_with_completion+=("--filename")
  554. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  555. two_word_flags+=("-f")
  556. flags_with_completion+=("-f")
  557. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  558. flags+=("--output=")
  559. two_word_flags+=("-o")
  560. flags+=("--save-config")
  561. flags+=("--schema-cache-dir=")
  562. flags+=("--validate")
  563. flags+=("--alsologtostderr")
  564. flags+=("--api-version=")
  565. flags+=("--certificate-authority=")
  566. flags+=("--client-certificate=")
  567. flags+=("--client-key=")
  568. flags+=("--cluster=")
  569. flags+=("--context=")
  570. flags+=("--insecure-skip-tls-verify")
  571. flags+=("--kubeconfig=")
  572. flags+=("--log-backtrace-at=")
  573. flags+=("--log-dir=")
  574. flags+=("--log-flush-frequency=")
  575. flags+=("--logtostderr")
  576. flags+=("--match-server-version")
  577. flags+=("--namespace=")
  578. flags+=("--password=")
  579. flags+=("--server=")
  580. two_word_flags+=("-s")
  581. flags+=("--stderrthreshold=")
  582. flags+=("--token=")
  583. flags+=("--user=")
  584. flags+=("--username=")
  585. flags+=("--v=")
  586. flags+=("--vmodule=")
  587. must_have_one_flag=()
  588. must_have_one_flag+=("--filename=")
  589. must_have_one_flag+=("-f")
  590. must_have_one_noun=()
  591. }
  592. _kubectl_replace()
  593. {
  594. last_command="kubectl_replace"
  595. commands=()
  596. flags=()
  597. two_word_flags=()
  598. flags_with_completion=()
  599. flags_completion=()
  600. flags+=("--cascade")
  601. flags+=("--filename=")
  602. flags_with_completion+=("--filename")
  603. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  604. two_word_flags+=("-f")
  605. flags_with_completion+=("-f")
  606. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  607. flags+=("--force")
  608. flags+=("--grace-period=")
  609. flags+=("--output=")
  610. two_word_flags+=("-o")
  611. flags+=("--save-config")
  612. flags+=("--schema-cache-dir=")
  613. flags+=("--timeout=")
  614. flags+=("--validate")
  615. flags+=("--alsologtostderr")
  616. flags+=("--api-version=")
  617. flags+=("--certificate-authority=")
  618. flags+=("--client-certificate=")
  619. flags+=("--client-key=")
  620. flags+=("--cluster=")
  621. flags+=("--context=")
  622. flags+=("--insecure-skip-tls-verify")
  623. flags+=("--kubeconfig=")
  624. flags+=("--log-backtrace-at=")
  625. flags+=("--log-dir=")
  626. flags+=("--log-flush-frequency=")
  627. flags+=("--logtostderr")
  628. flags+=("--match-server-version")
  629. flags+=("--namespace=")
  630. flags+=("--password=")
  631. flags+=("--server=")
  632. two_word_flags+=("-s")
  633. flags+=("--stderrthreshold=")
  634. flags+=("--token=")
  635. flags+=("--user=")
  636. flags+=("--username=")
  637. flags+=("--v=")
  638. flags+=("--vmodule=")
  639. must_have_one_flag=()
  640. must_have_one_flag+=("--filename=")
  641. must_have_one_flag+=("-f")
  642. must_have_one_noun=()
  643. }
  644. _kubectl_patch()
  645. {
  646. last_command="kubectl_patch"
  647. commands=()
  648. flags=()
  649. two_word_flags=()
  650. flags_with_completion=()
  651. flags_completion=()
  652. flags+=("--filename=")
  653. flags_with_completion+=("--filename")
  654. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  655. two_word_flags+=("-f")
  656. flags_with_completion+=("-f")
  657. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  658. flags+=("--output=")
  659. two_word_flags+=("-o")
  660. flags+=("--patch=")
  661. two_word_flags+=("-p")
  662. flags+=("--alsologtostderr")
  663. flags+=("--api-version=")
  664. flags+=("--certificate-authority=")
  665. flags+=("--client-certificate=")
  666. flags+=("--client-key=")
  667. flags+=("--cluster=")
  668. flags+=("--context=")
  669. flags+=("--insecure-skip-tls-verify")
  670. flags+=("--kubeconfig=")
  671. flags+=("--log-backtrace-at=")
  672. flags+=("--log-dir=")
  673. flags+=("--log-flush-frequency=")
  674. flags+=("--logtostderr")
  675. flags+=("--match-server-version")
  676. flags+=("--namespace=")
  677. flags+=("--password=")
  678. flags+=("--server=")
  679. two_word_flags+=("-s")
  680. flags+=("--stderrthreshold=")
  681. flags+=("--token=")
  682. flags+=("--user=")
  683. flags+=("--username=")
  684. flags+=("--v=")
  685. flags+=("--vmodule=")
  686. must_have_one_flag=()
  687. must_have_one_flag+=("--patch=")
  688. must_have_one_flag+=("-p")
  689. must_have_one_noun=()
  690. }
  691. _kubectl_delete()
  692. {
  693. last_command="kubectl_delete"
  694. commands=()
  695. flags=()
  696. two_word_flags=()
  697. flags_with_completion=()
  698. flags_completion=()
  699. flags+=("--all")
  700. flags+=("--cascade")
  701. flags+=("--filename=")
  702. flags_with_completion+=("--filename")
  703. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  704. two_word_flags+=("-f")
  705. flags_with_completion+=("-f")
  706. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  707. flags+=("--grace-period=")
  708. flags+=("--ignore-not-found")
  709. flags+=("--output=")
  710. two_word_flags+=("-o")
  711. flags+=("--selector=")
  712. two_word_flags+=("-l")
  713. flags+=("--timeout=")
  714. flags+=("--alsologtostderr")
  715. flags+=("--api-version=")
  716. flags+=("--certificate-authority=")
  717. flags+=("--client-certificate=")
  718. flags+=("--client-key=")
  719. flags+=("--cluster=")
  720. flags+=("--context=")
  721. flags+=("--insecure-skip-tls-verify")
  722. flags+=("--kubeconfig=")
  723. flags+=("--log-backtrace-at=")
  724. flags+=("--log-dir=")
  725. flags+=("--log-flush-frequency=")
  726. flags+=("--logtostderr")
  727. flags+=("--match-server-version")
  728. flags+=("--namespace=")
  729. flags+=("--password=")
  730. flags+=("--server=")
  731. two_word_flags+=("-s")
  732. flags+=("--stderrthreshold=")
  733. flags+=("--token=")
  734. flags+=("--user=")
  735. flags+=("--username=")
  736. flags+=("--v=")
  737. flags+=("--vmodule=")
  738. must_have_one_flag=()
  739. must_have_one_noun=()
  740. must_have_one_noun+=("componentstatus")
  741. must_have_one_noun+=("daemonset")
  742. must_have_one_noun+=("deployment")
  743. must_have_one_noun+=("endpoints")
  744. must_have_one_noun+=("event")
  745. must_have_one_noun+=("horizontalpodautoscaler")
  746. must_have_one_noun+=("ingress")
  747. must_have_one_noun+=("job")
  748. must_have_one_noun+=("limitrange")
  749. must_have_one_noun+=("namespace")
  750. must_have_one_noun+=("node")
  751. must_have_one_noun+=("persistentvolume")
  752. must_have_one_noun+=("persistentvolumeclaim")
  753. must_have_one_noun+=("pod")
  754. must_have_one_noun+=("podtemplate")
  755. must_have_one_noun+=("replicationcontroller")
  756. must_have_one_noun+=("resourcequota")
  757. must_have_one_noun+=("secret")
  758. must_have_one_noun+=("service")
  759. must_have_one_noun+=("serviceaccount")
  760. must_have_one_noun+=("thirdpartyresource")
  761. }
  762. _kubectl_edit()
  763. {
  764. last_command="kubectl_edit"
  765. commands=()
  766. flags=()
  767. two_word_flags=()
  768. flags_with_completion=()
  769. flags_completion=()
  770. flags+=("--filename=")
  771. flags_with_completion+=("--filename")
  772. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  773. two_word_flags+=("-f")
  774. flags_with_completion+=("-f")
  775. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  776. flags+=("--output=")
  777. two_word_flags+=("-o")
  778. flags+=("--output-version=")
  779. flags+=("--save-config")
  780. flags+=("--windows-line-endings")
  781. flags+=("--alsologtostderr")
  782. flags+=("--api-version=")
  783. flags+=("--certificate-authority=")
  784. flags+=("--client-certificate=")
  785. flags+=("--client-key=")
  786. flags+=("--cluster=")
  787. flags+=("--context=")
  788. flags+=("--insecure-skip-tls-verify")
  789. flags+=("--kubeconfig=")
  790. flags+=("--log-backtrace-at=")
  791. flags+=("--log-dir=")
  792. flags+=("--log-flush-frequency=")
  793. flags+=("--logtostderr")
  794. flags+=("--match-server-version")
  795. flags+=("--namespace=")
  796. flags+=("--password=")
  797. flags+=("--server=")
  798. two_word_flags+=("-s")
  799. flags+=("--stderrthreshold=")
  800. flags+=("--token=")
  801. flags+=("--user=")
  802. flags+=("--username=")
  803. flags+=("--v=")
  804. flags+=("--vmodule=")
  805. must_have_one_flag=()
  806. must_have_one_noun=()
  807. }
  808. _kubectl_apply()
  809. {
  810. last_command="kubectl_apply"
  811. commands=()
  812. flags=()
  813. two_word_flags=()
  814. flags_with_completion=()
  815. flags_completion=()
  816. flags+=("--filename=")
  817. flags_with_completion+=("--filename")
  818. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  819. two_word_flags+=("-f")
  820. flags_with_completion+=("-f")
  821. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  822. flags+=("--output=")
  823. two_word_flags+=("-o")
  824. flags+=("--schema-cache-dir=")
  825. flags+=("--validate")
  826. flags+=("--alsologtostderr")
  827. flags+=("--api-version=")
  828. flags+=("--certificate-authority=")
  829. flags+=("--client-certificate=")
  830. flags+=("--client-key=")
  831. flags+=("--cluster=")
  832. flags+=("--context=")
  833. flags+=("--insecure-skip-tls-verify")
  834. flags+=("--kubeconfig=")
  835. flags+=("--log-backtrace-at=")
  836. flags+=("--log-dir=")
  837. flags+=("--log-flush-frequency=")
  838. flags+=("--logtostderr")
  839. flags+=("--match-server-version")
  840. flags+=("--namespace=")
  841. flags+=("--password=")
  842. flags+=("--server=")
  843. two_word_flags+=("-s")
  844. flags+=("--stderrthreshold=")
  845. flags+=("--token=")
  846. flags+=("--user=")
  847. flags+=("--username=")
  848. flags+=("--v=")
  849. flags+=("--vmodule=")
  850. must_have_one_flag=()
  851. must_have_one_flag+=("--filename=")
  852. must_have_one_flag+=("-f")
  853. must_have_one_noun=()
  854. }
  855. _kubectl_namespace()
  856. {
  857. last_command="kubectl_namespace"
  858. commands=()
  859. flags=()
  860. two_word_flags=()
  861. flags_with_completion=()
  862. flags_completion=()
  863. flags+=("--alsologtostderr")
  864. flags+=("--api-version=")
  865. flags+=("--certificate-authority=")
  866. flags+=("--client-certificate=")
  867. flags+=("--client-key=")
  868. flags+=("--cluster=")
  869. flags+=("--context=")
  870. flags+=("--insecure-skip-tls-verify")
  871. flags+=("--kubeconfig=")
  872. flags+=("--log-backtrace-at=")
  873. flags+=("--log-dir=")
  874. flags+=("--log-flush-frequency=")
  875. flags+=("--logtostderr")
  876. flags+=("--match-server-version")
  877. flags+=("--namespace=")
  878. flags+=("--password=")
  879. flags+=("--server=")
  880. two_word_flags+=("-s")
  881. flags+=("--stderrthreshold=")
  882. flags+=("--token=")
  883. flags+=("--user=")
  884. flags+=("--username=")
  885. flags+=("--v=")
  886. flags+=("--vmodule=")
  887. must_have_one_flag=()
  888. must_have_one_noun=()
  889. }
  890. _kubectl_logs()
  891. {
  892. last_command="kubectl_logs"
  893. commands=()
  894. flags=()
  895. two_word_flags=()
  896. flags_with_completion=()
  897. flags_completion=()
  898. flags+=("--container=")
  899. two_word_flags+=("-c")
  900. flags+=("--follow")
  901. flags+=("-f")
  902. flags+=("--interactive")
  903. flags+=("--limit-bytes=")
  904. flags+=("--previous")
  905. flags+=("-p")
  906. flags+=("--since=")
  907. flags+=("--since-time=")
  908. flags+=("--tail=")
  909. flags+=("--timestamps")
  910. flags+=("--alsologtostderr")
  911. flags+=("--api-version=")
  912. flags+=("--certificate-authority=")
  913. flags+=("--client-certificate=")
  914. flags+=("--client-key=")
  915. flags+=("--cluster=")
  916. flags+=("--context=")
  917. flags+=("--insecure-skip-tls-verify")
  918. flags+=("--kubeconfig=")
  919. flags+=("--log-backtrace-at=")
  920. flags+=("--log-dir=")
  921. flags+=("--log-flush-frequency=")
  922. flags+=("--logtostderr")
  923. flags+=("--match-server-version")
  924. flags+=("--namespace=")
  925. flags+=("--password=")
  926. flags+=("--server=")
  927. two_word_flags+=("-s")
  928. flags+=("--stderrthreshold=")
  929. flags+=("--token=")
  930. flags+=("--user=")
  931. flags+=("--username=")
  932. flags+=("--v=")
  933. flags+=("--vmodule=")
  934. must_have_one_flag=()
  935. must_have_one_noun=()
  936. }
  937. _kubectl_rolling-update()
  938. {
  939. last_command="kubectl_rolling-update"
  940. commands=()
  941. flags=()
  942. two_word_flags=()
  943. flags_with_completion=()
  944. flags_completion=()
  945. flags+=("--container=")
  946. flags+=("--deployment-label-key=")
  947. flags+=("--dry-run")
  948. flags+=("--filename=")
  949. flags_with_completion+=("--filename")
  950. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  951. two_word_flags+=("-f")
  952. flags_with_completion+=("-f")
  953. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  954. flags+=("--image=")
  955. flags+=("--no-headers")
  956. flags+=("--output=")
  957. two_word_flags+=("-o")
  958. flags+=("--output-version=")
  959. flags+=("--poll-interval=")
  960. flags+=("--rollback")
  961. flags+=("--schema-cache-dir=")
  962. flags+=("--show-all")
  963. flags+=("-a")
  964. flags+=("--sort-by=")
  965. flags+=("--template=")
  966. two_word_flags+=("-t")
  967. flags+=("--timeout=")
  968. flags+=("--update-period=")
  969. flags+=("--validate")
  970. flags+=("--alsologtostderr")
  971. flags+=("--api-version=")
  972. flags+=("--certificate-authority=")
  973. flags+=("--client-certificate=")
  974. flags+=("--client-key=")
  975. flags+=("--cluster=")
  976. flags+=("--context=")
  977. flags+=("--insecure-skip-tls-verify")
  978. flags+=("--kubeconfig=")
  979. flags+=("--log-backtrace-at=")
  980. flags+=("--log-dir=")
  981. flags+=("--log-flush-frequency=")
  982. flags+=("--logtostderr")
  983. flags+=("--match-server-version")
  984. flags+=("--namespace=")
  985. flags+=("--password=")
  986. flags+=("--server=")
  987. two_word_flags+=("-s")
  988. flags+=("--stderrthreshold=")
  989. flags+=("--token=")
  990. flags+=("--user=")
  991. flags+=("--username=")
  992. flags+=("--v=")
  993. flags+=("--vmodule=")
  994. must_have_one_flag=()
  995. must_have_one_flag+=("--filename=")
  996. must_have_one_flag+=("-f")
  997. must_have_one_flag+=("--image=")
  998. must_have_one_noun=()
  999. }
  1000. _kubectl_scale()
  1001. {
  1002. last_command="kubectl_scale"
  1003. commands=()
  1004. flags=()
  1005. two_word_flags=()
  1006. flags_with_completion=()
  1007. flags_completion=()
  1008. flags+=("--current-replicas=")
  1009. flags+=("--filename=")
  1010. flags_with_completion+=("--filename")
  1011. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1012. two_word_flags+=("-f")
  1013. flags_with_completion+=("-f")
  1014. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1015. flags+=("--output=")
  1016. two_word_flags+=("-o")
  1017. flags+=("--replicas=")
  1018. flags+=("--resource-version=")
  1019. flags+=("--timeout=")
  1020. flags+=("--alsologtostderr")
  1021. flags+=("--api-version=")
  1022. flags+=("--certificate-authority=")
  1023. flags+=("--client-certificate=")
  1024. flags+=("--client-key=")
  1025. flags+=("--cluster=")
  1026. flags+=("--context=")
  1027. flags+=("--insecure-skip-tls-verify")
  1028. flags+=("--kubeconfig=")
  1029. flags+=("--log-backtrace-at=")
  1030. flags+=("--log-dir=")
  1031. flags+=("--log-flush-frequency=")
  1032. flags+=("--logtostderr")
  1033. flags+=("--match-server-version")
  1034. flags+=("--namespace=")
  1035. flags+=("--password=")
  1036. flags+=("--server=")
  1037. two_word_flags+=("-s")
  1038. flags+=("--stderrthreshold=")
  1039. flags+=("--token=")
  1040. flags+=("--user=")
  1041. flags+=("--username=")
  1042. flags+=("--v=")
  1043. flags+=("--vmodule=")
  1044. must_have_one_flag=()
  1045. must_have_one_flag+=("--replicas=")
  1046. must_have_one_noun=()
  1047. }
  1048. _kubectl_cordon()
  1049. {
  1050. last_command="kubectl_cordon"
  1051. commands=()
  1052. flags=()
  1053. two_word_flags=()
  1054. flags_with_completion=()
  1055. flags_completion=()
  1056. flags+=("--alsologtostderr")
  1057. flags+=("--api-version=")
  1058. flags+=("--certificate-authority=")
  1059. flags+=("--client-certificate=")
  1060. flags+=("--client-key=")
  1061. flags+=("--cluster=")
  1062. flags+=("--context=")
  1063. flags+=("--insecure-skip-tls-verify")
  1064. flags+=("--kubeconfig=")
  1065. flags+=("--log-backtrace-at=")
  1066. flags+=("--log-dir=")
  1067. flags+=("--log-flush-frequency=")
  1068. flags+=("--logtostderr")
  1069. flags+=("--match-server-version")
  1070. flags+=("--namespace=")
  1071. flags+=("--password=")
  1072. flags+=("--server=")
  1073. two_word_flags+=("-s")
  1074. flags+=("--stderrthreshold=")
  1075. flags+=("--token=")
  1076. flags+=("--user=")
  1077. flags+=("--username=")
  1078. flags+=("--v=")
  1079. flags+=("--vmodule=")
  1080. must_have_one_flag=()
  1081. must_have_one_noun=()
  1082. }
  1083. _kubectl_drain()
  1084. {
  1085. last_command="kubectl_drain"
  1086. commands=()
  1087. flags=()
  1088. two_word_flags=()
  1089. flags_with_completion=()
  1090. flags_completion=()
  1091. flags+=("--force")
  1092. flags+=("--grace-period=")
  1093. flags+=("--alsologtostderr")
  1094. flags+=("--api-version=")
  1095. flags+=("--certificate-authority=")
  1096. flags+=("--client-certificate=")
  1097. flags+=("--client-key=")
  1098. flags+=("--cluster=")
  1099. flags+=("--context=")
  1100. flags+=("--insecure-skip-tls-verify")
  1101. flags+=("--kubeconfig=")
  1102. flags+=("--log-backtrace-at=")
  1103. flags+=("--log-dir=")
  1104. flags+=("--log-flush-frequency=")
  1105. flags+=("--logtostderr")
  1106. flags+=("--match-server-version")
  1107. flags+=("--namespace=")
  1108. flags+=("--password=")
  1109. flags+=("--server=")
  1110. two_word_flags+=("-s")
  1111. flags+=("--stderrthreshold=")
  1112. flags+=("--token=")
  1113. flags+=("--user=")
  1114. flags+=("--username=")
  1115. flags+=("--v=")
  1116. flags+=("--vmodule=")
  1117. must_have_one_flag=()
  1118. must_have_one_noun=()
  1119. }
  1120. _kubectl_uncordon()
  1121. {
  1122. last_command="kubectl_uncordon"
  1123. commands=()
  1124. flags=()
  1125. two_word_flags=()
  1126. flags_with_completion=()
  1127. flags_completion=()
  1128. flags+=("--alsologtostderr")
  1129. flags+=("--api-version=")
  1130. flags+=("--certificate-authority=")
  1131. flags+=("--client-certificate=")
  1132. flags+=("--client-key=")
  1133. flags+=("--cluster=")
  1134. flags+=("--context=")
  1135. flags+=("--insecure-skip-tls-verify")
  1136. flags+=("--kubeconfig=")
  1137. flags+=("--log-backtrace-at=")
  1138. flags+=("--log-dir=")
  1139. flags+=("--log-flush-frequency=")
  1140. flags+=("--logtostderr")
  1141. flags+=("--match-server-version")
  1142. flags+=("--namespace=")
  1143. flags+=("--password=")
  1144. flags+=("--server=")
  1145. two_word_flags+=("-s")
  1146. flags+=("--stderrthreshold=")
  1147. flags+=("--token=")
  1148. flags+=("--user=")
  1149. flags+=("--username=")
  1150. flags+=("--v=")
  1151. flags+=("--vmodule=")
  1152. must_have_one_flag=()
  1153. must_have_one_noun=()
  1154. }
  1155. _kubectl_attach()
  1156. {
  1157. last_command="kubectl_attach"
  1158. commands=()
  1159. flags=()
  1160. two_word_flags=()
  1161. flags_with_completion=()
  1162. flags_completion=()
  1163. flags+=("--container=")
  1164. two_word_flags+=("-c")
  1165. flags+=("--stdin")
  1166. flags+=("-i")
  1167. flags+=("--tty")
  1168. flags+=("-t")
  1169. flags+=("--alsologtostderr")
  1170. flags+=("--api-version=")
  1171. flags+=("--certificate-authority=")
  1172. flags+=("--client-certificate=")
  1173. flags+=("--client-key=")
  1174. flags+=("--cluster=")
  1175. flags+=("--context=")
  1176. flags+=("--insecure-skip-tls-verify")
  1177. flags+=("--kubeconfig=")
  1178. flags+=("--log-backtrace-at=")
  1179. flags+=("--log-dir=")
  1180. flags+=("--log-flush-frequency=")
  1181. flags+=("--logtostderr")
  1182. flags+=("--match-server-version")
  1183. flags+=("--namespace=")
  1184. flags+=("--password=")
  1185. flags+=("--server=")
  1186. two_word_flags+=("-s")
  1187. flags+=("--stderrthreshold=")
  1188. flags+=("--token=")
  1189. flags+=("--user=")
  1190. flags+=("--username=")
  1191. flags+=("--v=")
  1192. flags+=("--vmodule=")
  1193. must_have_one_flag=()
  1194. must_have_one_noun=()
  1195. }
  1196. _kubectl_exec()
  1197. {
  1198. last_command="kubectl_exec"
  1199. commands=()
  1200. flags=()
  1201. two_word_flags=()
  1202. flags_with_completion=()
  1203. flags_completion=()
  1204. flags+=("--container=")
  1205. two_word_flags+=("-c")
  1206. flags+=("--pod=")
  1207. two_word_flags+=("-p")
  1208. flags+=("--stdin")
  1209. flags+=("-i")
  1210. flags+=("--tty")
  1211. flags+=("-t")
  1212. flags+=("--alsologtostderr")
  1213. flags+=("--api-version=")
  1214. flags+=("--certificate-authority=")
  1215. flags+=("--client-certificate=")
  1216. flags+=("--client-key=")
  1217. flags+=("--cluster=")
  1218. flags+=("--context=")
  1219. flags+=("--insecure-skip-tls-verify")
  1220. flags+=("--kubeconfig=")
  1221. flags+=("--log-backtrace-at=")
  1222. flags+=("--log-dir=")
  1223. flags+=("--log-flush-frequency=")
  1224. flags+=("--logtostderr")
  1225. flags+=("--match-server-version")
  1226. flags+=("--namespace=")
  1227. flags+=("--password=")
  1228. flags+=("--server=")
  1229. two_word_flags+=("-s")
  1230. flags+=("--stderrthreshold=")
  1231. flags+=("--token=")
  1232. flags+=("--user=")
  1233. flags+=("--username=")
  1234. flags+=("--v=")
  1235. flags+=("--vmodule=")
  1236. must_have_one_flag=()
  1237. must_have_one_noun=()
  1238. }
  1239. _kubectl_port-forward()
  1240. {
  1241. last_command="kubectl_port-forward"
  1242. commands=()
  1243. flags=()
  1244. two_word_flags=()
  1245. flags_with_completion=()
  1246. flags_completion=()
  1247. flags+=("--pod=")
  1248. two_word_flags+=("-p")
  1249. flags+=("--alsologtostderr")
  1250. flags+=("--api-version=")
  1251. flags+=("--certificate-authority=")
  1252. flags+=("--client-certificate=")
  1253. flags+=("--client-key=")
  1254. flags+=("--cluster=")
  1255. flags+=("--context=")
  1256. flags+=("--insecure-skip-tls-verify")
  1257. flags+=("--kubeconfig=")
  1258. flags+=("--log-backtrace-at=")
  1259. flags+=("--log-dir=")
  1260. flags+=("--log-flush-frequency=")
  1261. flags+=("--logtostderr")
  1262. flags+=("--match-server-version")
  1263. flags+=("--namespace=")
  1264. flags+=("--password=")
  1265. flags+=("--server=")
  1266. two_word_flags+=("-s")
  1267. flags+=("--stderrthreshold=")
  1268. flags+=("--token=")
  1269. flags+=("--user=")
  1270. flags+=("--username=")
  1271. flags+=("--v=")
  1272. flags+=("--vmodule=")
  1273. must_have_one_flag=()
  1274. must_have_one_noun=()
  1275. }
  1276. _kubectl_proxy()
  1277. {
  1278. last_command="kubectl_proxy"
  1279. commands=()
  1280. flags=()
  1281. two_word_flags=()
  1282. flags_with_completion=()
  1283. flags_completion=()
  1284. flags+=("--accept-hosts=")
  1285. flags+=("--accept-paths=")
  1286. flags+=("--address=")
  1287. flags+=("--api-prefix=")
  1288. flags+=("--disable-filter")
  1289. flags+=("--port=")
  1290. two_word_flags+=("-p")
  1291. flags+=("--reject-methods=")
  1292. flags+=("--reject-paths=")
  1293. flags+=("--unix-socket=")
  1294. two_word_flags+=("-u")
  1295. flags+=("--www=")
  1296. two_word_flags+=("-w")
  1297. flags+=("--www-prefix=")
  1298. two_word_flags+=("-P")
  1299. flags+=("--alsologtostderr")
  1300. flags+=("--api-version=")
  1301. flags+=("--certificate-authority=")
  1302. flags+=("--client-certificate=")
  1303. flags+=("--client-key=")
  1304. flags+=("--cluster=")
  1305. flags+=("--context=")
  1306. flags+=("--insecure-skip-tls-verify")
  1307. flags+=("--kubeconfig=")
  1308. flags+=("--log-backtrace-at=")
  1309. flags+=("--log-dir=")
  1310. flags+=("--log-flush-frequency=")
  1311. flags+=("--logtostderr")
  1312. flags+=("--match-server-version")
  1313. flags+=("--namespace=")
  1314. flags+=("--password=")
  1315. flags+=("--server=")
  1316. two_word_flags+=("-s")
  1317. flags+=("--stderrthreshold=")
  1318. flags+=("--token=")
  1319. flags+=("--user=")
  1320. flags+=("--username=")
  1321. flags+=("--v=")
  1322. flags+=("--vmodule=")
  1323. must_have_one_flag=()
  1324. must_have_one_noun=()
  1325. }
  1326. _kubectl_run()
  1327. {
  1328. last_command="kubectl_run"
  1329. commands=()
  1330. flags=()
  1331. two_word_flags=()
  1332. flags_with_completion=()
  1333. flags_completion=()
  1334. flags+=("--attach")
  1335. flags+=("--command")
  1336. flags+=("--dry-run")
  1337. flags+=("--env=")
  1338. flags+=("--expose")
  1339. flags+=("--generator=")
  1340. flags+=("--hostport=")
  1341. flags+=("--image=")
  1342. flags+=("--labels=")
  1343. two_word_flags+=("-l")
  1344. flags+=("--leave-stdin-open")
  1345. flags+=("--limits=")
  1346. flags+=("--no-headers")
  1347. flags+=("--output=")
  1348. two_word_flags+=("-o")
  1349. flags+=("--output-version=")
  1350. flags+=("--overrides=")
  1351. flags+=("--port=")
  1352. flags+=("--replicas=")
  1353. two_word_flags+=("-r")
  1354. flags+=("--requests=")
  1355. flags+=("--restart=")
  1356. flags+=("--rm")
  1357. flags+=("--save-config")
  1358. flags+=("--service-generator=")
  1359. flags+=("--service-overrides=")
  1360. flags+=("--show-all")
  1361. flags+=("-a")
  1362. flags+=("--sort-by=")
  1363. flags+=("--stdin")
  1364. flags+=("-i")
  1365. flags+=("--template=")
  1366. two_word_flags+=("-t")
  1367. flags+=("--tty")
  1368. flags+=("--alsologtostderr")
  1369. flags+=("--api-version=")
  1370. flags+=("--certificate-authority=")
  1371. flags+=("--client-certificate=")
  1372. flags+=("--client-key=")
  1373. flags+=("--cluster=")
  1374. flags+=("--context=")
  1375. flags+=("--insecure-skip-tls-verify")
  1376. flags+=("--kubeconfig=")
  1377. flags+=("--log-backtrace-at=")
  1378. flags+=("--log-dir=")
  1379. flags+=("--log-flush-frequency=")
  1380. flags+=("--logtostderr")
  1381. flags+=("--match-server-version")
  1382. flags+=("--namespace=")
  1383. flags+=("--password=")
  1384. flags+=("--server=")
  1385. two_word_flags+=("-s")
  1386. flags+=("--stderrthreshold=")
  1387. flags+=("--token=")
  1388. flags+=("--user=")
  1389. flags+=("--username=")
  1390. flags+=("--v=")
  1391. flags+=("--vmodule=")
  1392. must_have_one_flag=()
  1393. must_have_one_flag+=("--image=")
  1394. must_have_one_noun=()
  1395. }
  1396. _kubectl_expose()
  1397. {
  1398. last_command="kubectl_expose"
  1399. commands=()
  1400. flags=()
  1401. two_word_flags=()
  1402. flags_with_completion=()
  1403. flags_completion=()
  1404. flags+=("--container-port=")
  1405. flags+=("--create-external-load-balancer")
  1406. flags+=("--dry-run")
  1407. flags+=("--external-ip=")
  1408. flags+=("--filename=")
  1409. flags_with_completion+=("--filename")
  1410. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1411. two_word_flags+=("-f")
  1412. flags_with_completion+=("-f")
  1413. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1414. flags+=("--generator=")
  1415. flags+=("--labels=")
  1416. two_word_flags+=("-l")
  1417. flags+=("--load-balancer-ip=")
  1418. flags+=("--name=")
  1419. flags+=("--no-headers")
  1420. flags+=("--output=")
  1421. two_word_flags+=("-o")
  1422. flags+=("--output-version=")
  1423. flags+=("--overrides=")
  1424. flags+=("--port=")
  1425. flags+=("--protocol=")
  1426. flags+=("--save-config")
  1427. flags+=("--selector=")
  1428. flags+=("--session-affinity=")
  1429. flags+=("--show-all")
  1430. flags+=("-a")
  1431. flags+=("--sort-by=")
  1432. flags+=("--target-port=")
  1433. flags+=("--template=")
  1434. two_word_flags+=("-t")
  1435. flags+=("--type=")
  1436. flags+=("--alsologtostderr")
  1437. flags+=("--api-version=")
  1438. flags+=("--certificate-authority=")
  1439. flags+=("--client-certificate=")
  1440. flags+=("--client-key=")
  1441. flags+=("--cluster=")
  1442. flags+=("--context=")
  1443. flags+=("--insecure-skip-tls-verify")
  1444. flags+=("--kubeconfig=")
  1445. flags+=("--log-backtrace-at=")
  1446. flags+=("--log-dir=")
  1447. flags+=("--log-flush-frequency=")
  1448. flags+=("--logtostderr")
  1449. flags+=("--match-server-version")
  1450. flags+=("--namespace=")
  1451. flags+=("--password=")
  1452. flags+=("--server=")
  1453. two_word_flags+=("-s")
  1454. flags+=("--stderrthreshold=")
  1455. flags+=("--token=")
  1456. flags+=("--user=")
  1457. flags+=("--username=")
  1458. flags+=("--v=")
  1459. flags+=("--vmodule=")
  1460. must_have_one_flag=()
  1461. must_have_one_noun=()
  1462. }
  1463. _kubectl_autoscale()
  1464. {
  1465. last_command="kubectl_autoscale"
  1466. commands=()
  1467. flags=()
  1468. two_word_flags=()
  1469. flags_with_completion=()
  1470. flags_completion=()
  1471. flags+=("--cpu-percent=")
  1472. flags+=("--dry-run")
  1473. flags+=("--filename=")
  1474. flags_with_completion+=("--filename")
  1475. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1476. two_word_flags+=("-f")
  1477. flags_with_completion+=("-f")
  1478. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1479. flags+=("--generator=")
  1480. flags+=("--max=")
  1481. flags+=("--min=")
  1482. flags+=("--name=")
  1483. flags+=("--no-headers")
  1484. flags+=("--output=")
  1485. two_word_flags+=("-o")
  1486. flags+=("--output-version=")
  1487. flags+=("--save-config")
  1488. flags+=("--show-all")
  1489. flags+=("-a")
  1490. flags+=("--sort-by=")
  1491. flags+=("--template=")
  1492. two_word_flags+=("-t")
  1493. flags+=("--alsologtostderr")
  1494. flags+=("--api-version=")
  1495. flags+=("--certificate-authority=")
  1496. flags+=("--client-certificate=")
  1497. flags+=("--client-key=")
  1498. flags+=("--cluster=")
  1499. flags+=("--context=")
  1500. flags+=("--insecure-skip-tls-verify")
  1501. flags+=("--kubeconfig=")
  1502. flags+=("--log-backtrace-at=")
  1503. flags+=("--log-dir=")
  1504. flags+=("--log-flush-frequency=")
  1505. flags+=("--logtostderr")
  1506. flags+=("--match-server-version")
  1507. flags+=("--namespace=")
  1508. flags+=("--password=")
  1509. flags+=("--server=")
  1510. two_word_flags+=("-s")
  1511. flags+=("--stderrthreshold=")
  1512. flags+=("--token=")
  1513. flags+=("--user=")
  1514. flags+=("--username=")
  1515. flags+=("--v=")
  1516. flags+=("--vmodule=")
  1517. must_have_one_flag=()
  1518. must_have_one_flag+=("--max=")
  1519. must_have_one_noun=()
  1520. }
  1521. _kubectl_label()
  1522. {
  1523. last_command="kubectl_label"
  1524. commands=()
  1525. flags=()
  1526. two_word_flags=()
  1527. flags_with_completion=()
  1528. flags_completion=()
  1529. flags+=("--all")
  1530. flags+=("--dry-run")
  1531. flags+=("--filename=")
  1532. flags_with_completion+=("--filename")
  1533. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1534. two_word_flags+=("-f")
  1535. flags_with_completion+=("-f")
  1536. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1537. flags+=("--no-headers")
  1538. flags+=("--output=")
  1539. two_word_flags+=("-o")
  1540. flags+=("--output-version=")
  1541. flags+=("--overwrite")
  1542. flags+=("--resource-version=")
  1543. flags+=("--selector=")
  1544. two_word_flags+=("-l")
  1545. flags+=("--show-all")
  1546. flags+=("-a")
  1547. flags+=("--sort-by=")
  1548. flags+=("--template=")
  1549. two_word_flags+=("-t")
  1550. flags+=("--alsologtostderr")
  1551. flags+=("--api-version=")
  1552. flags+=("--certificate-authority=")
  1553. flags+=("--client-certificate=")
  1554. flags+=("--client-key=")
  1555. flags+=("--cluster=")
  1556. flags+=("--context=")
  1557. flags+=("--insecure-skip-tls-verify")
  1558. flags+=("--kubeconfig=")
  1559. flags+=("--log-backtrace-at=")
  1560. flags+=("--log-dir=")
  1561. flags+=("--log-flush-frequency=")
  1562. flags+=("--logtostderr")
  1563. flags+=("--match-server-version")
  1564. flags+=("--namespace=")
  1565. flags+=("--password=")
  1566. flags+=("--server=")
  1567. two_word_flags+=("-s")
  1568. flags+=("--stderrthreshold=")
  1569. flags+=("--token=")
  1570. flags+=("--user=")
  1571. flags+=("--username=")
  1572. flags+=("--v=")
  1573. flags+=("--vmodule=")
  1574. must_have_one_flag=()
  1575. must_have_one_noun=()
  1576. must_have_one_noun+=("componentstatus")
  1577. must_have_one_noun+=("daemonset")
  1578. must_have_one_noun+=("deployment")
  1579. must_have_one_noun+=("endpoints")
  1580. must_have_one_noun+=("event")
  1581. must_have_one_noun+=("horizontalpodautoscaler")
  1582. must_have_one_noun+=("ingress")
  1583. must_have_one_noun+=("job")
  1584. must_have_one_noun+=("limitrange")
  1585. must_have_one_noun+=("namespace")
  1586. must_have_one_noun+=("node")
  1587. must_have_one_noun+=("persistentvolume")
  1588. must_have_one_noun+=("persistentvolumeclaim")
  1589. must_have_one_noun+=("pod")
  1590. must_have_one_noun+=("podtemplate")
  1591. must_have_one_noun+=("replicationcontroller")
  1592. must_have_one_noun+=("resourcequota")
  1593. must_have_one_noun+=("secret")
  1594. must_have_one_noun+=("service")
  1595. must_have_one_noun+=("serviceaccount")
  1596. must_have_one_noun+=("thirdpartyresource")
  1597. }
  1598. _kubectl_annotate()
  1599. {
  1600. last_command="kubectl_annotate"
  1601. commands=()
  1602. flags=()
  1603. two_word_flags=()
  1604. flags_with_completion=()
  1605. flags_completion=()
  1606. flags+=("--all")
  1607. flags+=("--filename=")
  1608. flags_with_completion+=("--filename")
  1609. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1610. two_word_flags+=("-f")
  1611. flags_with_completion+=("-f")
  1612. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  1613. flags+=("--no-headers")
  1614. flags+=("--output=")
  1615. two_word_flags+=("-o")
  1616. flags+=("--output-version=")
  1617. flags+=("--overwrite")
  1618. flags+=("--resource-version=")
  1619. flags+=("--selector=")
  1620. two_word_flags+=("-l")
  1621. flags+=("--show-all")
  1622. flags+=("-a")
  1623. flags+=("--sort-by=")
  1624. flags+=("--template=")
  1625. two_word_flags+=("-t")
  1626. flags+=("--alsologtostderr")
  1627. flags+=("--api-version=")
  1628. flags+=("--certificate-authority=")
  1629. flags+=("--client-certificate=")
  1630. flags+=("--client-key=")
  1631. flags+=("--cluster=")
  1632. flags+=("--context=")
  1633. flags+=("--insecure-skip-tls-verify")
  1634. flags+=("--kubeconfig=")
  1635. flags+=("--log-backtrace-at=")
  1636. flags+=("--log-dir=")
  1637. flags+=("--log-flush-frequency=")
  1638. flags+=("--logtostderr")
  1639. flags+=("--match-server-version")
  1640. flags+=("--namespace=")
  1641. flags+=("--password=")
  1642. flags+=("--server=")
  1643. two_word_flags+=("-s")
  1644. flags+=("--stderrthreshold=")
  1645. flags+=("--token=")
  1646. flags+=("--user=")
  1647. flags+=("--username=")
  1648. flags+=("--v=")
  1649. flags+=("--vmodule=")
  1650. must_have_one_flag=()
  1651. must_have_one_noun=()
  1652. }
  1653. _kubectl_config_view()
  1654. {
  1655. last_command="kubectl_config_view"
  1656. commands=()
  1657. flags=()
  1658. two_word_flags=()
  1659. flags_with_completion=()
  1660. flags_completion=()
  1661. flags+=("--flatten")
  1662. flags+=("--merge")
  1663. flags+=("--minify")
  1664. flags+=("--no-headers")
  1665. flags+=("--output=")
  1666. two_word_flags+=("-o")
  1667. flags+=("--output-version=")
  1668. flags+=("--raw")
  1669. flags+=("--show-all")
  1670. flags+=("-a")
  1671. flags+=("--sort-by=")
  1672. flags+=("--template=")
  1673. two_word_flags+=("-t")
  1674. flags+=("--alsologtostderr")
  1675. flags+=("--api-version=")
  1676. flags+=("--certificate-authority=")
  1677. flags+=("--client-certificate=")
  1678. flags+=("--client-key=")
  1679. flags+=("--cluster=")
  1680. flags+=("--context=")
  1681. flags+=("--insecure-skip-tls-verify")
  1682. flags+=("--kubeconfig=")
  1683. flags+=("--log-backtrace-at=")
  1684. flags+=("--log-dir=")
  1685. flags+=("--log-flush-frequency=")
  1686. flags+=("--logtostderr")
  1687. flags+=("--match-server-version")
  1688. flags+=("--namespace=")
  1689. flags+=("--password=")
  1690. flags+=("--server=")
  1691. two_word_flags+=("-s")
  1692. flags+=("--stderrthreshold=")
  1693. flags+=("--token=")
  1694. flags+=("--user=")
  1695. flags+=("--username=")
  1696. flags+=("--v=")
  1697. flags+=("--vmodule=")
  1698. must_have_one_flag=()
  1699. must_have_one_noun=()
  1700. }
  1701. _kubectl_config_set-cluster()
  1702. {
  1703. last_command="kubectl_config_set-cluster"
  1704. commands=()
  1705. flags=()
  1706. two_word_flags=()
  1707. flags_with_completion=()
  1708. flags_completion=()
  1709. flags+=("--api-version=")
  1710. flags+=("--certificate-authority=")
  1711. flags+=("--embed-certs")
  1712. flags+=("--insecure-skip-tls-verify")
  1713. flags+=("--server=")
  1714. flags+=("--alsologtostderr")
  1715. flags+=("--client-certificate=")
  1716. flags+=("--client-key=")
  1717. flags+=("--cluster=")
  1718. flags+=("--context=")
  1719. flags+=("--kubeconfig=")
  1720. flags+=("--log-backtrace-at=")
  1721. flags+=("--log-dir=")
  1722. flags+=("--log-flush-frequency=")
  1723. flags+=("--logtostderr")
  1724. flags+=("--match-server-version")
  1725. flags+=("--namespace=")
  1726. flags+=("--password=")
  1727. flags+=("--stderrthreshold=")
  1728. flags+=("--token=")
  1729. flags+=("--user=")
  1730. flags+=("--username=")
  1731. flags+=("--v=")
  1732. flags+=("--vmodule=")
  1733. must_have_one_flag=()
  1734. must_have_one_noun=()
  1735. }
  1736. _kubectl_config_set-credentials()
  1737. {
  1738. last_command="kubectl_config_set-credentials"
  1739. commands=()
  1740. flags=()
  1741. two_word_flags=()
  1742. flags_with_completion=()
  1743. flags_completion=()
  1744. flags+=("--client-certificate=")
  1745. flags+=("--client-key=")
  1746. flags+=("--embed-certs")
  1747. flags+=("--password=")
  1748. flags+=("--token=")
  1749. flags+=("--username=")
  1750. flags+=("--alsologtostderr")
  1751. flags+=("--api-version=")
  1752. flags+=("--certificate-authority=")
  1753. flags+=("--cluster=")
  1754. flags+=("--context=")
  1755. flags+=("--insecure-skip-tls-verify")
  1756. flags+=("--kubeconfig=")
  1757. flags+=("--log-backtrace-at=")
  1758. flags+=("--log-dir=")
  1759. flags+=("--log-flush-frequency=")
  1760. flags+=("--logtostderr")
  1761. flags+=("--match-server-version")
  1762. flags+=("--namespace=")
  1763. flags+=("--server=")
  1764. two_word_flags+=("-s")
  1765. flags+=("--stderrthreshold=")
  1766. flags+=("--user=")
  1767. flags+=("--v=")
  1768. flags+=("--vmodule=")
  1769. must_have_one_flag=()
  1770. must_have_one_noun=()
  1771. }
  1772. _kubectl_config_set-context()
  1773. {
  1774. last_command="kubectl_config_set-context"
  1775. commands=()
  1776. flags=()
  1777. two_word_flags=()
  1778. flags_with_completion=()
  1779. flags_completion=()
  1780. flags+=("--cluster=")
  1781. flags+=("--namespace=")
  1782. flags+=("--user=")
  1783. flags+=("--alsologtostderr")
  1784. flags+=("--api-version=")
  1785. flags+=("--certificate-authority=")
  1786. flags+=("--client-certificate=")
  1787. flags+=("--client-key=")
  1788. flags+=("--context=")
  1789. flags+=("--insecure-skip-tls-verify")
  1790. flags+=("--kubeconfig=")
  1791. flags+=("--log-backtrace-at=")
  1792. flags+=("--log-dir=")
  1793. flags+=("--log-flush-frequency=")
  1794. flags+=("--logtostderr")
  1795. flags+=("--match-server-version")
  1796. flags+=("--password=")
  1797. flags+=("--server=")
  1798. two_word_flags+=("-s")
  1799. flags+=("--stderrthreshold=")
  1800. flags+=("--token=")
  1801. flags+=("--username=")
  1802. flags+=("--v=")
  1803. flags+=("--vmodule=")
  1804. must_have_one_flag=()
  1805. must_have_one_noun=()
  1806. }
  1807. _kubectl_config_set()
  1808. {
  1809. last_command="kubectl_config_set"
  1810. commands=()
  1811. flags=()
  1812. two_word_flags=()
  1813. flags_with_completion=()
  1814. flags_completion=()
  1815. flags+=("--alsologtostderr")
  1816. flags+=("--api-version=")
  1817. flags+=("--certificate-authority=")
  1818. flags+=("--client-certificate=")
  1819. flags+=("--client-key=")
  1820. flags+=("--cluster=")
  1821. flags+=("--context=")
  1822. flags+=("--insecure-skip-tls-verify")
  1823. flags+=("--kubeconfig=")
  1824. flags+=("--log-backtrace-at=")
  1825. flags+=("--log-dir=")
  1826. flags+=("--log-flush-frequency=")
  1827. flags+=("--logtostderr")
  1828. flags+=("--match-server-version")
  1829. flags+=("--namespace=")
  1830. flags+=("--password=")
  1831. flags+=("--server=")
  1832. two_word_flags+=("-s")
  1833. flags+=("--stderrthreshold=")
  1834. flags+=("--token=")
  1835. flags+=("--user=")
  1836. flags+=("--username=")
  1837. flags+=("--v=")
  1838. flags+=("--vmodule=")
  1839. must_have_one_flag=()
  1840. must_have_one_noun=()
  1841. }
  1842. _kubectl_config_unset()
  1843. {
  1844. last_command="kubectl_config_unset"
  1845. commands=()
  1846. flags=()
  1847. two_word_flags=()
  1848. flags_with_completion=()
  1849. flags_completion=()
  1850. flags+=("--alsologtostderr")
  1851. flags+=("--api-version=")
  1852. flags+=("--certificate-authority=")
  1853. flags+=("--client-certificate=")
  1854. flags+=("--client-key=")
  1855. flags+=("--cluster=")
  1856. flags+=("--context=")
  1857. flags+=("--insecure-skip-tls-verify")
  1858. flags+=("--kubeconfig=")
  1859. flags+=("--log-backtrace-at=")
  1860. flags+=("--log-dir=")
  1861. flags+=("--log-flush-frequency=")
  1862. flags+=("--logtostderr")
  1863. flags+=("--match-server-version")
  1864. flags+=("--namespace=")
  1865. flags+=("--password=")
  1866. flags+=("--server=")
  1867. two_word_flags+=("-s")
  1868. flags+=("--stderrthreshold=")
  1869. flags+=("--token=")
  1870. flags+=("--user=")
  1871. flags+=("--username=")
  1872. flags+=("--v=")
  1873. flags+=("--vmodule=")
  1874. must_have_one_flag=()
  1875. must_have_one_noun=()
  1876. }
  1877. _kubectl_config_use-context()
  1878. {
  1879. last_command="kubectl_config_use-context"
  1880. commands=()
  1881. flags=()
  1882. two_word_flags=()
  1883. flags_with_completion=()
  1884. flags_completion=()
  1885. flags+=("--alsologtostderr")
  1886. flags+=("--api-version=")
  1887. flags+=("--certificate-authority=")
  1888. flags+=("--client-certificate=")
  1889. flags+=("--client-key=")
  1890. flags+=("--cluster=")
  1891. flags+=("--context=")
  1892. flags+=("--insecure-skip-tls-verify")
  1893. flags+=("--kubeconfig=")
  1894. flags+=("--log-backtrace-at=")
  1895. flags+=("--log-dir=")
  1896. flags+=("--log-flush-frequency=")
  1897. flags+=("--logtostderr")
  1898. flags+=("--match-server-version")
  1899. flags+=("--namespace=")
  1900. flags+=("--password=")
  1901. flags+=("--server=")
  1902. two_word_flags+=("-s")
  1903. flags+=("--stderrthreshold=")
  1904. flags+=("--token=")
  1905. flags+=("--user=")
  1906. flags+=("--username=")
  1907. flags+=("--v=")
  1908. flags+=("--vmodule=")
  1909. must_have_one_flag=()
  1910. must_have_one_noun=()
  1911. }
  1912. _kubectl_config()
  1913. {
  1914. last_command="kubectl_config"
  1915. commands=()
  1916. commands+=("view")
  1917. commands+=("set-cluster")
  1918. commands+=("set-credentials")
  1919. commands+=("set-context")
  1920. commands+=("set")
  1921. commands+=("unset")
  1922. commands+=("use-context")
  1923. flags=()
  1924. two_word_flags=()
  1925. flags_with_completion=()
  1926. flags_completion=()
  1927. flags+=("--kubeconfig=")
  1928. flags+=("--alsologtostderr")
  1929. flags+=("--api-version=")
  1930. flags+=("--certificate-authority=")
  1931. flags+=("--client-certificate=")
  1932. flags+=("--client-key=")
  1933. flags+=("--cluster=")
  1934. flags+=("--context=")
  1935. flags+=("--insecure-skip-tls-verify")
  1936. flags+=("--log-backtrace-at=")
  1937. flags+=("--log-dir=")
  1938. flags+=("--log-flush-frequency=")
  1939. flags+=("--logtostderr")
  1940. flags+=("--match-server-version")
  1941. flags+=("--namespace=")
  1942. flags+=("--password=")
  1943. flags+=("--server=")
  1944. two_word_flags+=("-s")
  1945. flags+=("--stderrthreshold=")
  1946. flags+=("--token=")
  1947. flags+=("--user=")
  1948. flags+=("--username=")
  1949. flags+=("--v=")
  1950. flags+=("--vmodule=")
  1951. must_have_one_flag=()
  1952. must_have_one_noun=()
  1953. }
  1954. _kubectl_cluster-info()
  1955. {
  1956. last_command="kubectl_cluster-info"
  1957. commands=()
  1958. flags=()
  1959. two_word_flags=()
  1960. flags_with_completion=()
  1961. flags_completion=()
  1962. flags+=("--alsologtostderr")
  1963. flags+=("--api-version=")
  1964. flags+=("--certificate-authority=")
  1965. flags+=("--client-certificate=")
  1966. flags+=("--client-key=")
  1967. flags+=("--cluster=")
  1968. flags+=("--context=")
  1969. flags+=("--insecure-skip-tls-verify")
  1970. flags+=("--kubeconfig=")
  1971. flags+=("--log-backtrace-at=")
  1972. flags+=("--log-dir=")
  1973. flags+=("--log-flush-frequency=")
  1974. flags+=("--logtostderr")
  1975. flags+=("--match-server-version")
  1976. flags+=("--namespace=")
  1977. flags+=("--password=")
  1978. flags+=("--server=")
  1979. two_word_flags+=("-s")
  1980. flags+=("--stderrthreshold=")
  1981. flags+=("--token=")
  1982. flags+=("--user=")
  1983. flags+=("--username=")
  1984. flags+=("--v=")
  1985. flags+=("--vmodule=")
  1986. must_have_one_flag=()
  1987. must_have_one_noun=()
  1988. }
  1989. _kubectl_api-versions()
  1990. {
  1991. last_command="kubectl_api-versions"
  1992. commands=()
  1993. flags=()
  1994. two_word_flags=()
  1995. flags_with_completion=()
  1996. flags_completion=()
  1997. flags+=("--alsologtostderr")
  1998. flags+=("--api-version=")
  1999. flags+=("--certificate-authority=")
  2000. flags+=("--client-certificate=")
  2001. flags+=("--client-key=")
  2002. flags+=("--cluster=")
  2003. flags+=("--context=")
  2004. flags+=("--insecure-skip-tls-verify")
  2005. flags+=("--kubeconfig=")
  2006. flags+=("--log-backtrace-at=")
  2007. flags+=("--log-dir=")
  2008. flags+=("--log-flush-frequency=")
  2009. flags+=("--logtostderr")
  2010. flags+=("--match-server-version")
  2011. flags+=("--namespace=")
  2012. flags+=("--password=")
  2013. flags+=("--server=")
  2014. two_word_flags+=("-s")
  2015. flags+=("--stderrthreshold=")
  2016. flags+=("--token=")
  2017. flags+=("--user=")
  2018. flags+=("--username=")
  2019. flags+=("--v=")
  2020. flags+=("--vmodule=")
  2021. must_have_one_flag=()
  2022. must_have_one_noun=()
  2023. }
  2024. _kubectl_version()
  2025. {
  2026. last_command="kubectl_version"
  2027. commands=()
  2028. flags=()
  2029. two_word_flags=()
  2030. flags_with_completion=()
  2031. flags_completion=()
  2032. flags+=("--client")
  2033. flags+=("-c")
  2034. flags+=("--alsologtostderr")
  2035. flags+=("--api-version=")
  2036. flags+=("--certificate-authority=")
  2037. flags+=("--client-certificate=")
  2038. flags+=("--client-key=")
  2039. flags+=("--cluster=")
  2040. flags+=("--context=")
  2041. flags+=("--insecure-skip-tls-verify")
  2042. flags+=("--kubeconfig=")
  2043. flags+=("--log-backtrace-at=")
  2044. flags+=("--log-dir=")
  2045. flags+=("--log-flush-frequency=")
  2046. flags+=("--logtostderr")
  2047. flags+=("--match-server-version")
  2048. flags+=("--namespace=")
  2049. flags+=("--password=")
  2050. flags+=("--server=")
  2051. two_word_flags+=("-s")
  2052. flags+=("--stderrthreshold=")
  2053. flags+=("--token=")
  2054. flags+=("--user=")
  2055. flags+=("--username=")
  2056. flags+=("--v=")
  2057. flags+=("--vmodule=")
  2058. must_have_one_flag=()
  2059. must_have_one_noun=()
  2060. }
  2061. _kubectl_explain()
  2062. {
  2063. last_command="kubectl_explain"
  2064. commands=()
  2065. flags=()
  2066. two_word_flags=()
  2067. flags_with_completion=()
  2068. flags_completion=()
  2069. flags+=("--recursive")
  2070. flags+=("--alsologtostderr")
  2071. flags+=("--api-version=")
  2072. flags+=("--certificate-authority=")
  2073. flags+=("--client-certificate=")
  2074. flags+=("--client-key=")
  2075. flags+=("--cluster=")
  2076. flags+=("--context=")
  2077. flags+=("--insecure-skip-tls-verify")
  2078. flags+=("--kubeconfig=")
  2079. flags+=("--log-backtrace-at=")
  2080. flags+=("--log-dir=")
  2081. flags+=("--log-flush-frequency=")
  2082. flags+=("--logtostderr")
  2083. flags+=("--match-server-version")
  2084. flags+=("--namespace=")
  2085. flags+=("--password=")
  2086. flags+=("--server=")
  2087. two_word_flags+=("-s")
  2088. flags+=("--stderrthreshold=")
  2089. flags+=("--token=")
  2090. flags+=("--user=")
  2091. flags+=("--username=")
  2092. flags+=("--v=")
  2093. flags+=("--vmodule=")
  2094. must_have_one_flag=()
  2095. must_have_one_noun=()
  2096. }
  2097. _kubectl_convert()
  2098. {
  2099. last_command="kubectl_convert"
  2100. commands=()
  2101. flags=()
  2102. two_word_flags=()
  2103. flags_with_completion=()
  2104. flags_completion=()
  2105. flags+=("--filename=")
  2106. flags_with_completion+=("--filename")
  2107. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  2108. two_word_flags+=("-f")
  2109. flags_with_completion+=("-f")
  2110. flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
  2111. flags+=("--local")
  2112. flags+=("--no-headers")
  2113. flags+=("--output=")
  2114. two_word_flags+=("-o")
  2115. flags+=("--output-version=")
  2116. flags+=("--schema-cache-dir=")
  2117. flags+=("--show-all")
  2118. flags+=("-a")
  2119. flags+=("--sort-by=")
  2120. flags+=("--template=")
  2121. two_word_flags+=("-t")
  2122. flags+=("--validate")
  2123. flags+=("--alsologtostderr")
  2124. flags+=("--api-version=")
  2125. flags+=("--certificate-authority=")
  2126. flags+=("--client-certificate=")
  2127. flags+=("--client-key=")
  2128. flags+=("--cluster=")
  2129. flags+=("--context=")
  2130. flags+=("--insecure-skip-tls-verify")
  2131. flags+=("--kubeconfig=")
  2132. flags+=("--log-backtrace-at=")
  2133. flags+=("--log-dir=")
  2134. flags+=("--log-flush-frequency=")
  2135. flags+=("--logtostderr")
  2136. flags+=("--match-server-version")
  2137. flags+=("--namespace=")
  2138. flags+=("--password=")
  2139. flags+=("--server=")
  2140. two_word_flags+=("-s")
  2141. flags+=("--stderrthreshold=")
  2142. flags+=("--token=")
  2143. flags+=("--user=")
  2144. flags+=("--username=")
  2145. flags+=("--v=")
  2146. flags+=("--vmodule=")
  2147. must_have_one_flag=()
  2148. must_have_one_flag+=("--filename=")
  2149. must_have_one_flag+=("-f")
  2150. must_have_one_noun=()
  2151. }
  2152. _kubectl()
  2153. {
  2154. last_command="kubectl"
  2155. commands=()
  2156. commands+=("get")
  2157. commands+=("describe")
  2158. commands+=("create")
  2159. commands+=("replace")
  2160. commands+=("patch")
  2161. commands+=("delete")
  2162. commands+=("edit")
  2163. commands+=("apply")
  2164. commands+=("namespace")
  2165. commands+=("logs")
  2166. commands+=("rolling-update")
  2167. commands+=("scale")
  2168. commands+=("cordon")
  2169. commands+=("drain")
  2170. commands+=("uncordon")
  2171. commands+=("attach")
  2172. commands+=("exec")
  2173. commands+=("port-forward")
  2174. commands+=("proxy")
  2175. commands+=("run")
  2176. commands+=("expose")
  2177. commands+=("autoscale")
  2178. commands+=("label")
  2179. commands+=("annotate")
  2180. commands+=("config")
  2181. commands+=("cluster-info")
  2182. commands+=("api-versions")
  2183. commands+=("version")
  2184. commands+=("explain")
  2185. commands+=("convert")
  2186. flags=()
  2187. two_word_flags=()
  2188. flags_with_completion=()
  2189. flags_completion=()
  2190. flags+=("--alsologtostderr")
  2191. flags+=("--api-version=")
  2192. flags+=("--certificate-authority=")
  2193. flags+=("--client-certificate=")
  2194. flags+=("--client-key=")
  2195. flags+=("--cluster=")
  2196. flags+=("--context=")
  2197. flags+=("--insecure-skip-tls-verify")
  2198. flags+=("--kubeconfig=")
  2199. flags+=("--log-backtrace-at=")
  2200. flags+=("--log-dir=")
  2201. flags+=("--log-flush-frequency=")
  2202. flags+=("--logtostderr")
  2203. flags+=("--match-server-version")
  2204. flags+=("--namespace=")
  2205. flags+=("--password=")
  2206. flags+=("--server=")
  2207. two_word_flags+=("-s")
  2208. flags+=("--stderrthreshold=")
  2209. flags+=("--token=")
  2210. flags+=("--user=")
  2211. flags+=("--username=")
  2212. flags+=("--v=")
  2213. flags+=("--vmodule=")
  2214. must_have_one_flag=()
  2215. must_have_one_noun=()
  2216. }
  2217. __start_kubectl()
  2218. {
  2219. local cur prev words cword
  2220. if declare -F _init_completion >/dev/null 2>&1; then
  2221. _init_completion -s || return
  2222. else
  2223. __my_init_completion || return
  2224. fi
  2225. local c=0
  2226. local flags=()
  2227. local two_word_flags=()
  2228. local flags_with_completion=()
  2229. local flags_completion=()
  2230. local commands=("kubectl")
  2231. local must_have_one_flag=()
  2232. local must_have_one_noun=()
  2233. local last_command
  2234. local nouns=()
  2235. __handle_word
  2236. }
  2237. if [[ $(type -t compopt) = "builtin" ]]; then
  2238. complete -F __start_kubectl kubectl
  2239. else
  2240. complete -o nospace -F __start_kubectl kubectl
  2241. fi
  2242. # ex: ts=4 sw=4 et filetype=sh