From 7464ecda62f9b7e2c2e52ed26b8fa095f47cf9cf Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 11 Sep 2025 05:48:28 -0400 Subject: [PATCH] init --- .aliases.d/0-define-editors.sh | 2 + .aliases.d/apt_get.sh | 10 + .aliases.d/audio.sh | 8 + .aliases.d/auto-installer.sh | 43 + .aliases.d/backups.sh | 14 + .aliases.d/cd_levels.sh | 23 + .aliases.d/chmod.sh | 63 + .aliases.d/chmod_cheats.sh | 56 + .aliases.d/dangerous.sh | 52 + .aliases.d/dev_ops.sh | 27 + .aliases.d/displays.sh | 2 + .aliases.d/docker.sh | 65 + .aliases.d/editors.sh | 28 + .aliases.d/folders.sh | 215 + .aliases.d/git.sh | 18 + .aliases.d/git_cd.sh | 181 + .aliases.d/go-lang.sh | 28 + .aliases.d/gpg.sh | 15 + .aliases.d/greetings.sh | 12 + .aliases.d/helm.sh | 4 + .aliases.d/help.sh | 88 + .aliases.d/history.sh | 16 + .aliases.d/ids.sh | 8 + .aliases.d/kubectl-cheat-sheet.sh | 14149 ++++++++++++++++ .aliases.d/kubectl.sh | 2 + .aliases.d/logs.sh | 69 + .aliases.d/maintance.sh | 13 + .aliases.d/make_symlinks.sh | 15 + .aliases.d/mem_cpu.sh | 32 + .aliases.d/misc.sh | 109 + .aliases.d/networking.sh | 68 + .aliases.d/nice_stuff.sh | 76 + .aliases.d/nvida.sh | 5 + .aliases.d/obs.sh | 21 + .aliases.d/pacman.sh | 14 + .aliases.d/paru.sh | 15 + .aliases.d/pass.sh | 19 + .aliases.d/php-lang.sh | 50 + .aliases.d/programming.sh | 68 + .aliases.d/robs_misc.sh | 80 + .aliases.d/routers.sh | 16 + .aliases.d/scripts.sh | 17 + .aliases.d/security.sh | 24 + .aliases.d/serial.sh | 108 + .aliases.d/services.sh | 4 + .aliases.d/ssh.sh | 19 + .aliases.d/tar.sh | 138 + .aliases.d/test_mail.sh | 7 + .aliases.d/the_cloud.sh | 1 + .aliases.d/tmux.sh | 58 + .aliases.d/umask.sh | 1 + .aliases.d/vagrant.sh | 6 + .aliases.d/video.sh | 1 + .aliases.d/vim.sh | 9 + .aliases.d/web.sh | 24 + .aliases.d/web_servers.sh | 34 + .aliases.d/welcome.sh | 14 + .aliases.d/windows.sh | 10 + .aliases.d/yay.sh | 10 + .aliases.d/youtube.sh | 5 + .aliases.d/z_mail_checker.sh | 1 + .aliases.d/zephir.sh | 4 + .bash_aliases | 24 + .bashrc | 79 + .profile | 22 + LICENSE.md | 22 + README.md | 8 + cheats/bash_if_tests.txt | 53 + cheats/chmod.txt | 38 + cheats/kubernetes.txt | 52 + cheats/linux.txt | 69 + cheats/regex.txt | 42 + cheats/tar.txt | 19 + cheats/tmux.txt | 139 + scripts/bible_quotes.sh | 9 + scripts/debian_deps.list | 2 + scripts/helper/.git_bash_prompt | 276 + scripts/helper/.kube-ps1 | 378 + scripts/helper/check_mail.sh | 82 + scripts/helper/gpg/common-helper.sh | 85 + scripts/helper/gpg/new-mempass.sh | 26 + scripts/helper/gpg/new-pwd.sh | 26 + scripts/helper/gpg_helper.sh | 13 + scripts/helper/scan_aliases.sh | 210 + scripts/helper/scan_libs.sh | 41 + scripts/helper/theme | 38 + scripts/rename_postfix.sh | 61 + scripts/rename_prefix.sh | 64 + scripts/setup_debian.sh | 19 + scripts/sshto/LICENSE.md | 23 + scripts/sshto/README | 30 + scripts/sshto/bin/bash_aliases.tar.gz | Bin 0 -> 55030 bytes scripts/sshto/bin/todo.tar.gz | Bin 0 -> 6613 bytes scripts/sshto/config.inc | 41 + scripts/sshto/core/an_configfile.inc | 477 + scripts/sshto/core/colors.inc | 24 + scripts/sshto/core/contents_menu.inc | 26 + scripts/sshto/core/dialog.inc | 22 + scripts/sshto/core/dynamic/run_cmd.inc | 42 + scripts/sshto/core/how_to_install.inc | 16 + scripts/sshto/core/is_dialog_installed.inc | 12 + scripts/sshto/core/is_done.inc | 20 + scripts/sshto/core/main_dialog.inc | 19 + scripts/sshto/core/pause.inc | 2 + scripts/sshto/core/run_dialog.inc | 15 + scripts/sshto/core/ssh_accept.inc | 23 + scripts/sshto/core/static/run_cmd.inc | 35 + scripts/sshto/core/targets.inc | 1 + scripts/sshto/core/z_get_hosts.inc | 57 + scripts/sshto/scripts/aliases.inc | 29 + scripts/sshto/scripts/change_ports.inc | 11 + scripts/sshto/scripts/change_username.inc | 8 + scripts/sshto/scripts/compile_bash_aliases.sh | 23 + scripts/sshto/scripts/compile_sshto.sh | 69 + scripts/sshto/scripts/copy_files.inc | 9 + scripts/sshto/scripts/copy_ssh_keys.inc | 101 + scripts/sshto/scripts/fix_id.inc | 20 + scripts/sshto/scripts/gui.inc | 41 + scripts/sshto/scripts/install_colors.inc | 4 + scripts/sshto/scripts/mosh.inc | 11 + scripts/sshto/scripts/newtab.inc | 3 + scripts/sshto/scripts/port_tunnel.inc | 1 + scripts/sshto/scripts/run_bash_alias_setup.sh | 33 + scripts/sshto/scripts/sshto_run_cmds.list | 26 + scripts/sshto/scripts/stats.inc | 4 + scripts/sshto/scripts/system_info.inc | 39 + scripts/sshto/scripts/up_or_down_load.inc | 59 + scripts/sshto/sshto.sh | 30 + 128 files changed, 19597 insertions(+) create mode 100644 .aliases.d/0-define-editors.sh create mode 100644 .aliases.d/apt_get.sh create mode 100644 .aliases.d/audio.sh create mode 100644 .aliases.d/auto-installer.sh create mode 100644 .aliases.d/backups.sh create mode 100644 .aliases.d/cd_levels.sh create mode 100644 .aliases.d/chmod.sh create mode 100644 .aliases.d/chmod_cheats.sh create mode 100644 .aliases.d/dangerous.sh create mode 100644 .aliases.d/dev_ops.sh create mode 100644 .aliases.d/displays.sh create mode 100644 .aliases.d/docker.sh create mode 100644 .aliases.d/editors.sh create mode 100644 .aliases.d/folders.sh create mode 100644 .aliases.d/git.sh create mode 100644 .aliases.d/git_cd.sh create mode 100644 .aliases.d/go-lang.sh create mode 100644 .aliases.d/gpg.sh create mode 100644 .aliases.d/greetings.sh create mode 100644 .aliases.d/helm.sh create mode 100644 .aliases.d/help.sh create mode 100644 .aliases.d/history.sh create mode 100644 .aliases.d/ids.sh create mode 100644 .aliases.d/kubectl-cheat-sheet.sh create mode 100644 .aliases.d/kubectl.sh create mode 100644 .aliases.d/logs.sh create mode 100644 .aliases.d/maintance.sh create mode 100644 .aliases.d/make_symlinks.sh create mode 100644 .aliases.d/mem_cpu.sh create mode 100644 .aliases.d/misc.sh create mode 100644 .aliases.d/networking.sh create mode 100644 .aliases.d/nice_stuff.sh create mode 100644 .aliases.d/nvida.sh create mode 100644 .aliases.d/obs.sh create mode 100644 .aliases.d/pacman.sh create mode 100644 .aliases.d/paru.sh create mode 100644 .aliases.d/pass.sh create mode 100644 .aliases.d/php-lang.sh create mode 100644 .aliases.d/programming.sh create mode 100644 .aliases.d/robs_misc.sh create mode 100644 .aliases.d/routers.sh create mode 100644 .aliases.d/scripts.sh create mode 100644 .aliases.d/security.sh create mode 100644 .aliases.d/serial.sh create mode 100644 .aliases.d/services.sh create mode 100644 .aliases.d/ssh.sh create mode 100644 .aliases.d/tar.sh create mode 100644 .aliases.d/test_mail.sh create mode 100644 .aliases.d/the_cloud.sh create mode 100644 .aliases.d/tmux.sh create mode 100644 .aliases.d/umask.sh create mode 100644 .aliases.d/vagrant.sh create mode 100644 .aliases.d/video.sh create mode 100644 .aliases.d/vim.sh create mode 100644 .aliases.d/web.sh create mode 100644 .aliases.d/web_servers.sh create mode 100644 .aliases.d/welcome.sh create mode 100644 .aliases.d/windows.sh create mode 100644 .aliases.d/yay.sh create mode 100644 .aliases.d/youtube.sh create mode 100644 .aliases.d/z_mail_checker.sh create mode 100644 .aliases.d/zephir.sh create mode 100755 .bash_aliases create mode 100644 .bashrc create mode 100644 .profile create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 cheats/bash_if_tests.txt create mode 100644 cheats/chmod.txt create mode 100644 cheats/kubernetes.txt create mode 100644 cheats/linux.txt create mode 100644 cheats/regex.txt create mode 100644 cheats/tar.txt create mode 100644 cheats/tmux.txt create mode 100755 scripts/bible_quotes.sh create mode 100644 scripts/debian_deps.list create mode 100644 scripts/helper/.git_bash_prompt create mode 100644 scripts/helper/.kube-ps1 create mode 100755 scripts/helper/check_mail.sh create mode 100644 scripts/helper/gpg/common-helper.sh create mode 100755 scripts/helper/gpg/new-mempass.sh create mode 100755 scripts/helper/gpg/new-pwd.sh create mode 100644 scripts/helper/gpg_helper.sh create mode 100755 scripts/helper/scan_aliases.sh create mode 100755 scripts/helper/scan_libs.sh create mode 100644 scripts/helper/theme create mode 100755 scripts/rename_postfix.sh create mode 100755 scripts/rename_prefix.sh create mode 100755 scripts/setup_debian.sh create mode 100644 scripts/sshto/LICENSE.md create mode 100644 scripts/sshto/README create mode 100644 scripts/sshto/bin/bash_aliases.tar.gz create mode 100644 scripts/sshto/bin/todo.tar.gz create mode 100644 scripts/sshto/config.inc create mode 100644 scripts/sshto/core/an_configfile.inc create mode 100644 scripts/sshto/core/colors.inc create mode 100644 scripts/sshto/core/contents_menu.inc create mode 100644 scripts/sshto/core/dialog.inc create mode 100644 scripts/sshto/core/dynamic/run_cmd.inc create mode 100644 scripts/sshto/core/how_to_install.inc create mode 100644 scripts/sshto/core/is_dialog_installed.inc create mode 100644 scripts/sshto/core/is_done.inc create mode 100644 scripts/sshto/core/main_dialog.inc create mode 100644 scripts/sshto/core/pause.inc create mode 100644 scripts/sshto/core/run_dialog.inc create mode 100644 scripts/sshto/core/ssh_accept.inc create mode 100644 scripts/sshto/core/static/run_cmd.inc create mode 100644 scripts/sshto/core/targets.inc create mode 100644 scripts/sshto/core/z_get_hosts.inc create mode 100644 scripts/sshto/scripts/aliases.inc create mode 100644 scripts/sshto/scripts/change_ports.inc create mode 100644 scripts/sshto/scripts/change_username.inc create mode 100755 scripts/sshto/scripts/compile_bash_aliases.sh create mode 100755 scripts/sshto/scripts/compile_sshto.sh create mode 100644 scripts/sshto/scripts/copy_files.inc create mode 100644 scripts/sshto/scripts/copy_ssh_keys.inc create mode 100644 scripts/sshto/scripts/fix_id.inc create mode 100644 scripts/sshto/scripts/gui.inc create mode 100644 scripts/sshto/scripts/install_colors.inc create mode 100644 scripts/sshto/scripts/mosh.inc create mode 100644 scripts/sshto/scripts/newtab.inc create mode 100644 scripts/sshto/scripts/port_tunnel.inc create mode 100644 scripts/sshto/scripts/run_bash_alias_setup.sh create mode 100644 scripts/sshto/scripts/sshto_run_cmds.list create mode 100644 scripts/sshto/scripts/stats.inc create mode 100644 scripts/sshto/scripts/system_info.inc create mode 100644 scripts/sshto/scripts/up_or_down_load.inc create mode 100755 scripts/sshto/sshto.sh diff --git a/.aliases.d/0-define-editors.sh b/.aliases.d/0-define-editors.sh new file mode 100644 index 0000000..9d5a66a --- /dev/null +++ b/.aliases.d/0-define-editors.sh @@ -0,0 +1,2 @@ +# clear out the screen +clear diff --git a/.aliases.d/apt_get.sh b/.aliases.d/apt_get.sh new file mode 100644 index 0000000..1583ce0 --- /dev/null +++ b/.aliases.d/apt_get.sh @@ -0,0 +1,10 @@ +if [ -x /usr/bin/apt-get ]; then + alias agi='sudo apt-get install' + alias agr='sudo apt-get remove' + alias agu='sudo apt-get update' + alias acs='apt-cache search' + alias cddeb='cd /var/cache/apt/archives' + alias apt-upgrades="sudo apt update && sudo apt -y upgrade && notify-send 'Updates Complete' 'Your system updated successfully!' -u normal -t 7500 -i checkbox-checked-symbolic" +else + alias {agi,agr,agu,acs,cddeb,apt-upgrades}='echo "Sorry, apt-get is not installed"' +fi diff --git a/.aliases.d/audio.sh b/.aliases.d/audio.sh new file mode 100644 index 0000000..542662f --- /dev/null +++ b/.aliases.d/audio.sh @@ -0,0 +1,8 @@ +alias m3u="mplayer -playlist" +#shuffle mp3/ogg etc by default +alias shuffle='mplayer --shuffle *' +#play all music files from the current directory +alias playwave='for i in *.wav; do mplayer "$i"; done' +alias playogg='for i in *.ogg; do mplayer "$i"; done' +alias playmp3='for i in *.mp3; do mplayer "$i"; done' + diff --git a/.aliases.d/auto-installer.sh b/.aliases.d/auto-installer.sh new file mode 100644 index 0000000..f7b1f9d --- /dev/null +++ b/.aliases.d/auto-installer.sh @@ -0,0 +1,43 @@ +auto-pkg-install() { + +if [ "$EUID" -eq 0 ]; then + USE_SUPER="" +elif groups "$USER" | grep -o "sudo" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "doas" >/dev/null 2>/dev/null; then + USE_SUPER="doas" +elif groups "$USER" | grep -o "wheel" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "admin" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +else + USE_SUPER="error" +fi + +if [ "$USE_SUPER" == "error" ]; then + echo "Please run as root!" + return 1 +fi + +if [ -z "$1" ]; then + echo "Please give a package name to install!" + return 1 +fi + +declare -A osInfo; +osInfo[/etc/redhat-release]="yum install" +osInfo[/etc/arch-release]="pacman -S" +osInfo[/etc/gentoo-release]="emerge" +osInfo[/etc/SuSE-release]="zypper install" +osInfo[/etc/debian_version]="apt install" +osInfo[/etc/alpine-release]="apk add --no-cache" +for f in "${!osInfo[@]}" +do + if [[ -f $f ]];then + ${USE_SUPER} ${osInfo[$f]} "$1" + fi +done + +} + +alias aip='auto-pkg-install' diff --git a/.aliases.d/backups.sh b/.aliases.d/backups.sh new file mode 100644 index 0000000..517572b --- /dev/null +++ b/.aliases.d/backups.sh @@ -0,0 +1,14 @@ +#RSYNC +alias backup="rsync --progress --info=progress2 -ravz" + +export BACKUP_TO=~/MyBackups +mybackup() { + if [ ! -d "$BACKUP_TO" ]; then + mkdir "$BACKUP_TO" + fi + if [ -d "$BACKUP_TO" ]; then + backup $@ "$BACKUP_TO" + else + echo -e "\nSorry unable to Backup to $BACKUP_TO \n" + fi +} diff --git a/.aliases.d/cd_levels.sh b/.aliases.d/cd_levels.sh new file mode 100644 index 0000000..d6d8207 --- /dev/null +++ b/.aliases.d/cd_levels.sh @@ -0,0 +1,23 @@ +alias cd.='pwd' +alias cd..='cd ..' +alias cd,,='cd ..' +alias ..='cd ..' +alias ,,='cd ..' +alias ...='cd ../..' +alias up2='cd ../..' +alias up3='cd ../../..' +alias up4='cd ../../../..' +# useage up 3 cd ../../.. +up(){ + local d="" + limit=$1 + for ((i=1 ; i <= limit ; i++)) + do + d=$d/.. + done + d=$(echo $d | sed 's/^\///') + if [ -z "$d" ]; then + d=.. + fi + cd $d +} diff --git a/.aliases.d/chmod.sh b/.aliases.d/chmod.sh new file mode 100644 index 0000000..1c1cf3a --- /dev/null +++ b/.aliases.d/chmod.sh @@ -0,0 +1,63 @@ +coder-dir() { + if [ $UID -ne 0 ]; then + if [ -d "$1" ]; then + sudo find "$1" -type d -exec chgrp coders {} \; + sudo find "$1" -type d -exec chmod g+s {} \; + sudo find "$1" -type f -exec chgrp coders {} \; + sudo find "$1" -type f -exec chmod 664 {} \; + sudo find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + else + if [ -d "$1" ]; then + find "$1" -type d -exec chgrp coders {} \; + find "$1" -type d -exec chmod g+s {} \; + find "$1" -type f -exec chgrp coders {} \; + find "$1" -type f -exec chmod 664 {} \; + find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + fi +} +www-data-dir() { + if [ $UID -ne 0 ]; then + if [ -d "$1" ]; then + sudo find "$1" -type d -exec chgrp www-data {} \; + sudo find "$1" -type d -exec chmod g+s {} \; + sudo find "$1" -type f -exec chgrp www-data {} \; + sudo find "$1" -type f -exec chmod 664 {} \; + sudo find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + else + if [ -d "$1" ]; then + find "$1" -type d -exec chgrp www-data {} \; + find "$1" -type d -exec chmod g+s {} \; + find "$1" -type f -exec chgrp www-data {} \; + find "$1" -type f -exec chmod 664 {} \; + find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + fi +} +web-dir() { + if [ $UID -ne 0 ]; then + if [ -d "$1" ]; then + sudo find "$1" -type f -exec chmod 664 {} \; + sudo find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + else + if [ -d "$1" ]; then + find "$1" -type f -exec chmod 664 {} \; + find "$1" -type d -exec chmod 775 {} \; + else + echo "DIR not found" + fi + fi +} diff --git a/.aliases.d/chmod_cheats.sh b/.aliases.d/chmod_cheats.sh new file mode 100644 index 0000000..f31dea6 --- /dev/null +++ b/.aliases.d/chmod_cheats.sh @@ -0,0 +1,56 @@ +#cheat-sheet +chmod-cheat() { + echo "chmod =:" + echo "1 = execute only" + echo "2 = write only" + echo "3 = write and execute (1+2)" + echo "4 = read only" + echo "5 = read and execute (4+1)" + echo "6 = read and write (4+2)" + echo "7 = read and write and execute (4+2+1)" + echo "qmod =:" + echo "web) 0644" + echo "safe) 0640" + echo "sbin) 0550" + echo "bin) 0555" + echo "exe) 0555" + echo "+w) 0660" + echo "write) 0664" + echo "readonly) 0440" + echo "+775) 775" + echo -e "\nqmod (MODE) /path/file\n" +} +qmod() { + if [ -e "$2" ]; then + if [ -n "$1" ]; then + if [ -d "$2" ] && [ "$3" == "-R" ] + then + OPTION="-R" + else + OPTION="" + fi + case $1 in + web) /bin/chmod $OPTION 0644 "$2" ;; + safe) /bin/chmod $OPTION 0640 "$2" ;; + sbin) /bin/chmod $OPTION 0550 "$2" ;; + bin) /bin/chmod $OPTION 0555 "$2" ;; + exe) /bin/chmod $OPTION 0555 "$2" ;; + +w) /bin/chmod $OPTION 0660 "$2" ;; + write) /bin/chmod $OPTION 0664 "$2" ;; + readonly) /bin/chmod $OPTION 0440 "$2" ;; + +775) /bin/chmod $OPTION 775 "$2" ;; + 775) echo "are you sure? If so, do chmod +775 file" ;; + *) /bin/chmod $OPTION $1 "$2" ;; + esac + if [ $? -eq 0 ]; then + echo "$1 chmod complete on $2" + else + echo "$1 chmod on $2 FAILED!!!" + fi + else + chmod-cheat + fi + else + chmod-cheat + fi +} diff --git a/.aliases.d/dangerous.sh b/.aliases.d/dangerous.sh new file mode 100644 index 0000000..65169ca --- /dev/null +++ b/.aliases.d/dangerous.sh @@ -0,0 +1,52 @@ +alias goto-trash-can='mv --force -t ~/.local/share/Trash/files ' +alias mv2trash='goto-trash-can' + +prompt_to_wipe() { + read -rp "Type 'wipe' to confirm deletion: " response + if [[ "$response" == "wipe" ]]; then + return 0 # user chose to wipe + else + return 1 # user did not choose to wipe + fi +} + +wipe-and-shred-file-permanently() { + if ! prompt_to_wipe; then + echo "Aborting..." + return 0 + fi + shred -z -v -u $@ +} +empty-the-file-contents() { + if [[ -z "$1" ]]; then + echo "Usage: empty-the-file-contents " + return 1 + fi + + if ! prompt_to_wipe; then + echo "Aborting..." + return 0 + fi + + local filename="$1" + local need_sudo="" + + # Check if file exists + if [[ ! -e "$filename" ]]; then + echo "Error: File '$filename' does not exist." >&2 + return 1 + fi + + # Check if current user owns the file + if [[ ! -O "$filename" ]]; then + echo "You don't own '$filename'. Trying with sudo..." + need_sudo="sudo" + fi + + # Empty the file while preserving permissions + $need_sudo truncate -s 0 "$filename" && echo "Successfully emptied '$filename'." || { + echo "Failed to empty '$filename'." >&2 + return 1 + } +} + diff --git a/.aliases.d/dev_ops.sh b/.aliases.d/dev_ops.sh new file mode 100644 index 0000000..3ea45c4 --- /dev/null +++ b/.aliases.d/dev_ops.sh @@ -0,0 +1,27 @@ +#alias k="kubectl" + +kn() { + if [ "$1" != "" ]; then + kubectl config set-context --current --namespace=$1 + else + echo -e "\e[1;31m Error, please provide a valid Namespace\e[0m" + fi +} + +knd() { + kubectl config set-context --current --namespace=default +} + +ku() { + kubectl config unset current-context +} + +alias h="helm" +alias tf="terraform" +alias a="ansible" +alias ap="ansible-playbook" +alias dt="datree" + +b64() { + echo -n "$@" | base64 +} diff --git a/.aliases.d/displays.sh b/.aliases.d/displays.sh new file mode 100644 index 0000000..2bddfd3 --- /dev/null +++ b/.aliases.d/displays.sh @@ -0,0 +1,2 @@ +#xrandr --output DisplayPort-2 --same-as DisplayPort-1 +alias clone-displays='xrandr --output DP-3 --same-as DP-2' diff --git a/.aliases.d/docker.sh b/.aliases.d/docker.sh new file mode 100644 index 0000000..aa255df --- /dev/null +++ b/.aliases.d/docker.sh @@ -0,0 +1,65 @@ +alias docker="sudo docker" +alias dc="docker container" +alias dv="docker volume" +alias dkps="docker ps --format '{{.ID}} - {{.Names}} - {{.Status}} - {{.Image}}'" +dklogs() { + docker logs -f `docker ps | grep $1 | awk '{print $1}'` +} +dkstats() { + if [ $# -eq 0 ] + then docker stats --no-stream; + else docker stats --no-stream | grep $1; + fi +} +dktop() { + docker stats --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}} {{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}" +} + +# Get latest container ID +alias dl="docker ps -l -q" + +# Get container process +alias dps="docker ps" + +# Get process included stop container +alias dpa="docker ps -a" + +# Get images +alias di="docker images" + +# Get container IP +alias dip="docker inspect --format '{{ .NetworkSettings.IPAddress }}'" + +# Run deamonized container, e.g., $dkd base /bin/echo hello +alias dkd="docker run -d -P" + +# Run interactive container, e.g., $dki base /bin/bash +alias dki="docker run -i -t -P" + +# Execute interactive container, e.g., $dex base /bin/bash +alias dex="docker exec -i -t" + +# Stop all containers +dstop() { docker stop $(docker ps -a -q); } + +# Remove all containers +#drm() { docker rm $(docker ps -a -q); } + +# Stop and Remove all containers +#alias drmf='docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)' + +# Remove all images +#dri() { docker rmi $(docker images -q); } + +# Dockerfile build, e.g., $dbu tcnksm/test +dbu() { docker build -t=$1 .; } + +# Show all alias related docker +dalias() { alias | grep 'docker' | sed "s/^\([^=]*\)=\(.*\)/\1 => \2/"| sed "s/['|\']//g" | sort; } + +# Bash into running container +dbash() { docker exec -it $(docker ps -aqf "name=$1") bash; } + +# Format output as Vert. +alias dvps="docker ps --format $DFORMAT" +export DFORMAT="\nID\t{{.ID}}\nIMAGE\t{{.Image}}\nCOMMAND\t{{.Command}}\nCREATED\t{{.RunningFor}}\nSTATUS\t{{.Status}}\nPORTS\t{{.Ports}}\nNAMES\t{{.Names}}\n" diff --git a/.aliases.d/editors.sh b/.aliases.d/editors.sh new file mode 100644 index 0000000..db83bb9 --- /dev/null +++ b/.aliases.d/editors.sh @@ -0,0 +1,28 @@ +word() { + wordgrinder "$1".wg +} +# Convert each typed tab to spaces, Do not automatically hard-wrap the current line, 4 space for tab +alias n='nano -wET 4' +g() { + geany "$1" & +} +doc() { + libreoffice --nologo "$1" & +} +pdf() { + evince "$1" & +} +alias ef='$EDITOR' +alias vf='$VISUAL' +calias() { + if [ -f "$_CUSTOM_ENV_PATH${1/.env/}.env" ]; then + $EDITOR "$_CUSTOM_ENV_PATH${1/.env/}.env" + elif [ -f "$_ENV_PATH${1/.env/}.env" ]; then + $EDITOR "$_ENV_PATH${1/.env/}.env" + elif [ "$1" == "me" ]; then + $EDITOR "${_ENV_PATH}editors.env" + else + cmd + echo "calias command_name" + fi +} diff --git a/.aliases.d/folders.sh b/.aliases.d/folders.sh new file mode 100644 index 0000000..95ac330 --- /dev/null +++ b/.aliases.d/folders.sh @@ -0,0 +1,215 @@ +if [ -x /usr/bin/nautilus ]; then + FILE_MGR=/usr/bin/nautilus +elif [ -x /usr/bin/dolphin ]; then + FILE_MGR=/usr/bin/dolphin +elif [ -x /usr/bin/krusader ]; then + FILE_MGR=/usr/bin/krusader +elif [ -x /usr/bin/konqueror ]; then + FILE_MGR=/usr/bin/konqueror +elif [ -x /usr/bin/pcmanfm ]; then + FILE_MGR=/usr/bin/pcmanfm +elif [ -x /usr/bin/thunar ]; then + FILE_MGR=/usr/bin/thunar +else + FILE_MGR=/usr/bin/nautilus +fi +# safety features +alias cp='cp -iv' +alias mv='mv -iv' +alias ln="ln -i" # prompt whether to remove destinations +alias chown="chown --preserve-root" +alias chmod="chmod --preserve-root" +alias chgrp="chgrp --preserve-root" +alias rm='rm -I --preserve-root' +if [ -x /usr/bin/lsd ]; then + alias ls='lsd' + alias l='lsd -a' +else + alias l='ls -CF' +fi +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + if [ -x /usr/bin/lsd ]; then + alias ls='lsd --color=auto' + else + alias ls='ls --color=auto' + fi + alias dir='dir --color=auto' + alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# some more ls aliases +ll() { + if [ -x /usr/bin/lsd ]; then + if [ $(lsd -alF --color=always $@ | wc -l) -gt 20 ]; then + lsd -alF --color=always $@ | less -R -X + else + lsd -alF --color=always $@ + fi + else + if [ $(ls -alF --color=always $@ | wc -l) -gt 20 ]; then + ls -alF --color=always $@ | less -r -X + else + ls -alF --color=always $@ + fi + fi +} +alias la='ls -alh' +alias ls-la='ls -la' +new-stuff-only-sub-dirs-too() { + if [ -x /usr/bin/lsd ]; then + find . -type d -name '.git' -prune -o -type f -newermt "$(date -d '14 days ago' +%Y-%m-%d)" -exec /usr/bin/lsd -lt --color=always {} + + else + find . -type d -name '.git' -prune -o -type f -newermt "$(date -d '14 days ago' +%Y-%m-%d)" -exec /usr/bin/ls -lt {} + + fi +} +new-stuff-only() { + if [ -x /usr/bin/lsd ]; then + find . -maxdepth 1 -type f -newermt "$(date -d '14 days ago' +%Y-%m-%d)" -exec /usr/bin/lsd -lt --color=always {} + + else + find . -maxdepth 1 -type f -newermt "$(date -d '14 days ago' +%Y-%m-%d)" -exec /usr/bin/ls -lt {} + + fi +} +alias dirs="ls -al | grep '^d'" +alias cls='clear' +#Sort by file size +alias lt='/bin/ls --human-readable --size -1 -S --classify' +alias sym-links='find -type l' +show() { + if [ -z $1 ]; then + $FILE_MGR . & + else + $FILE_MGR $1 & + fi +} +cdocs() { + $FILE_MGR ~/Documents/"$1" & +} +documents() { + cd ~/Documents/"$1" +} +downloads() { + cd ~/Downloads/"$1" +} +desktop() { + cd ~/Desktop/"$1" +} +music() { + cd ~/Music/"$1" +} +videos() { + cd ~/Videos/"$1" +} +photos() { + cd ~/Pictures/"$1" +} +alias aliases='cd $_ENV_PATH' +alias space-used='ncdu' +www() { + cd /var/www/"$1" +} +alias md='mkdir -p' +mcd() { + mkdir -p "$1" + cd "$1" +} +alias e='exit' +alias bye='exit' +# Auto cd into folder by just typing the name of the directory +shopt -s autocd +#Search for a specific file +#Use: "findfile example" +#Results: prints any files that begin with "example", is not case-sensitive, picks up any file type (ex. result: ExampleTest.docx) +findfile() { + if [ -x /usr/bin/fdfind ]; then + fdfind "$@" + return + fi + file="$@" + file+="*" + find . -iname "$file" 2>&1 | grep -v "Operation not permitted" +} +#Search for all files with a specific extension +#Use: "findext swift" +#Results: prints all .swift files +findext() { + ext="*." + ext+="$@" + find . -iname "$ext" 2>&1 | grep -v "Operation not permitted" +} +lfile() { + findfile "$@" | less +} +lext() { + findext "$@" | less +} +# same as cp file{,_BACKUP} +cpt() { + if [ -z "$1" ]; then + echo "cpt file file_BACKUP" + echo "Will copy the file to file_BACKUP" + echo "Same as doing: cp file{,_BACKUP}" + return + fi + if [ -z "$2" ]; then + cp "$1" "$1"_BACKUP + else + cp "$1" "$1"_"$2" + fi +} +# same as mv dirname{,_OLD} +mvt() { + if [ -z "$1" ]; then + echo "mvt existingDir newName" + echo "Will rename the folder with existingDir_newName" + echo "Same as doing: mv DirName{,_OLD}" + return + fi + if [ -z "$2" ]; then + mv "$1" "$1"_OLD + else + mv "$1" "$1"_"$2" + fi +} +# mv file to ORIGNAL_file, make/edit new file +erase_config() { + if [ -z "$1" ]; then + echo "Rename, then Erase Config File, then edit new one." + return + fi + mv "$1" ORIGNAL_"$1" + touch "$1" + $EDITOR "$1" +} + +# Find text within given files +lookfor() { + if [ -x /usr/bin/rg ]; then + rg "$@" + return + fi + if [ -z "$2" ]; then + grep -rnw . -e "$1" + else + if [ -z "$3" ]; then + grep -rnw "$2" -e "$1" + else + grep "$3" -rnw "$2" -e "$1" + fi + fi +} +# list all files of type and do line count Example: list-count *.yaml +list-count() { + total_files=$(ls -1 "$@" | wc -l) + echo "Total # of files = $total_files" +} +tree-count() { + tree -P "$@" -I "tmp|node_modules|vendor|cache|test" +} +alias file-count='find . -type f | wc -l' +alias see-mounted="mount | awk -F' ' '{ printf \"%s\t%s\n\",\$1,\$3; }' | column -t | egrep ^/dev/ | sort" diff --git a/.aliases.d/git.sh b/.aliases.d/git.sh new file mode 100644 index 0000000..129f89a --- /dev/null +++ b/.aliases.d/git.sh @@ -0,0 +1,18 @@ +#git +alias gs='git status' +alias g.='git add .' +alias gc='git commit -a -m' +alias mpull='git pull origin master' +alias mpush='git push origin master' +alias mainpull='git pull origin main' +alias mainpush='git push origin main' +alias pull='git pull' +alias push='git push' +alias gb='git branch' +alias branch='git branch' +alias clone='git clone' +alias checkout='git checkout' +alias gdiff="git diff" +alias gw='git whatchanged' +# No matter how far down into your Git project's directory hierarchy you have descended, the command cg now returns you to the top. +alias cg='cd `git rev-parse --show-toplevel`' diff --git a/.aliases.d/git_cd.sh b/.aliases.d/git_cd.sh new file mode 100644 index 0000000..d3e0191 --- /dev/null +++ b/.aliases.d/git_cd.sh @@ -0,0 +1,181 @@ +gcd_help() { + /bin/echo "Usage: to auto cd into a git project." + /bin/echo "By Default with no arguments -> list all git projects." + /bin/echo "\$ gcd PROJECT -> will cd into project folder and give git status." + /bin/echo "Commands: \$ gcd PROJECT [auto, pull, push, nostatus, addall]" + /bin/echo "NEW: \$ gcd-push -> to push an git repo dir, and \$ gcd-pop -> to pop last dir" + /bin/echo "[nopop] -> will not gpop before it does its gpush" + /bin/echo "\$ gcd-pop -> will go back to last folder used by gcd-push" + /bin/echo "To edit Projects List: \$ gcd editprojects" +} + +gcd_branch() { + echo "You are on Git Branch: " + /usr/bin/git branch --list +} +GIT_DIR_STACK=() +git_dirs() { + if [ ${#GIT_DIR_STACK[@]} -eq 0 ]; then + echo "Empty Stack" 1>&2 + return 1 + fi + printf "Git Push Dirs: " + for s in "${GIT_DIR_STACK[@]}"; do + if [ -z "$1" ] || [ ! "${GIT_DIR_STACK[-1]}" == "$s" ]; then + printf "$s " + fi + done + echo -e "\n" +} + +git_pushd() { + if [ ${#GIT_DIR_STACK[@]} -eq 0 ]; then + GIT_DIR_STACK+=( $(pwd) ) + fi + if [ ! -z "$1" ]; then + local gitdirname=$1 + local nopush=false + for s in "${GIT_DIR_STACK[@]}"; do + if [ "$s" == "$gitdirname" ]; then + nopush=true + break; + fi + done + if [ "$nopush" == false ]; then + GIT_DIR_STACK+=( "$gitdirname" ) + else + echo "Already in Stack..." + fi + if [ -z "$2" ]; then + git_dirs here + fi + cd $gitdirname + fi +} + +git_popd() { + if [[ ${GIT_DIR_STACK[@]} ]]; then + if [ ${#GIT_DIR_STACK[@]} -eq 2 ]; then + cd ${GIT_DIR_STACK[-2]} + echo "Stack now empty." + GIT_DIR_STACK=() + elif [ ${#GIT_DIR_STACK[@]} -gt 2 ]; then + cd ${GIT_DIR_STACK[-2]} + if [ -z "$1" ]; then + git_dirs here + fi + unset GIT_DIR_STACK[-1] + else + echo "Empty Stack" 1>&2 + return 1 + fi + else + echo "Empty Stack" 1>&2 + return 1 + fi +} + +alias gcd-push='git_pushd' +alias gcd-pop='git_popd' +alias gcd-dirs='git_dirs' + +gcd_x() { + if [ -z "$2" ]; then + git_popd 2> /dev/null > /dev/null + git_pushd "$1" + elif [ "$2" == "nopop" ]; then + git_pushd "$1" + else + cd "$1" + fi +} + +gcd() { + #set -x + local git_projects=~/.gitprojects + + if [ ! -r $git_projects ]; then + /opt/profiles/scripts/locate_gits.sh + if [ $? -eq 0 ]; then + mv /tmp/gitprojects $git_projects + else + echo "Opps!!" + exit 1 + fi + fi + + if [ -z "$1" ]; then + /bin/echo + elif [ $1 == "--help" ] || [ $1 == "-help" ] || [ $1 == "help" ] || [ $1 == "?" ]; then + gcd_help + return 0 + elif [ $1 == "editprojects" ]; then + $EDITOR "$git_projects" + return 0 + elif [ $1 == "me" ]; then + $EDITOR ${_ENV_PATH}git_cd.env + return 0 + fi + + IFSOLD=$IFS + IFS=','; + found="false" + while read -r label mycommand desc; + do + [[ $label =~ ^#.* ]] && continue + if [ -z "$1" ]; then + /bin/echo "gcd ${label} , PATH= ${mycommand}, DESC: ${desc}" + else + [[ "$label" == "$1" ]] && { found="true"; break; } + fi + done < "$git_projects" + IFS=$IFSOLD + + if [ "$found" == "true" ] && [ ! -z $mycommand ]; then + if [ -z $2 ]; then + gcd_x "$mycommand" + /usr/bin/git status + elif [ $2 == "nopop" ]; then + gcd_x "$mycommand" nopop + /usr/bin/git status + elif [ $2 == "auto" ]; then + /opt/profiles/scripts/git/dogit "$mycommand" + gcd_x "$mycommand" $3 + elif [ $2 == "pull" ]; then + /opt/profiles/scripts/git/gpull "$mycommand" + gcd_x "$mycommand" $3 + elif [ $2 == "push" ]; then + /opt/profiles/scripts/git/gpull-and-push "$mycommand" + gcd_x "$mycommand" $3 + elif [ $2 == "nostatus" ]; then + gcd_x "$mycommand" $3 + elif [ $2 == "addall" ]; then + gcd_x "$mycommand" $3 + /usr/bin/git add . + /usr/bin/git status + else + gcd_help + fi + fi + #set +x +} + +gpcd() { + local gcmdlist=() + IFSOLD=$IFS + IFS=','; + while read -r label mycommand desc; do + [[ $label =~ ^#.* ]] && continue + if [ "$label" == "$1" ]; then + gcd $@ + return 0 + fi + gcmdlist+=("$label" "$desc") + done < ~/.gitprojects + IFS=$IFSOLD + command=$(dialog --ok-label "CD" --cancel-label "EXIT" --output-fd 1 \ + --colors \ + --menu "Select git project:" 0 0 0 "${gcmdlist[@]}") + clear + gcd $command $@ +} diff --git a/.aliases.d/go-lang.sh b/.aliases.d/go-lang.sh new file mode 100644 index 0000000..0c896ec --- /dev/null +++ b/.aliases.d/go-lang.sh @@ -0,0 +1,28 @@ +go-lang() { + if [ "$(which go | wc -l)" -eq 1 ]; then + if [ -z "$1" ]; then + echo "build - Compile packages and dependencies." + echo "download - Downloads the module to local cache." + echo "init - Init new module in current DIR." + echo "get - Adds dependencies to current module and install them." + echo "tidy - Add missing and remove unused modules." + echo "vendor - Make vendored copy of dependencies." + else + case "$1" in + build) go build;; + download) go mod download;; + init) go mod init "$2";; + get) go get "$2";; + tidy) go mod tidy;; + vendor) go mod vendor;; + *) go-lang;; + esac + fi + else + echo "Go Lang, not install yet!" + echo "Goto: https://go.dev/dl/ Grab the TAR file..." + echo "rm -rf /usr/local/go && tar -C /usr/local -xzf GO_FILE_HERE.tar.gz" + echo "ln -s /usr/local/go/bin/go /usr/local/bin/" + fi +} +alias gx='go-lang' diff --git a/.aliases.d/gpg.sh b/.aliases.d/gpg.sh new file mode 100644 index 0000000..eb29d46 --- /dev/null +++ b/.aliases.d/gpg.sh @@ -0,0 +1,15 @@ +# CHANGE the below GPG_EMAIL !!!!!!!! to your's +export XGPG_EMAIL="Bob@home.local" +# You might want a smaller pwd for site compatibility?? +export XNEW_PASSWORD_SIZE=26 +export XGPG_PASS_STORE=~/.password-store +export XGPG_APP="/usr/bin/gpg" +# Un-comment below if gpg is not in the: /usr/bin path! +#export XGPG_APP="$(which gpg)" + +new-pwd() { + ~/dotfiles/scripts/gpg/new-pwd.sh $@ +} +new-mempass() { + ~/dotfiles/scripts/gpg/new-mempass.sh $@ +} diff --git a/.aliases.d/greetings.sh b/.aliases.d/greetings.sh new file mode 100644 index 0000000..c736e65 --- /dev/null +++ b/.aliases.d/greetings.sh @@ -0,0 +1,12 @@ +echo -e "Kernel & CPU:" `uname -rp` + +# print this months calendar out +#cal + +if [ -f awesome.txt ]; then + cat awesome.txt +fi + +if [ -f mysite.txt ]; then + cat mysite.txt +fi diff --git a/.aliases.d/helm.sh b/.aliases.d/helm.sh new file mode 100644 index 0000000..a7d88a5 --- /dev/null +++ b/.aliases.d/helm.sh @@ -0,0 +1,4 @@ +alias helm-dry='helm install --dry-run --debug' +alias helm-pull='helm pull' +alias helm-repo='helm repo' +alias minikube-start='minikube start' diff --git a/.aliases.d/help.sh b/.aliases.d/help.sh new file mode 100644 index 0000000..1e36b7c --- /dev/null +++ b/.aliases.d/help.sh @@ -0,0 +1,88 @@ +# Type alias-find command for help on that alias +alias-find() { + grep "$1" *.sh +} + +alias-new() { + if [ -z "$1" ]; then + echo "Create new alias called?" + else + pushd ~/dotfiles/.aliases.d + nano "${1//.sh".sh + if [ -f ".sane_checker.sum" ]; then + echo -e "Enter sudo password for sane_checker...\n" + sudo chattr -i ".sane_checker.sum" + sudo chmod 644 ".sane_checker.sum" + rm ".sane_checker.sum" + fi + popd + fi +} +alias alias-update='alias-new' + +alias-help() { + echo -e "Alias Help:\n" + echo -e "my-aliases - will use fzf selection box to pick an alias to edit.\n" + echo -e "alias-find - will search for a given command and tell which alias file contains it.\n" + echo -e "aliases - will cd into aliases folder.\n" + echo -e "alias-new - Followed by a filename will make a new alais file.\n" + echo -e "cmd - will less out alias command file.\n" + echo -e "cmds - will list all alias command files.\n" + echo -e "cmds-print - will print all alias commands.\n" + echo -e "calias - will edit alias command env file.\n" + echo -e "alias-reload - will reload bashrc...\n" + echo -e "cheat - Followed by Cheat file to view. If empty, all cheat files are displayed.\n" + echo -e "cheats - will cd into cheats folder.\n" +} +cheats="~/dotfiles/cheats/" +alias cheats="cd ${cheats}" +alias list-cheats='ls -1 ~/dotfiles/cheats/*.txt | sed -e "s,${cheats},,g"' +cheat() { + if [ -f ~/dotfiles/cheats/$1.txt ]; then + less -X ~/dotfiles/cheats/$1.txt + else + if [ -f ~/dotfiles/cheats/$1 ]; then + less -X ~/dotfiles/cheats/$1 + else + list-cheats + fi + fi +} + +alias alias-reload='unalias -a && . $HOME/.bashrc' +alias alias-guide='dialog --title "Alias Profiles Guide" --textbox /opt/profiles/cheats/guide 0 0; clear' + +my-aliases() { + local sys_aliases=$(find "~/dotfiles/.aliases.d" -type f -name "*.env") + local all_the_aliases=("$sys_aliases") + local selected_alias=$(printf "%s\n" "${all_the_aliases[@]}" | fzf --prompt "Select Alias file: ") + if [ -z "$selected_alias" ]; then + echo "No Alias selected." + return 1 + fi + nano "$selected_alias" +} + +cmds-print() { + lpstat -d | grep "no system default destination" + if [ $? -eq 0 ]; then + if [ -z $1 ]; then + echo "Please enter pritner dest:" + lpstat -t + else + lpoptions -d $1 + fi + else + echo "..." > /tmp/pcommands.txt + for f in ~/dotfiles/.aliases.d/*.sh; do + if [ "$f" == "kubectl-cheat-sheet.sh" ]; then + # skip large file + continue + fi + + echo "Reading Aliases for ${f}" >> /tmp/pcommands.txt + cat "${f}" >> /tmp/pcommands.txt + done + lpr /tmp/pcommands.txt + fi +} diff --git a/.aliases.d/history.sh b/.aliases.d/history.sh new file mode 100644 index 0000000..fc6eae8 --- /dev/null +++ b/.aliases.d/history.sh @@ -0,0 +1,16 @@ +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +export HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +export HISTSIZE=10000 +export HISTFILESIZE=10000 + +export HISTTIMEFORMAT="%d/%m/%y %T " + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize diff --git a/.aliases.d/ids.sh b/.aliases.d/ids.sh new file mode 100644 index 0000000..b547ece --- /dev/null +++ b/.aliases.d/ids.sh @@ -0,0 +1,8 @@ +# A host-based intrusion detection system. +alias ids-scan='sudo tripwire -m c -v -c /etc/tripwire/tw.cfg' +ids-update() { + DIR=/var/lib/tripwire/report + HOST=`hostname -s` + LAST_REPORT=`sudo ls -1t $DIR/$HOST-*.twr | head -1` + sudo tripwire --update --twrfile "$LAST_REPORT" +} diff --git a/.aliases.d/kubectl-cheat-sheet.sh b/.aliases.d/kubectl-cheat-sheet.sh new file mode 100644 index 0000000..f2cd737 --- /dev/null +++ b/.aliases.d/kubectl-cheat-sheet.sh @@ -0,0 +1,14149 @@ +# Copyright 2016 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# bash completion for kubectl -*- shell-script -*- + +__kubectl_debug() +{ + if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then + echo "$*" >> "${BASH_COMP_DEBUG_FILE}" + fi +} + +# Homebrew on Macs have version 1.3 of bash-completion which doesn't include +# _init_completion. This is a very minimal version of that function. +__kubectl_init_completion() +{ + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +__kubectl_index_of_word() +{ + local w word=$1 + shift + index=0 + for w in "$@"; do + [[ $w = "$word" ]] && return + index=$((index+1)) + done + index=-1 +} + +__kubectl_contains_word() +{ + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 +} + +__kubectl_handle_go_custom_completion() +{ + __kubectl_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" + + local shellCompDirectiveError=1 + local shellCompDirectiveNoSpace=2 + local shellCompDirectiveNoFileComp=4 + local shellCompDirectiveFilterFileExt=8 + local shellCompDirectiveFilterDirs=16 + + local out requestComp lastParam lastChar comp directive args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly kubectl allows to handle aliases + args=("${words[@]:1}") + requestComp="${words[0]} __completeNoDesc ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __kubectl_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" + + if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __kubectl_debug "${FUNCNAME[0]}: Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __kubectl_debug "${FUNCNAME[0]}: calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%:*} + if [ "${directive}" = "${out}" ]; then + # There is not directive specified + directive=0 + fi + __kubectl_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" + __kubectl_debug "${FUNCNAME[0]}: the completions are: ${out[*]}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + # Error code. No completion. + __kubectl_debug "${FUNCNAME[0]}: received error from custom completion go code" + return + else + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __kubectl_debug "${FUNCNAME[0]}: activating no space" + compopt -o nospace + fi + fi + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __kubectl_debug "${FUNCNAME[0]}: activating no file completion" + compopt +o default + fi + fi + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local fullFilter filter filteringCmd + # Do not use quotes around the $out variable or else newline + # characters will be kept. + for filter in ${out[*]}; do + fullFilter+="$filter|" + done + + filteringCmd="_filedir $fullFilter" + __kubectl_debug "File filtering command: $filteringCmd" + $filteringCmd + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subDir + # Use printf to strip any trailing newline + subdir=$(printf "%s" "${out[0]}") + if [ -n "$subdir" ]; then + __kubectl_debug "Listing directories in $subdir" + __kubectl_handle_subdirs_in_dir_flag "$subdir" + else + __kubectl_debug "Listing directories in ." + _filedir -d + fi + else + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${out[*]}" -- "$cur") + fi +} + +__kubectl_handle_reply() +{ + __kubectl_debug "${FUNCNAME[0]}" + local comp + case $cur in + -*) + if [[ $(type -t compopt) = "builtin" ]]; then + compopt -o nospace + fi + local allflags + if [ ${#must_have_one_flag[@]} -ne 0 ]; then + allflags=("${must_have_one_flag[@]}") + else + allflags=("${flags[*]} ${two_word_flags[*]}") + fi + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${allflags[*]}" -- "$cur") + if [[ $(type -t compopt) = "builtin" ]]; then + [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace + fi + + # complete after --flag=abc + if [[ $cur == *=* ]]; then + if [[ $(type -t compopt) = "builtin" ]]; then + compopt +o nospace + fi + + local index flag + flag="${cur%=*}" + __kubectl_index_of_word "${flag}" "${flags_with_completion[@]}" + COMPREPLY=() + if [[ ${index} -ge 0 ]]; then + PREFIX="" + cur="${cur#*=}" + ${flags_completion[${index}]} + if [ -n "${ZSH_VERSION}" ]; then + # zsh completion needs --flag= prefix + eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" + fi + fi + fi + return 0; + ;; + esac + + # check if we are handling a flag with special work handling + local index + __kubectl_index_of_word "${prev}" "${flags_with_completion[@]}" + if [[ ${index} -ge 0 ]]; then + ${flags_completion[${index}]} + return + fi + + # we are parsing a flag and don't have a special handler, no completion + if [[ ${cur} != "${words[cword]}" ]]; then + return + fi + + local completions + completions=("${commands[@]}") + if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then + completions+=("${must_have_one_noun[@]}") + elif [[ -n "${has_completion_function}" ]]; then + # if a go completion function is provided, defer to that function + __kubectl_handle_go_custom_completion + fi + if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then + completions+=("${must_have_one_flag[@]}") + fi + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") + + if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${noun_aliases[*]}" -- "$cur") + fi + + if [[ ${#COMPREPLY[@]} -eq 0 ]]; then + if declare -F __kubectl_custom_func >/dev/null; then + # try command name qualified custom func + __kubectl_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi + fi + + # available in bash-completion >= 2, not always present on macOS + if declare -F __ltrim_colon_completions >/dev/null; then + __ltrim_colon_completions "$cur" + fi + + # If there is only 1 completion and it is a flag with an = it will be completed + # but we don't want a space after the = + if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then + compopt -o nospace + fi +} + +# The arguments should be in the form "ext1|ext2|extn" +__kubectl_handle_filename_extension_flag() +{ + local ext="$1" + _filedir "@(${ext})" +} + +__kubectl_handle_subdirs_in_dir_flag() +{ + local dir="$1" + pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return +} + +__kubectl_handle_flag() +{ + __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + # if a command required a flag, and we found it, unset must_have_one_flag() + local flagname=${words[c]} + local flagvalue + # if the word contained an = + if [[ ${words[c]} == *"="* ]]; then + flagvalue=${flagname#*=} # take in as flagvalue after the = + flagname=${flagname%=*} # strip everything after the = + flagname="${flagname}=" # but put the = back + fi + __kubectl_debug "${FUNCNAME[0]}: looking for ${flagname}" + if __kubectl_contains_word "${flagname}" "${must_have_one_flag[@]}"; then + must_have_one_flag=() + fi + + # if you set a flag which only applies to this command, don't show subcommands + if __kubectl_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then + commands=() + fi + + # keep flag value with flagname as flaghash + # flaghash variable is an associative array which is only supported in bash > 3. + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [ -n "${flagvalue}" ] ; then + flaghash[${flagname}]=${flagvalue} + elif [ -n "${words[ $((c+1)) ]}" ] ; then + flaghash[${flagname}]=${words[ $((c+1)) ]} + else + flaghash[${flagname}]="true" # pad "true" for bool flag + fi + fi + + # skip the argument to a two word flag + if [[ ${words[c]} != *"="* ]] && __kubectl_contains_word "${words[c]}" "${two_word_flags[@]}"; then + __kubectl_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" + c=$((c+1)) + # if we are looking for a flags value, don't show commands + if [[ $c -eq $cword ]]; then + commands=() + fi + fi + + c=$((c+1)) + +} + +__kubectl_handle_noun() +{ + __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + if __kubectl_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then + must_have_one_noun=() + elif __kubectl_contains_word "${words[c]}" "${noun_aliases[@]}"; then + must_have_one_noun=() + fi + + nouns+=("${words[c]}") + c=$((c+1)) +} + +__kubectl_handle_command() +{ + __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + local next_command + if [[ -n ${last_command} ]]; then + next_command="_${last_command}_${words[c]//:/__}" + else + if [[ $c -eq 0 ]]; then + next_command="_kubectl_root_command" + else + next_command="_${words[c]//:/__}" + fi + fi + c=$((c+1)) + __kubectl_debug "${FUNCNAME[0]}: looking for ${next_command}" + declare -F "$next_command" >/dev/null && $next_command +} + +__kubectl_handle_word() +{ + if [[ $c -ge $cword ]]; then + __kubectl_handle_reply + return + fi + __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + if [[ "${words[c]}" == -* ]]; then + __kubectl_handle_flag + elif __kubectl_contains_word "${words[c]}" "${commands[@]}"; then + __kubectl_handle_command + elif [[ $c -eq 0 ]]; then + __kubectl_handle_command + elif __kubectl_contains_word "${words[c]}" "${command_aliases[@]}"; then + # aliashash variable is an associative array which is only supported in bash > 3. + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + words[c]=${aliashash[${words[c]}]} + __kubectl_handle_command + else + __kubectl_handle_noun + fi + else + __kubectl_handle_noun + fi + __kubectl_handle_word +} + +# call kubectl get $1, +__kubectl_debug_out() +{ + local cmd="$1" + __kubectl_debug "${FUNCNAME[1]}: get completion by ${cmd}" + eval "${cmd} 2>/dev/null" +} + +__kubectl_override_flag_list=(--kubeconfig --cluster --user --context --namespace --server -n -s) +__kubectl_override_flags() +{ + local ${__kubectl_override_flag_list[*]##*-} two_word_of of var + for w in "${words[@]}"; do + if [ -n "${two_word_of}" ]; then + eval "${two_word_of##*-}=\"${two_word_of}=\${w}\"" + two_word_of= + continue + fi + for of in "${__kubectl_override_flag_list[@]}"; do + case "${w}" in + ${of}=*) + eval "${of##*-}=\"${w}\"" + ;; + ${of}) + two_word_of="${of}" + ;; + esac + done + done + for var in "${__kubectl_override_flag_list[@]##*-}"; do + if eval "test -n \"\$${var}\""; then + eval "echo -n \${${var}}' '" + fi + done +} + +__kubectl_config_get_contexts() +{ + __kubectl_parse_config "contexts" +} + +__kubectl_config_get_clusters() +{ + __kubectl_parse_config "clusters" +} + +__kubectl_config_get_users() +{ + __kubectl_parse_config "users" +} + +# $1 has to be "contexts", "clusters" or "users" +__kubectl_parse_config() +{ + local template kubectl_out + template="{{ range .$1 }}{{ .name }} {{ end }}" + if kubectl_out=$(__kubectl_debug_out "kubectl config $(__kubectl_override_flags) -o template --template=\"${template}\" view"); then + COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) + fi +} + +# $1 is the name of resource (required) +# $2 is template string for kubectl get (optional) +__kubectl_parse_get() +{ + local template + template="${2:-"{{ range .items }}{{ .metadata.name }} {{ end }}"}" + local kubectl_out + if kubectl_out=$(__kubectl_debug_out "kubectl get $(__kubectl_override_flags) -o template --template=\"${template}\" \"$1\""); then + COMPREPLY+=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) + fi +} + +# Same as __kubectl_get_resources (with s) but allows completion for only one resource name. +__kubectl_get_resource() +{ + if [[ ${#nouns[@]} -eq 0 ]]; then + __kubectl_get_resource_helper "" "$cur" + return # the return status is that of the last command executed in the function body + fi + __kubectl_parse_get "${nouns[${#nouns[@]} -1]}" +} + +# Same as __kubectl_get_resource (without s) but allows completion for multiple, comma-separated resource names. +__kubectl_get_resources() +{ + local SEPARATOR=',' + if [[ ${#nouns[@]} -eq 0 ]]; then + local kubectl_out HEAD TAIL + HEAD="" + TAIL="$cur" + # if SEPARATOR is contained in $cur, e.g. "pod,sec" + if [[ "$cur" = *${SEPARATOR}* ]] ; then + # set HEAD to "pod," + HEAD="${cur%${SEPARATOR}*}${SEPARATOR}" + # set TAIL to "sec" + TAIL="${cur##*${SEPARATOR}}" + fi + __kubectl_get_resource_helper "$HEAD" "$TAIL" + return # the return status is that of the last command executed in the function body + fi + __kubectl_parse_get "${nouns[${#nouns[@]} -1]}" +} + +__kubectl_get_resource_helper() +{ + local kubectl_out HEAD TAIL + HEAD="$1" + TAIL="$2" + if kubectl_out=$(__kubectl_debug_out "kubectl api-resources $(__kubectl_override_flags) -o name --cached --request-timeout=5s --verbs=get"); then + COMPREPLY=( $( compgen -P "$HEAD" -W "${kubectl_out[*]}" -- "$TAIL" ) ) + return 0 + fi + return 1 +} + +__kubectl_get_resource_namespace() +{ + __kubectl_parse_get "namespace" +} + +__kubectl_get_resource_pod() +{ + __kubectl_parse_get "pod" +} + +__kubectl_get_resource_rc() +{ + __kubectl_parse_get "rc" +} + +__kubectl_get_resource_node() +{ + __kubectl_parse_get "node" +} + +__kubectl_get_resource_clusterrole() +{ + __kubectl_parse_get "clusterrole" +} + +# $1 is the name of the pod we want to get the list of containers inside +__kubectl_get_containers() +{ + local template + template="{{ range .spec.initContainers }}{{ .name }} {{end}}{{ range .spec.containers }}{{ .name }} {{ end }}" + __kubectl_debug "${FUNCNAME} nouns are ${nouns[*]}" + + local len="${#nouns[@]}" + if [[ ${len} -ne 1 ]]; then + return + fi + local last=${nouns[${len} -1]} + local kubectl_out + if kubectl_out=$(__kubectl_debug_out "kubectl get $(__kubectl_override_flags) -o template --template=\"${template}\" pods \"${last}\""); then + COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) + fi +} + +# Require both a pod and a container to be specified +__kubectl_require_pod_and_container() +{ + if [[ ${#nouns[@]} -eq 0 ]]; then + __kubectl_parse_get pods + return 0 + fi; + __kubectl_get_containers + return 0 +} + +__kubectl_cp() +{ + if [[ $(type -t compopt) = "builtin" ]]; then + compopt -o nospace + fi + + case "$cur" in + /*|[.~]*) # looks like a path + return + ;; + *:*) # TODO: complete remote files in the pod + return + ;; + */*) # complete / + local template namespace kubectl_out + template="{{ range .items }}{{ .metadata.namespace }}/{{ .metadata.name }}: {{ end }}" + namespace="${cur%%/*}" + if kubectl_out=$(__kubectl_debug_out "kubectl get $(__kubectl_override_flags) --namespace \"${namespace}\" -o template --template=\"${template}\" pods"); then + COMPREPLY=( $(compgen -W "${kubectl_out[*]}" -- "${cur}") ) + fi + return + ;; + *) # complete namespaces, pods, and filedirs + __kubectl_parse_get "namespace" "{{ range .items }}{{ .metadata.name }}/ {{ end }}" + __kubectl_parse_get "pod" "{{ range .items }}{{ .metadata.name }}: {{ end }}" + _filedir + ;; + esac +} + +__kubectl_custom_func() { + case ${last_command} in + kubectl_get) + __kubectl_get_resources + return + ;; + kubectl_describe | kubectl_delete | kubectl_label | kubectl_edit | kubectl_patch |\ + kubectl_annotate | kubectl_expose | kubectl_scale | kubectl_autoscale | kubectl_taint | kubectl_rollout_* |\ + kubectl_apply_edit-last-applied | kubectl_apply_view-last-applied) + __kubectl_get_resource + return + ;; + kubectl_logs) + __kubectl_require_pod_and_container + return + ;; + kubectl_exec | kubectl_port-forward | kubectl_top_pod | kubectl_attach) + __kubectl_get_resource_pod + return + ;; + kubectl_cordon | kubectl_uncordon | kubectl_drain | kubectl_top_node) + __kubectl_get_resource_node + return + ;; + kubectl_config_use-context | kubectl_config_rename-context | kubectl_config_delete-context) + __kubectl_config_get_contexts + return + ;; + kubectl_config_delete-cluster) + __kubectl_config_get_clusters + return + ;; + kubectl_cp) + __kubectl_cp + return + ;; + *) + ;; + esac +} + +_kubectl_annotate() +{ + last_command="kubectl_annotate" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--field-selector=") + two_word_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--list") + local_nonpersistent_flags+=("--list") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overwrite") + local_nonpersistent_flags+=("--overwrite") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--resource-version=") + two_word_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version=") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_api-resources() +{ + last_command="kubectl_api-resources" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--api-group=") + two_word_flags+=("--api-group") + local_nonpersistent_flags+=("--api-group") + local_nonpersistent_flags+=("--api-group=") + flags+=("--cached") + local_nonpersistent_flags+=("--cached") + flags+=("--namespaced") + local_nonpersistent_flags+=("--namespaced") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--sort-by=") + two_word_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--verbs=") + two_word_flags+=("--verbs") + local_nonpersistent_flags+=("--verbs") + local_nonpersistent_flags+=("--verbs=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_api-versions() +{ + last_command="kubectl_api-versions" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_apply_edit-last-applied() +{ + last_command="kubectl_apply_edit-last-applied" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--windows-line-endings") + local_nonpersistent_flags+=("--windows-line-endings") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_apply_set-last-applied() +{ + last_command="kubectl_apply_set-last-applied" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--create-annotation") + local_nonpersistent_flags+=("--create-annotation") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_apply_view-last-applied() +{ + last_command="kubectl_apply_view-last-applied" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_apply() +{ + last_command="kubectl_apply" + + command_aliases=() + + commands=() + commands+=("edit-last-applied") + commands+=("set-last-applied") + commands+=("view-last-applied") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--cascade") + local_nonpersistent_flags+=("--cascade") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--force-conflicts") + local_nonpersistent_flags+=("--force-conflicts") + flags+=("--grace-period=") + two_word_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--openapi-patch") + local_nonpersistent_flags+=("--openapi-patch") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overwrite") + local_nonpersistent_flags+=("--overwrite") + flags+=("--prune") + local_nonpersistent_flags+=("--prune") + flags+=("--prune-whitelist=") + two_word_flags+=("--prune-whitelist") + local_nonpersistent_flags+=("--prune-whitelist") + local_nonpersistent_flags+=("--prune-whitelist=") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--server-side") + local_nonpersistent_flags+=("--server-side") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--wait") + local_nonpersistent_flags+=("--wait") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_attach() +{ + last_command="kubectl_attach" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--container=") + two_word_flags+=("--container") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--container") + local_nonpersistent_flags+=("--container=") + local_nonpersistent_flags+=("-c") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--quiet") + flags+=("-q") + local_nonpersistent_flags+=("--quiet") + local_nonpersistent_flags+=("-q") + flags+=("--stdin") + flags+=("-i") + local_nonpersistent_flags+=("--stdin") + local_nonpersistent_flags+=("-i") + flags+=("--tty") + flags+=("-t") + local_nonpersistent_flags+=("--tty") + local_nonpersistent_flags+=("-t") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_auth_can-i() +{ + last_command="kubectl_auth_can-i" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--list") + local_nonpersistent_flags+=("--list") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--quiet") + flags+=("-q") + local_nonpersistent_flags+=("--quiet") + local_nonpersistent_flags+=("-q") + flags+=("--subresource=") + two_word_flags+=("--subresource") + local_nonpersistent_flags+=("--subresource") + local_nonpersistent_flags+=("--subresource=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_auth_reconcile() +{ + last_command="kubectl_auth_reconcile" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--remove-extra-permissions") + local_nonpersistent_flags+=("--remove-extra-permissions") + flags+=("--remove-extra-subjects") + local_nonpersistent_flags+=("--remove-extra-subjects") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_auth() +{ + last_command="kubectl_auth" + + command_aliases=() + + commands=() + commands+=("can-i") + commands+=("reconcile") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_autoscale() +{ + last_command="kubectl_autoscale" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--cpu-percent=") + two_word_flags+=("--cpu-percent") + local_nonpersistent_flags+=("--cpu-percent") + local_nonpersistent_flags+=("--cpu-percent=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--max=") + two_word_flags+=("--max") + local_nonpersistent_flags+=("--max") + local_nonpersistent_flags+=("--max=") + flags+=("--min=") + two_word_flags+=("--min") + local_nonpersistent_flags+=("--min") + local_nonpersistent_flags+=("--min=") + flags+=("--name=") + two_word_flags+=("--name") + local_nonpersistent_flags+=("--name") + local_nonpersistent_flags+=("--name=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--max=") + must_have_one_noun=() + must_have_one_noun+=("deployment") + must_have_one_noun+=("replicaset") + must_have_one_noun+=("replicationcontroller") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_certificate_approve() +{ + last_command="kubectl_certificate_approve" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_certificate_deny() +{ + last_command="kubectl_certificate_deny" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_certificate() +{ + last_command="kubectl_certificate" + + command_aliases=() + + commands=() + commands+=("approve") + commands+=("deny") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_cluster-info_dump() +{ + last_command="kubectl_cluster-info_dump" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--namespaces=") + two_word_flags+=("--namespaces") + local_nonpersistent_flags+=("--namespaces") + local_nonpersistent_flags+=("--namespaces=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--output-directory=") + two_word_flags+=("--output-directory") + local_nonpersistent_flags+=("--output-directory") + local_nonpersistent_flags+=("--output-directory=") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_cluster-info() +{ + last_command="kubectl_cluster-info" + + command_aliases=() + + commands=() + commands+=("dump") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_completion() +{ + last_command="kubectl_completion" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--help") + flags+=("-h") + local_nonpersistent_flags+=("--help") + local_nonpersistent_flags+=("-h") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("bash") + must_have_one_noun+=("zsh") + noun_aliases=() +} + +_kubectl_config_current-context() +{ + last_command="kubectl_config_current-context" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_delete-cluster() +{ + last_command="kubectl_config_delete-cluster" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_delete-context() +{ + last_command="kubectl_config_delete-context" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_delete-user() +{ + last_command="kubectl_config_delete-user" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_get-clusters() +{ + last_command="kubectl_config_get-clusters" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_get-contexts() +{ + last_command="kubectl_config_get-contexts" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_get-users() +{ + last_command="kubectl_config_get-users" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_rename-context() +{ + last_command="kubectl_config_rename-context" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_set() +{ + last_command="kubectl_config_set" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--set-raw-bytes") + local_nonpersistent_flags+=("--set-raw-bytes") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_set-cluster() +{ + last_command="kubectl_config_set-cluster" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--embed-certs") + local_nonpersistent_flags+=("--embed-certs") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_set-context() +{ + last_command="kubectl_config_set-context" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--current") + local_nonpersistent_flags+=("--current") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_set-credentials() +{ + last_command="kubectl_config_set-credentials" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--auth-provider=") + two_word_flags+=("--auth-provider") + local_nonpersistent_flags+=("--auth-provider") + local_nonpersistent_flags+=("--auth-provider=") + flags+=("--auth-provider-arg=") + two_word_flags+=("--auth-provider-arg") + local_nonpersistent_flags+=("--auth-provider-arg") + local_nonpersistent_flags+=("--auth-provider-arg=") + flags+=("--embed-certs") + local_nonpersistent_flags+=("--embed-certs") + flags+=("--exec-api-version=") + two_word_flags+=("--exec-api-version") + local_nonpersistent_flags+=("--exec-api-version") + local_nonpersistent_flags+=("--exec-api-version=") + flags+=("--exec-arg=") + two_word_flags+=("--exec-arg") + local_nonpersistent_flags+=("--exec-arg") + local_nonpersistent_flags+=("--exec-arg=") + flags+=("--exec-command=") + two_word_flags+=("--exec-command") + local_nonpersistent_flags+=("--exec-command") + local_nonpersistent_flags+=("--exec-command=") + flags+=("--exec-env=") + two_word_flags+=("--exec-env") + local_nonpersistent_flags+=("--exec-env") + local_nonpersistent_flags+=("--exec-env=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_unset() +{ + last_command="kubectl_config_unset" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_use-context() +{ + last_command="kubectl_config_use-context" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config_view() +{ + last_command="kubectl_config_view" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--flatten") + local_nonpersistent_flags+=("--flatten") + flags+=("--merge") + local_nonpersistent_flags+=("--merge") + flags+=("--minify") + local_nonpersistent_flags+=("--minify") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--raw") + local_nonpersistent_flags+=("--raw") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_config() +{ + last_command="kubectl_config" + + command_aliases=() + + commands=() + commands+=("current-context") + commands+=("delete-cluster") + commands+=("delete-context") + commands+=("delete-user") + commands+=("get-clusters") + commands+=("get-contexts") + commands+=("get-users") + commands+=("rename-context") + commands+=("set") + commands+=("set-cluster") + commands+=("set-context") + commands+=("set-credentials") + commands+=("unset") + commands+=("use-context") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("use") + aliashash["use"]="use-context" + fi + commands+=("view") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_cordon() +{ + last_command="kubectl_cordon" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_cp() +{ + last_command="kubectl_cp" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--container=") + two_word_flags+=("--container") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--container") + local_nonpersistent_flags+=("--container=") + local_nonpersistent_flags+=("-c") + flags+=("--no-preserve") + local_nonpersistent_flags+=("--no-preserve") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_clusterrole() +{ + last_command="kubectl_create_clusterrole" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--aggregation-rule=") + two_word_flags+=("--aggregation-rule") + local_nonpersistent_flags+=("--aggregation-rule") + local_nonpersistent_flags+=("--aggregation-rule=") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--non-resource-url=") + two_word_flags+=("--non-resource-url") + local_nonpersistent_flags+=("--non-resource-url") + local_nonpersistent_flags+=("--non-resource-url=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--resource=") + two_word_flags+=("--resource") + local_nonpersistent_flags+=("--resource") + local_nonpersistent_flags+=("--resource=") + flags+=("--resource-name=") + two_word_flags+=("--resource-name") + local_nonpersistent_flags+=("--resource-name") + local_nonpersistent_flags+=("--resource-name=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--verb=") + two_word_flags+=("--verb") + local_nonpersistent_flags+=("--verb") + local_nonpersistent_flags+=("--verb=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_clusterrolebinding() +{ + last_command="kubectl_create_clusterrolebinding" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--clusterrole=") + two_word_flags+=("--clusterrole") + flags_with_completion+=("--clusterrole") + flags_completion+=("__kubectl_get_resource_clusterrole") + local_nonpersistent_flags+=("--clusterrole") + local_nonpersistent_flags+=("--clusterrole=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--group=") + two_word_flags+=("--group") + local_nonpersistent_flags+=("--group") + local_nonpersistent_flags+=("--group=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--serviceaccount=") + two_word_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--clusterrole=") + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_configmap() +{ + last_command="kubectl_create_configmap" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--append-hash") + local_nonpersistent_flags+=("--append-hash") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--from-env-file=") + two_word_flags+=("--from-env-file") + local_nonpersistent_flags+=("--from-env-file") + local_nonpersistent_flags+=("--from-env-file=") + flags+=("--from-file=") + two_word_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file=") + flags+=("--from-literal=") + two_word_flags+=("--from-literal") + local_nonpersistent_flags+=("--from-literal") + local_nonpersistent_flags+=("--from-literal=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_cronjob() +{ + last_command="kubectl_create_cronjob" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--image=") + two_word_flags+=("--image") + local_nonpersistent_flags+=("--image") + local_nonpersistent_flags+=("--image=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--restart=") + two_word_flags+=("--restart") + local_nonpersistent_flags+=("--restart") + local_nonpersistent_flags+=("--restart=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--schedule=") + two_word_flags+=("--schedule") + local_nonpersistent_flags+=("--schedule") + local_nonpersistent_flags+=("--schedule=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--image=") + must_have_one_flag+=("--schedule=") + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_deployment() +{ + last_command="kubectl_create_deployment" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--image=") + two_word_flags+=("--image") + local_nonpersistent_flags+=("--image") + local_nonpersistent_flags+=("--image=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--port=") + two_word_flags+=("--port") + local_nonpersistent_flags+=("--port") + local_nonpersistent_flags+=("--port=") + flags+=("--replicas=") + two_word_flags+=("--replicas") + two_word_flags+=("-r") + local_nonpersistent_flags+=("--replicas") + local_nonpersistent_flags+=("--replicas=") + local_nonpersistent_flags+=("-r") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--image=") + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_ingress() +{ + last_command="kubectl_create_ingress" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--annotation=") + two_word_flags+=("--annotation") + local_nonpersistent_flags+=("--annotation") + local_nonpersistent_flags+=("--annotation=") + flags+=("--class=") + two_word_flags+=("--class") + local_nonpersistent_flags+=("--class") + local_nonpersistent_flags+=("--class=") + flags+=("--default-backend=") + two_word_flags+=("--default-backend") + local_nonpersistent_flags+=("--default-backend") + local_nonpersistent_flags+=("--default-backend=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--rule=") + two_word_flags+=("--rule") + local_nonpersistent_flags+=("--rule") + local_nonpersistent_flags+=("--rule=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_job() +{ + last_command="kubectl_create_job" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--from=") + two_word_flags+=("--from") + local_nonpersistent_flags+=("--from") + local_nonpersistent_flags+=("--from=") + flags+=("--image=") + two_word_flags+=("--image") + local_nonpersistent_flags+=("--image") + local_nonpersistent_flags+=("--image=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_namespace() +{ + last_command="kubectl_create_namespace" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_poddisruptionbudget() +{ + last_command="kubectl_create_poddisruptionbudget" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--max-unavailable=") + two_word_flags+=("--max-unavailable") + local_nonpersistent_flags+=("--max-unavailable") + local_nonpersistent_flags+=("--max-unavailable=") + flags+=("--min-available=") + two_word_flags+=("--min-available") + local_nonpersistent_flags+=("--min-available") + local_nonpersistent_flags+=("--min-available=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--selector=") + two_word_flags+=("--selector") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_priorityclass() +{ + last_command="kubectl_create_priorityclass" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--description=") + two_word_flags+=("--description") + local_nonpersistent_flags+=("--description") + local_nonpersistent_flags+=("--description=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--global-default") + local_nonpersistent_flags+=("--global-default") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--preemption-policy=") + two_word_flags+=("--preemption-policy") + local_nonpersistent_flags+=("--preemption-policy") + local_nonpersistent_flags+=("--preemption-policy=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--value=") + two_word_flags+=("--value") + local_nonpersistent_flags+=("--value") + local_nonpersistent_flags+=("--value=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_quota() +{ + last_command="kubectl_create_quota" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--hard=") + two_word_flags+=("--hard") + local_nonpersistent_flags+=("--hard") + local_nonpersistent_flags+=("--hard=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--scopes=") + two_word_flags+=("--scopes") + local_nonpersistent_flags+=("--scopes") + local_nonpersistent_flags+=("--scopes=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_role() +{ + last_command="kubectl_create_role" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--resource=") + two_word_flags+=("--resource") + local_nonpersistent_flags+=("--resource") + local_nonpersistent_flags+=("--resource=") + flags+=("--resource-name=") + two_word_flags+=("--resource-name") + local_nonpersistent_flags+=("--resource-name") + local_nonpersistent_flags+=("--resource-name=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--verb=") + two_word_flags+=("--verb") + local_nonpersistent_flags+=("--verb") + local_nonpersistent_flags+=("--verb=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_rolebinding() +{ + last_command="kubectl_create_rolebinding" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--clusterrole=") + two_word_flags+=("--clusterrole") + local_nonpersistent_flags+=("--clusterrole") + local_nonpersistent_flags+=("--clusterrole=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--group=") + two_word_flags+=("--group") + local_nonpersistent_flags+=("--group") + local_nonpersistent_flags+=("--group=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--role=") + two_word_flags+=("--role") + local_nonpersistent_flags+=("--role") + local_nonpersistent_flags+=("--role=") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--serviceaccount=") + two_word_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_secret_docker-registry() +{ + last_command="kubectl_create_secret_docker-registry" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--append-hash") + local_nonpersistent_flags+=("--append-hash") + flags+=("--docker-email=") + two_word_flags+=("--docker-email") + local_nonpersistent_flags+=("--docker-email") + local_nonpersistent_flags+=("--docker-email=") + flags+=("--docker-password=") + two_word_flags+=("--docker-password") + local_nonpersistent_flags+=("--docker-password") + local_nonpersistent_flags+=("--docker-password=") + flags+=("--docker-server=") + two_word_flags+=("--docker-server") + local_nonpersistent_flags+=("--docker-server") + local_nonpersistent_flags+=("--docker-server=") + flags+=("--docker-username=") + two_word_flags+=("--docker-username") + local_nonpersistent_flags+=("--docker-username") + local_nonpersistent_flags+=("--docker-username=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--from-file=") + two_word_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_secret_generic() +{ + last_command="kubectl_create_secret_generic" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--append-hash") + local_nonpersistent_flags+=("--append-hash") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--from-env-file=") + two_word_flags+=("--from-env-file") + local_nonpersistent_flags+=("--from-env-file") + local_nonpersistent_flags+=("--from-env-file=") + flags+=("--from-file=") + two_word_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file") + local_nonpersistent_flags+=("--from-file=") + flags+=("--from-literal=") + two_word_flags+=("--from-literal") + local_nonpersistent_flags+=("--from-literal") + local_nonpersistent_flags+=("--from-literal=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--type=") + two_word_flags+=("--type") + local_nonpersistent_flags+=("--type") + local_nonpersistent_flags+=("--type=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_secret_tls() +{ + last_command="kubectl_create_secret_tls" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--append-hash") + local_nonpersistent_flags+=("--append-hash") + flags+=("--cert=") + two_word_flags+=("--cert") + local_nonpersistent_flags+=("--cert") + local_nonpersistent_flags+=("--cert=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--key=") + two_word_flags+=("--key") + local_nonpersistent_flags+=("--key") + local_nonpersistent_flags+=("--key=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_secret() +{ + last_command="kubectl_create_secret" + + command_aliases=() + + commands=() + commands+=("docker-registry") + commands+=("generic") + commands+=("tls") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_service_clusterip() +{ + last_command="kubectl_create_service_clusterip" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--clusterip=") + two_word_flags+=("--clusterip") + local_nonpersistent_flags+=("--clusterip") + local_nonpersistent_flags+=("--clusterip=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--tcp=") + two_word_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_service_externalname() +{ + last_command="kubectl_create_service_externalname" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--external-name=") + two_word_flags+=("--external-name") + local_nonpersistent_flags+=("--external-name") + local_nonpersistent_flags+=("--external-name=") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--tcp=") + two_word_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--external-name=") + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_service_loadbalancer() +{ + last_command="kubectl_create_service_loadbalancer" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--tcp=") + two_word_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_service_nodeport() +{ + last_command="kubectl_create_service_nodeport" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--node-port=") + two_word_flags+=("--node-port") + local_nonpersistent_flags+=("--node-port") + local_nonpersistent_flags+=("--node-port=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--tcp=") + two_word_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp") + local_nonpersistent_flags+=("--tcp=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_service() +{ + last_command="kubectl_create_service" + + command_aliases=() + + commands=() + commands+=("clusterip") + commands+=("externalname") + commands+=("loadbalancer") + commands+=("nodeport") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create_serviceaccount() +{ + last_command="kubectl_create_serviceaccount" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_create() +{ + last_command="kubectl_create" + + command_aliases=() + + commands=() + commands+=("clusterrole") + commands+=("clusterrolebinding") + commands+=("configmap") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("cm") + aliashash["cm"]="configmap" + fi + commands+=("cronjob") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("cj") + aliashash["cj"]="cronjob" + fi + commands+=("deployment") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("deploy") + aliashash["deploy"]="deployment" + fi + commands+=("ingress") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("ing") + aliashash["ing"]="ingress" + fi + commands+=("job") + commands+=("namespace") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("ns") + aliashash["ns"]="namespace" + fi + commands+=("poddisruptionbudget") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("pdb") + aliashash["pdb"]="poddisruptionbudget" + fi + commands+=("priorityclass") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("pc") + aliashash["pc"]="priorityclass" + fi + commands+=("quota") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("resourcequota") + aliashash["resourcequota"]="quota" + fi + commands+=("role") + commands+=("rolebinding") + commands+=("secret") + commands+=("service") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("svc") + aliashash["svc"]="service" + fi + commands+=("serviceaccount") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("sa") + aliashash["sa"]="serviceaccount" + fi + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--edit") + local_nonpersistent_flags+=("--edit") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--raw=") + two_word_flags+=("--raw") + local_nonpersistent_flags+=("--raw") + local_nonpersistent_flags+=("--raw=") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--windows-line-endings") + local_nonpersistent_flags+=("--windows-line-endings") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_debug() +{ + last_command="kubectl_debug" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--arguments-only") + local_nonpersistent_flags+=("--arguments-only") + flags+=("--attach") + local_nonpersistent_flags+=("--attach") + flags+=("--container=") + two_word_flags+=("--container") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--container") + local_nonpersistent_flags+=("--container=") + local_nonpersistent_flags+=("-c") + flags+=("--copy-to=") + two_word_flags+=("--copy-to") + local_nonpersistent_flags+=("--copy-to") + local_nonpersistent_flags+=("--copy-to=") + flags+=("--env=") + two_word_flags+=("--env") + local_nonpersistent_flags+=("--env") + local_nonpersistent_flags+=("--env=") + flags+=("--image=") + two_word_flags+=("--image") + local_nonpersistent_flags+=("--image") + local_nonpersistent_flags+=("--image=") + flags+=("--image-pull-policy=") + two_word_flags+=("--image-pull-policy") + local_nonpersistent_flags+=("--image-pull-policy") + local_nonpersistent_flags+=("--image-pull-policy=") + flags+=("--quiet") + flags+=("-q") + local_nonpersistent_flags+=("--quiet") + local_nonpersistent_flags+=("-q") + flags+=("--replace") + local_nonpersistent_flags+=("--replace") + flags+=("--same-node") + local_nonpersistent_flags+=("--same-node") + flags+=("--set-image=") + two_word_flags+=("--set-image") + local_nonpersistent_flags+=("--set-image") + local_nonpersistent_flags+=("--set-image=") + flags+=("--share-processes") + local_nonpersistent_flags+=("--share-processes") + flags+=("--stdin") + flags+=("-i") + local_nonpersistent_flags+=("--stdin") + local_nonpersistent_flags+=("-i") + flags+=("--target=") + two_word_flags+=("--target") + local_nonpersistent_flags+=("--target") + local_nonpersistent_flags+=("--target=") + flags+=("--tty") + flags+=("-t") + local_nonpersistent_flags+=("--tty") + local_nonpersistent_flags+=("-t") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_delete() +{ + last_command="kubectl_delete" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--cascade") + local_nonpersistent_flags+=("--cascade") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-selector=") + two_word_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--grace-period=") + two_word_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period=") + flags+=("--ignore-not-found") + local_nonpersistent_flags+=("--ignore-not-found") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--now") + local_nonpersistent_flags+=("--now") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--raw=") + two_word_flags+=("--raw") + local_nonpersistent_flags+=("--raw") + local_nonpersistent_flags+=("--raw=") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--wait") + local_nonpersistent_flags+=("--wait") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_describe() +{ + last_command="kubectl_describe" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-events") + local_nonpersistent_flags+=("--show-events") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_diff() +{ + last_command="kubectl_diff" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force-conflicts") + local_nonpersistent_flags+=("--force-conflicts") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--server-side") + local_nonpersistent_flags+=("--server-side") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_drain() +{ + last_command="kubectl_drain" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--delete-emptydir-data") + local_nonpersistent_flags+=("--delete-emptydir-data") + flags+=("--disable-eviction") + local_nonpersistent_flags+=("--disable-eviction") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--grace-period=") + two_word_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period=") + flags+=("--ignore-daemonsets") + local_nonpersistent_flags+=("--ignore-daemonsets") + flags+=("--ignore-errors") + local_nonpersistent_flags+=("--ignore-errors") + flags+=("--pod-selector=") + two_word_flags+=("--pod-selector") + local_nonpersistent_flags+=("--pod-selector") + local_nonpersistent_flags+=("--pod-selector=") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--skip-wait-for-delete-timeout=") + two_word_flags+=("--skip-wait-for-delete-timeout") + local_nonpersistent_flags+=("--skip-wait-for-delete-timeout") + local_nonpersistent_flags+=("--skip-wait-for-delete-timeout=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_edit() +{ + last_command="kubectl_edit" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--output-patch") + local_nonpersistent_flags+=("--output-patch") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--windows-line-endings") + local_nonpersistent_flags+=("--windows-line-endings") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_exec() +{ + last_command="kubectl_exec" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--container=") + two_word_flags+=("--container") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--container") + local_nonpersistent_flags+=("--container=") + local_nonpersistent_flags+=("-c") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--quiet") + flags+=("-q") + local_nonpersistent_flags+=("--quiet") + local_nonpersistent_flags+=("-q") + flags+=("--stdin") + flags+=("-i") + local_nonpersistent_flags+=("--stdin") + local_nonpersistent_flags+=("-i") + flags+=("--tty") + flags+=("-t") + local_nonpersistent_flags+=("--tty") + local_nonpersistent_flags+=("-t") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_explain() +{ + last_command="kubectl_explain" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--api-version=") + two_word_flags+=("--api-version") + local_nonpersistent_flags+=("--api-version") + local_nonpersistent_flags+=("--api-version=") + flags+=("--recursive") + local_nonpersistent_flags+=("--recursive") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_expose() +{ + last_command="kubectl_expose" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--cluster-ip=") + two_word_flags+=("--cluster-ip") + local_nonpersistent_flags+=("--cluster-ip") + local_nonpersistent_flags+=("--cluster-ip=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--external-ip=") + two_word_flags+=("--external-ip") + local_nonpersistent_flags+=("--external-ip") + local_nonpersistent_flags+=("--external-ip=") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--generator=") + two_word_flags+=("--generator") + local_nonpersistent_flags+=("--generator") + local_nonpersistent_flags+=("--generator=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--labels=") + two_word_flags+=("--labels") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--labels") + local_nonpersistent_flags+=("--labels=") + local_nonpersistent_flags+=("-l") + flags+=("--load-balancer-ip=") + two_word_flags+=("--load-balancer-ip") + local_nonpersistent_flags+=("--load-balancer-ip") + local_nonpersistent_flags+=("--load-balancer-ip=") + flags+=("--name=") + two_word_flags+=("--name") + local_nonpersistent_flags+=("--name") + local_nonpersistent_flags+=("--name=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overrides=") + two_word_flags+=("--overrides") + local_nonpersistent_flags+=("--overrides") + local_nonpersistent_flags+=("--overrides=") + flags+=("--port=") + two_word_flags+=("--port") + local_nonpersistent_flags+=("--port") + local_nonpersistent_flags+=("--port=") + flags+=("--protocol=") + two_word_flags+=("--protocol") + local_nonpersistent_flags+=("--protocol") + local_nonpersistent_flags+=("--protocol=") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--selector=") + two_word_flags+=("--selector") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + flags+=("--session-affinity=") + two_word_flags+=("--session-affinity") + local_nonpersistent_flags+=("--session-affinity") + local_nonpersistent_flags+=("--session-affinity=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--target-port=") + two_word_flags+=("--target-port") + local_nonpersistent_flags+=("--target-port") + local_nonpersistent_flags+=("--target-port=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--type=") + two_word_flags+=("--type") + local_nonpersistent_flags+=("--type") + local_nonpersistent_flags+=("--type=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("deployment") + must_have_one_noun+=("pod") + must_have_one_noun+=("replicaset") + must_have_one_noun+=("replicationcontroller") + must_have_one_noun+=("service") + noun_aliases=() +} + +_kubectl_get() +{ + last_command="kubectl_get" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--chunk-size=") + two_word_flags+=("--chunk-size") + local_nonpersistent_flags+=("--chunk-size") + local_nonpersistent_flags+=("--chunk-size=") + flags+=("--field-selector=") + two_word_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--ignore-not-found") + local_nonpersistent_flags+=("--ignore-not-found") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--label-columns=") + two_word_flags+=("--label-columns") + two_word_flags+=("-L") + local_nonpersistent_flags+=("--label-columns") + local_nonpersistent_flags+=("--label-columns=") + local_nonpersistent_flags+=("-L") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--output-watch-events") + local_nonpersistent_flags+=("--output-watch-events") + flags+=("--raw=") + two_word_flags+=("--raw") + local_nonpersistent_flags+=("--raw") + local_nonpersistent_flags+=("--raw=") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--server-print") + local_nonpersistent_flags+=("--server-print") + flags+=("--show-kind") + local_nonpersistent_flags+=("--show-kind") + flags+=("--show-labels") + local_nonpersistent_flags+=("--show-labels") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--sort-by=") + two_word_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--watch") + flags+=("-w") + local_nonpersistent_flags+=("--watch") + local_nonpersistent_flags+=("-w") + flags+=("--watch-only") + local_nonpersistent_flags+=("--watch-only") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_help() +{ + last_command="kubectl_help" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + has_completion_function=1 + noun_aliases=() +} + +_kubectl_kustomize() +{ + last_command="kubectl_kustomize" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--enable-alpha-plugins") + local_nonpersistent_flags+=("--enable-alpha-plugins") + flags+=("--enable-helm") + local_nonpersistent_flags+=("--enable-helm") + flags+=("--enable-managedby-label") + local_nonpersistent_flags+=("--enable-managedby-label") + flags+=("--env=") + two_word_flags+=("--env") + two_word_flags+=("-e") + local_nonpersistent_flags+=("--env") + local_nonpersistent_flags+=("--env=") + local_nonpersistent_flags+=("-e") + flags+=("--helm-command=") + two_word_flags+=("--helm-command") + local_nonpersistent_flags+=("--helm-command") + local_nonpersistent_flags+=("--helm-command=") + flags+=("--load-restrictor=") + two_word_flags+=("--load-restrictor") + local_nonpersistent_flags+=("--load-restrictor") + local_nonpersistent_flags+=("--load-restrictor=") + flags+=("--mount=") + two_word_flags+=("--mount") + local_nonpersistent_flags+=("--mount") + local_nonpersistent_flags+=("--mount=") + flags+=("--network") + local_nonpersistent_flags+=("--network") + flags+=("--network-name=") + two_word_flags+=("--network-name") + local_nonpersistent_flags+=("--network-name") + local_nonpersistent_flags+=("--network-name=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--reorder=") + two_word_flags+=("--reorder") + local_nonpersistent_flags+=("--reorder") + local_nonpersistent_flags+=("--reorder=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_label() +{ + last_command="kubectl_label" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--field-selector=") + two_word_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--list") + local_nonpersistent_flags+=("--list") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overwrite") + local_nonpersistent_flags+=("--overwrite") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--resource-version=") + two_word_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version=") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_logs() +{ + last_command="kubectl_logs" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-containers") + local_nonpersistent_flags+=("--all-containers") + flags+=("--container=") + two_word_flags+=("--container") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--container") + local_nonpersistent_flags+=("--container=") + local_nonpersistent_flags+=("-c") + flags+=("--follow") + flags+=("-f") + local_nonpersistent_flags+=("--follow") + local_nonpersistent_flags+=("-f") + flags+=("--ignore-errors") + local_nonpersistent_flags+=("--ignore-errors") + flags+=("--insecure-skip-tls-verify-backend") + local_nonpersistent_flags+=("--insecure-skip-tls-verify-backend") + flags+=("--limit-bytes=") + two_word_flags+=("--limit-bytes") + local_nonpersistent_flags+=("--limit-bytes") + local_nonpersistent_flags+=("--limit-bytes=") + flags+=("--max-log-requests=") + two_word_flags+=("--max-log-requests") + local_nonpersistent_flags+=("--max-log-requests") + local_nonpersistent_flags+=("--max-log-requests=") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--prefix") + local_nonpersistent_flags+=("--prefix") + flags+=("--previous") + flags+=("-p") + local_nonpersistent_flags+=("--previous") + local_nonpersistent_flags+=("-p") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--since=") + two_word_flags+=("--since") + local_nonpersistent_flags+=("--since") + local_nonpersistent_flags+=("--since=") + flags+=("--since-time=") + two_word_flags+=("--since-time") + local_nonpersistent_flags+=("--since-time") + local_nonpersistent_flags+=("--since-time=") + flags+=("--tail=") + two_word_flags+=("--tail") + local_nonpersistent_flags+=("--tail") + local_nonpersistent_flags+=("--tail=") + flags+=("--timestamps") + local_nonpersistent_flags+=("--timestamps") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_options() +{ + last_command="kubectl_options" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_patch() +{ + last_command="kubectl_patch" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--patch=") + two_word_flags+=("--patch") + two_word_flags+=("-p") + local_nonpersistent_flags+=("--patch") + local_nonpersistent_flags+=("--patch=") + local_nonpersistent_flags+=("-p") + flags+=("--patch-file=") + two_word_flags+=("--patch-file") + local_nonpersistent_flags+=("--patch-file") + local_nonpersistent_flags+=("--patch-file=") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--type=") + two_word_flags+=("--type") + local_nonpersistent_flags+=("--type") + local_nonpersistent_flags+=("--type=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_plugin_list() +{ + last_command="kubectl_plugin_list" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--name-only") + local_nonpersistent_flags+=("--name-only") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_plugin() +{ + last_command="kubectl_plugin" + + command_aliases=() + + commands=() + commands+=("list") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_port-forward() +{ + last_command="kubectl_port-forward" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--address=") + two_word_flags+=("--address") + local_nonpersistent_flags+=("--address") + local_nonpersistent_flags+=("--address=") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_proxy() +{ + last_command="kubectl_proxy" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--accept-hosts=") + two_word_flags+=("--accept-hosts") + local_nonpersistent_flags+=("--accept-hosts") + local_nonpersistent_flags+=("--accept-hosts=") + flags+=("--accept-paths=") + two_word_flags+=("--accept-paths") + local_nonpersistent_flags+=("--accept-paths") + local_nonpersistent_flags+=("--accept-paths=") + flags+=("--address=") + two_word_flags+=("--address") + local_nonpersistent_flags+=("--address") + local_nonpersistent_flags+=("--address=") + flags+=("--api-prefix=") + two_word_flags+=("--api-prefix") + local_nonpersistent_flags+=("--api-prefix") + local_nonpersistent_flags+=("--api-prefix=") + flags+=("--disable-filter") + local_nonpersistent_flags+=("--disable-filter") + flags+=("--keepalive=") + two_word_flags+=("--keepalive") + local_nonpersistent_flags+=("--keepalive") + local_nonpersistent_flags+=("--keepalive=") + flags+=("--port=") + two_word_flags+=("--port") + two_word_flags+=("-p") + local_nonpersistent_flags+=("--port") + local_nonpersistent_flags+=("--port=") + local_nonpersistent_flags+=("-p") + flags+=("--reject-methods=") + two_word_flags+=("--reject-methods") + local_nonpersistent_flags+=("--reject-methods") + local_nonpersistent_flags+=("--reject-methods=") + flags+=("--reject-paths=") + two_word_flags+=("--reject-paths") + local_nonpersistent_flags+=("--reject-paths") + local_nonpersistent_flags+=("--reject-paths=") + flags+=("--unix-socket=") + two_word_flags+=("--unix-socket") + two_word_flags+=("-u") + local_nonpersistent_flags+=("--unix-socket") + local_nonpersistent_flags+=("--unix-socket=") + local_nonpersistent_flags+=("-u") + flags+=("--www=") + two_word_flags+=("--www") + two_word_flags+=("-w") + local_nonpersistent_flags+=("--www") + local_nonpersistent_flags+=("--www=") + local_nonpersistent_flags+=("-w") + flags+=("--www-prefix=") + two_word_flags+=("--www-prefix") + two_word_flags+=("-P") + local_nonpersistent_flags+=("--www-prefix") + local_nonpersistent_flags+=("--www-prefix=") + local_nonpersistent_flags+=("-P") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_replace() +{ + last_command="kubectl_replace" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--cascade") + local_nonpersistent_flags+=("--cascade") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--grace-period=") + two_word_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--raw=") + two_word_flags+=("--raw") + local_nonpersistent_flags+=("--raw") + local_nonpersistent_flags+=("--raw=") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--wait") + local_nonpersistent_flags+=("--wait") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_rollout_history() +{ + last_command="kubectl_rollout_history" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--revision=") + two_word_flags+=("--revision") + local_nonpersistent_flags+=("--revision") + local_nonpersistent_flags+=("--revision=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("daemonset") + must_have_one_noun+=("deployment") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_rollout_pause() +{ + last_command="kubectl_rollout_pause" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("deployment") + noun_aliases=() +} + +_kubectl_rollout_restart() +{ + last_command="kubectl_rollout_restart" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("daemonset") + must_have_one_noun+=("deployment") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_rollout_resume() +{ + last_command="kubectl_rollout_resume" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("deployment") + noun_aliases=() +} + +_kubectl_rollout_status() +{ + last_command="kubectl_rollout_status" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--revision=") + two_word_flags+=("--revision") + local_nonpersistent_flags+=("--revision") + local_nonpersistent_flags+=("--revision=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--watch") + flags+=("-w") + local_nonpersistent_flags+=("--watch") + local_nonpersistent_flags+=("-w") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("daemonset") + must_have_one_noun+=("deployment") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_rollout_undo() +{ + last_command="kubectl_rollout_undo" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--to-revision=") + two_word_flags+=("--to-revision") + local_nonpersistent_flags+=("--to-revision") + local_nonpersistent_flags+=("--to-revision=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("daemonset") + must_have_one_noun+=("deployment") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_rollout() +{ + last_command="kubectl_rollout" + + command_aliases=() + + commands=() + commands+=("history") + commands+=("pause") + commands+=("restart") + commands+=("resume") + commands+=("status") + commands+=("undo") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_run() +{ + last_command="kubectl_run" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--annotations=") + two_word_flags+=("--annotations") + local_nonpersistent_flags+=("--annotations") + local_nonpersistent_flags+=("--annotations=") + flags+=("--attach") + local_nonpersistent_flags+=("--attach") + flags+=("--cascade") + local_nonpersistent_flags+=("--cascade") + flags+=("--command") + local_nonpersistent_flags+=("--command") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--env=") + two_word_flags+=("--env") + local_nonpersistent_flags+=("--env") + local_nonpersistent_flags+=("--env=") + flags+=("--expose") + local_nonpersistent_flags+=("--expose") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--force") + local_nonpersistent_flags+=("--force") + flags+=("--grace-period=") + two_word_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period") + local_nonpersistent_flags+=("--grace-period=") + flags+=("--image=") + two_word_flags+=("--image") + local_nonpersistent_flags+=("--image") + local_nonpersistent_flags+=("--image=") + flags+=("--image-pull-policy=") + two_word_flags+=("--image-pull-policy") + local_nonpersistent_flags+=("--image-pull-policy") + local_nonpersistent_flags+=("--image-pull-policy=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--labels=") + two_word_flags+=("--labels") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--labels") + local_nonpersistent_flags+=("--labels=") + local_nonpersistent_flags+=("-l") + flags+=("--leave-stdin-open") + local_nonpersistent_flags+=("--leave-stdin-open") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overrides=") + two_word_flags+=("--overrides") + local_nonpersistent_flags+=("--overrides") + local_nonpersistent_flags+=("--overrides=") + flags+=("--pod-running-timeout=") + two_word_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout") + local_nonpersistent_flags+=("--pod-running-timeout=") + flags+=("--port=") + two_word_flags+=("--port") + local_nonpersistent_flags+=("--port") + local_nonpersistent_flags+=("--port=") + flags+=("--privileged") + local_nonpersistent_flags+=("--privileged") + flags+=("--quiet") + flags+=("-q") + local_nonpersistent_flags+=("--quiet") + local_nonpersistent_flags+=("-q") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--restart=") + two_word_flags+=("--restart") + local_nonpersistent_flags+=("--restart") + local_nonpersistent_flags+=("--restart=") + flags+=("--rm") + local_nonpersistent_flags+=("--rm") + flags+=("--save-config") + local_nonpersistent_flags+=("--save-config") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--stdin") + flags+=("-i") + local_nonpersistent_flags+=("--stdin") + local_nonpersistent_flags+=("-i") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--tty") + flags+=("-t") + local_nonpersistent_flags+=("--tty") + local_nonpersistent_flags+=("-t") + flags+=("--wait") + local_nonpersistent_flags+=("--wait") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--image=") + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_scale() +{ + last_command="kubectl_scale" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--current-replicas=") + two_word_flags+=("--current-replicas") + local_nonpersistent_flags+=("--current-replicas") + local_nonpersistent_flags+=("--current-replicas=") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--replicas=") + two_word_flags+=("--replicas") + local_nonpersistent_flags+=("--replicas") + local_nonpersistent_flags+=("--replicas=") + flags+=("--resource-version=") + two_word_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version=") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_flag+=("--replicas=") + must_have_one_noun=() + must_have_one_noun+=("deployment") + must_have_one_noun+=("replicaset") + must_have_one_noun+=("replicationcontroller") + must_have_one_noun+=("statefulset") + noun_aliases=() +} + +_kubectl_set_env() +{ + last_command="kubectl_set_env" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--containers=") + two_word_flags+=("--containers") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--containers") + local_nonpersistent_flags+=("--containers=") + local_nonpersistent_flags+=("-c") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--env=") + two_word_flags+=("--env") + two_word_flags+=("-e") + local_nonpersistent_flags+=("--env") + local_nonpersistent_flags+=("--env=") + local_nonpersistent_flags+=("-e") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--from=") + two_word_flags+=("--from") + local_nonpersistent_flags+=("--from") + local_nonpersistent_flags+=("--from=") + flags+=("--keys=") + two_word_flags+=("--keys") + local_nonpersistent_flags+=("--keys") + local_nonpersistent_flags+=("--keys=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--list") + local_nonpersistent_flags+=("--list") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overwrite") + local_nonpersistent_flags+=("--overwrite") + flags+=("--prefix=") + two_word_flags+=("--prefix") + local_nonpersistent_flags+=("--prefix") + local_nonpersistent_flags+=("--prefix=") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--resolve") + local_nonpersistent_flags+=("--resolve") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set_image() +{ + last_command="kubectl_set_image" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set_resources() +{ + last_command="kubectl_set_resources" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--containers=") + two_word_flags+=("--containers") + two_word_flags+=("-c") + local_nonpersistent_flags+=("--containers") + local_nonpersistent_flags+=("--containers=") + local_nonpersistent_flags+=("-c") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--limits=") + two_word_flags+=("--limits") + local_nonpersistent_flags+=("--limits") + local_nonpersistent_flags+=("--limits=") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--requests=") + two_word_flags+=("--requests") + local_nonpersistent_flags+=("--requests") + local_nonpersistent_flags+=("--requests=") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set_selector() +{ + last_command="kubectl_set_selector" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--resource-version=") + two_word_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version") + local_nonpersistent_flags+=("--resource-version=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set_serviceaccount() +{ + last_command="kubectl_set_serviceaccount" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--record") + local_nonpersistent_flags+=("--record") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set_subject() +{ + last_command="kubectl_set_subject" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--group=") + two_word_flags+=("--group") + local_nonpersistent_flags+=("--group") + local_nonpersistent_flags+=("--group=") + flags+=("--kustomize=") + two_word_flags+=("--kustomize") + two_word_flags+=("-k") + local_nonpersistent_flags+=("--kustomize") + local_nonpersistent_flags+=("--kustomize=") + local_nonpersistent_flags+=("-k") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--serviceaccount=") + two_word_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount") + local_nonpersistent_flags+=("--serviceaccount=") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_set() +{ + last_command="kubectl_set" + + command_aliases=() + + commands=() + commands+=("env") + commands+=("image") + commands+=("resources") + commands+=("selector") + commands+=("serviceaccount") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("sa") + aliashash["sa"]="serviceaccount" + fi + commands+=("subject") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_taint() +{ + last_command="kubectl_taint" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--field-manager=") + two_word_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager") + local_nonpersistent_flags+=("--field-manager=") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--overwrite") + local_nonpersistent_flags+=("--overwrite") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--validate") + local_nonpersistent_flags+=("--validate") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + must_have_one_noun+=("node") + noun_aliases=() +} + +_kubectl_top_node() +{ + last_command="kubectl_top_node" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--sort-by=") + two_word_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--use-protocol-buffers") + local_nonpersistent_flags+=("--use-protocol-buffers") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_top_pod() +{ + last_command="kubectl_top_pod" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--containers") + local_nonpersistent_flags+=("--containers") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--sort-by=") + two_word_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--use-protocol-buffers") + local_nonpersistent_flags+=("--use-protocol-buffers") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_top() +{ + last_command="kubectl_top" + + command_aliases=() + + commands=() + commands+=("node") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("no") + aliashash["no"]="node" + command_aliases+=("nodes") + aliashash["nodes"]="node" + fi + commands+=("pod") + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + command_aliases+=("po") + aliashash["po"]="pod" + command_aliases+=("pods") + aliashash["pods"]="pod" + fi + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_uncordon() +{ + last_command="kubectl_uncordon" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--dry-run") + local_nonpersistent_flags+=("--dry-run") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_version() +{ + last_command="kubectl_version" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--client") + local_nonpersistent_flags+=("--client") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--short") + local_nonpersistent_flags+=("--short") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_wait() +{ + last_command="kubectl_wait" + + command_aliases=() + + commands=() + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--all") + local_nonpersistent_flags+=("--all") + flags+=("--all-namespaces") + flags+=("-A") + local_nonpersistent_flags+=("--all-namespaces") + local_nonpersistent_flags+=("-A") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") + flags+=("--field-selector=") + two_word_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector") + local_nonpersistent_flags+=("--field-selector=") + flags+=("--filename=") + two_word_flags+=("--filename") + flags_with_completion+=("--filename") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + two_word_flags+=("-f") + flags_with_completion+=("-f") + flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml") + local_nonpersistent_flags+=("--filename") + local_nonpersistent_flags+=("--filename=") + local_nonpersistent_flags+=("-f") + flags+=("--for=") + two_word_flags+=("--for") + local_nonpersistent_flags+=("--for") + local_nonpersistent_flags+=("--for=") + flags+=("--local") + local_nonpersistent_flags+=("--local") + flags+=("--output=") + two_word_flags+=("--output") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output") + local_nonpersistent_flags+=("--output=") + local_nonpersistent_flags+=("-o") + flags+=("--recursive") + flags+=("-R") + local_nonpersistent_flags+=("--recursive") + local_nonpersistent_flags+=("-R") + flags+=("--selector=") + two_word_flags+=("--selector") + two_word_flags+=("-l") + local_nonpersistent_flags+=("--selector") + local_nonpersistent_flags+=("--selector=") + local_nonpersistent_flags+=("-l") + flags+=("--show-managed-fields") + local_nonpersistent_flags+=("--show-managed-fields") + flags+=("--template=") + two_word_flags+=("--template") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template") + local_nonpersistent_flags+=("--template=") + flags+=("--timeout=") + two_word_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout") + local_nonpersistent_flags+=("--timeout=") + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +_kubectl_root_command() +{ + last_command="kubectl" + + command_aliases=() + + commands=() + commands+=("annotate") + commands+=("api-resources") + commands+=("api-versions") + commands+=("apply") + commands+=("attach") + commands+=("auth") + commands+=("autoscale") + commands+=("certificate") + commands+=("cluster-info") + commands+=("completion") + commands+=("config") + commands+=("cordon") + commands+=("cp") + commands+=("create") + commands+=("debug") + commands+=("delete") + commands+=("describe") + commands+=("diff") + commands+=("drain") + commands+=("edit") + commands+=("exec") + commands+=("explain") + commands+=("expose") + commands+=("get") + commands+=("help") + commands+=("kustomize") + commands+=("label") + commands+=("logs") + commands+=("options") + commands+=("patch") + commands+=("plugin") + commands+=("port-forward") + commands+=("proxy") + commands+=("replace") + commands+=("rollout") + commands+=("run") + commands+=("scale") + commands+=("set") + commands+=("taint") + commands+=("top") + commands+=("uncordon") + commands+=("version") + commands+=("wait") + + flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + + flags+=("--add-dir-header") + flags+=("--alsologtostderr") + flags+=("--as=") + two_word_flags+=("--as") + flags+=("--as-group=") + two_word_flags+=("--as-group") + flags+=("--cache-dir=") + two_word_flags+=("--cache-dir") + flags+=("--certificate-authority=") + two_word_flags+=("--certificate-authority") + flags+=("--client-certificate=") + two_word_flags+=("--client-certificate") + flags+=("--client-key=") + two_word_flags+=("--client-key") + flags+=("--cluster=") + two_word_flags+=("--cluster") + flags_with_completion+=("--cluster") + flags_completion+=("__kubectl_config_get_clusters") + flags+=("--context=") + two_word_flags+=("--context") + flags_with_completion+=("--context") + flags_completion+=("__kubectl_config_get_contexts") + flags+=("--insecure-skip-tls-verify") + flags+=("--kubeconfig=") + two_word_flags+=("--kubeconfig") + flags+=("--log-backtrace-at=") + two_word_flags+=("--log-backtrace-at") + flags+=("--log-dir=") + two_word_flags+=("--log-dir") + flags+=("--log-file=") + two_word_flags+=("--log-file") + flags+=("--log-file-max-size=") + two_word_flags+=("--log-file-max-size") + flags+=("--log-flush-frequency=") + two_word_flags+=("--log-flush-frequency") + flags+=("--logtostderr") + flags+=("--match-server-version") + flags+=("--namespace=") + two_word_flags+=("--namespace") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_resource_namespace") + two_word_flags+=("-n") + flags_with_completion+=("-n") + flags_completion+=("__kubectl_get_resource_namespace") + flags+=("--one-output") + flags+=("--password=") + two_word_flags+=("--password") + flags+=("--profile=") + two_word_flags+=("--profile") + flags+=("--profile-output=") + two_word_flags+=("--profile-output") + flags+=("--request-timeout=") + two_word_flags+=("--request-timeout") + flags+=("--server=") + two_word_flags+=("--server") + two_word_flags+=("-s") + flags+=("--skip-headers") + flags+=("--skip-log-headers") + flags+=("--stderrthreshold=") + two_word_flags+=("--stderrthreshold") + flags+=("--tls-server-name=") + two_word_flags+=("--tls-server-name") + flags+=("--token=") + two_word_flags+=("--token") + flags+=("--user=") + two_word_flags+=("--user") + flags_with_completion+=("--user") + flags_completion+=("__kubectl_config_get_users") + flags+=("--username=") + two_word_flags+=("--username") + flags+=("--v=") + two_word_flags+=("--v") + two_word_flags+=("-v") + flags+=("--vmodule=") + two_word_flags+=("--vmodule") + flags+=("--warnings-as-errors") + + must_have_one_flag=() + must_have_one_noun=() + noun_aliases=() +} + +__start_kubectl() +{ + local cur prev words cword + declare -A flaghash 2>/dev/null || : + declare -A aliashash 2>/dev/null || : + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -s || return + else + __kubectl_init_completion -n "=" || return + fi + + local c=0 + local flags=() + local two_word_flags=() + local local_nonpersistent_flags=() + local flags_with_completion=() + local flags_completion=() + local commands=("kubectl") + local must_have_one_flag=() + local must_have_one_noun=() + local has_completion_function + local last_command + local nouns=() + + __kubectl_handle_word +} + +if [[ $(type -t compopt) = "builtin" ]]; then + complete -o default -F __start_kubectl kubectl +else + complete -o default -o nospace -F __start_kubectl kubectl +fi + +alias k=kubectl +complete -F __start_kubectl k + +# ex: ts=4 sw=4 et filetype=sh diff --git a/.aliases.d/kubectl.sh b/.aliases.d/kubectl.sh new file mode 100644 index 0000000..176f7af --- /dev/null +++ b/.aliases.d/kubectl.sh @@ -0,0 +1,2 @@ +[ -f ~/.kube-ps1 ] && alias kube-ps='source ~/.kube-ps1' +[ ! -f ~/.kube-ps1 ] && alias kube-ps='echo "Sorry kube prompt file not found!"' diff --git a/.aliases.d/logs.sh b/.aliases.d/logs.sh new file mode 100644 index 0000000..c658c69 --- /dev/null +++ b/.aliases.d/logs.sh @@ -0,0 +1,69 @@ +alias hg='history|grep' +alias hl='history|less -X' + +hh() { + if [ -z "$1" ]; then + history 15 + else + history $1 + fi +} +alias watch-logs='sudo tail -F' +alias changed-files='find . -mtime -30 | less' +search() { + find . -name "$1" -print +} +match() { + if [ -z "$2" ]; then + echo "usage: match \"search_for_pattern\" file or files" + else + grep -n "$@" | less + fi +} +abc() { + if [ -n "$2" ]; then + _f_do_as "$1" sort "$1" | grep "$2" + else + _f_do_as "$1" sort "$1" + fi +} +short-asc() { + abc "$@" | head +} +alias short='sed 100q' +view-long() { + _f_do_as "$1" sed 500q $1 | less +} +save-long() { + if [ -n "$2" ]; then + _f_do_as "$1" sed 500q $1 > $2 + else + echo "example: save-long in-file out-file" + fi +} +head-log() { + if [ -n "$2" ]; then + _f_do_as "$1" head -n 2000 $1 > $2 + else + _f_do_as "$1" head -n 2000 $1 | less + fi +} +tail-log() { + if [ -n "$2" ]; then + _f_do_as "$1" tail -n 2000 $1 > $2 + else + _f_do_as "$1" tail -n 2000 $1 | less + fi +} +logs-find-errors() { + _f_do_as "$1" grep -Rni "error" $@ | less +} +logs-find-notices() { + _f_do_as "$1" grep -Rni "notice" $@ | less +} +logs-find-warnings() { + _f_do_as "$1" grep -Rni "warning" $@ | less +} +logs-find-deprecated() { + _f_do_as "$1" grep -Rni "deprecated" $@ | less +} diff --git a/.aliases.d/maintance.sh b/.aliases.d/maintance.sh new file mode 100644 index 0000000..ce66115 --- /dev/null +++ b/.aliases.d/maintance.sh @@ -0,0 +1,13 @@ +# wget -c will resume getting a partially-downloaded file. +alias wget='wget -c' +#Maintance +alias cleantmp='find /tmp -atime +3 -exec rm -f {} ";"' +alias uuids='awk '\''/^UUID/ {print $1}'\'' /etc/fstab' +#View systgem log for XX Unit ex: nginx +alias jlog='journalctl -xeu' +alias findlarge='find -size +1G -ls' +inodes() { + inum=$(ls -i "$1" | awk '{print $1}') + echo -e "\n Scaning system for iNode # $inum \n" + find / -inum "$inum" 2>/dev/null +} diff --git a/.aliases.d/make_symlinks.sh b/.aliases.d/make_symlinks.sh new file mode 100644 index 0000000..ee4a643 --- /dev/null +++ b/.aliases.d/make_symlinks.sh @@ -0,0 +1,15 @@ +link-file() { + if [[ -n "$1" && -n "$2" && -f "$1" && ! -f "$2" ]]; then + ln -s "$1" "$2" + else + echo "link /home/username/SOURCE_FILE /opt/new_LINK" + fi +} + +link-dir() { + if [[ -n "$1" && -n "$2" && -d "$1" && ! -f "$2" ]]; then + ln -s "$1" "$2" + else + echo "link /home/username/SOURCE_DIR /opt/new_LINK" + fi +} diff --git a/.aliases.d/mem_cpu.sh b/.aliases.d/mem_cpu.sh new file mode 100644 index 0000000..a23e491 --- /dev/null +++ b/.aliases.d/mem_cpu.sh @@ -0,0 +1,32 @@ +#CPU and Memory useage +# pass options to free +alias meminfo='free -m -l -t' + +#File Useage +# Disks and File System useage +alias df='df -HTa --total' +# Disk Usage for a folder in useful sizes +du() { + du -ach $1 | sort -h +} +alias disks=df +alias useage=du +alias home='echo "Please wait... Calculating Size of Home..." && du -s /home' + +# get top process eating memory +alias psmem='ps auxf | sort -nr -k 4' +alias psmem10='ps auxf | sort -nr -k 4 | head -10' + +# get top process eating cpu +alias pscpu='ps auxf | sort -nr -k 3' +alias pscpu10='ps auxf | sort -nr -k 3 | head -10' + +# Get server cpu info +alias cpuinfo='lscpu' +alias cpudetails='sudo lshw -C cpu' + +alias memdetails='sudo lshw -C memory' +alias netdetails='sudo lshw -C network' +alias diskdetails='sudo lshw -C disk' + +alias fhere='find . -name ' diff --git a/.aliases.d/misc.sh b/.aliases.d/misc.sh new file mode 100644 index 0000000..96fd0e6 --- /dev/null +++ b/.aliases.d/misc.sh @@ -0,0 +1,109 @@ +alias lock='gnome-screensaver-command --lock' +alias view-mounted="mount | awk -F' ' '{ printf \"%s\t%s\n\",\$1,\$3; }' | column -t | egrep ^/dev/ | sort" +mounted() { + if [ -z $1 ]; then + mount | column -t + else + sudo mount | column -t | grep "$@" + fi +} +# sudo apt install bat +alias bat='batcat' +alias bc='clear;batcat' +alias bs='clear;batcat -l bash' +alias o='less' +alias print='lpr' + +# line "*" 50 +# will ouput a line with: ************************************************** +line() { printf -v _L %$2s; printf -- "${_L// /$1}"; } +alias stars='line "*" 50' + +long-password() { + if [ -z "$1" ]; then + local random_string=$(openssl rand -base64 24) + else + local random_string=$(openssl rand -base64 "$1") + fi + local possible_symbols='@#,%.&*()^?' + local num_symbols=$((RANDOM % ${#possible_symbols} + 1)) + extra_symbols=$(echo "$possible_symbols" | fold -w1 | shuf | head -n "$num_symbols" | tr -d '\n') + local combined_string="${random_string}${extra_symbols}" + local shuffled_string=$(echo "$combined_string" | fold -w1 | shuf | tr -d '\n') + echo "$shuffled_string" +} +good-pass() { + local password=$(long-password) + # Get the length of the password + local password_length=${#password} + # Calculate half the length of the password + local half_length=$((password_length / 2)) + # Generate a random starting position between 0 and half_length + local start_position=$((RANDOM % (password_length - half_length + 1))) + # Calculate a random length for the substring between half_length and password_length + local substring_length=$((RANDOM % (password_length - half_length + 1) + half_length)) + # Extract the substring + local substring=${password:start_position:substring_length} + echo "$substring" +} +gpg-make-pwd() { + local edt=$(date +%Y%m%d-%H%M%S) + long-password > ~/Desktop/.gpg_pwd_${edt}.txt + echo "Made long password at: ~/Desktop/.gpg_pwd_${edt}.txt" + if [ "$1" == "show" ]; then + echo -e "\033[0;31m" + cat ~/Desktop/.gpg_pwd_${edt}.txt + echo -e "\033[0m" + else + echo -e "\033[0;31m cat ~/Desktop/.gpg_pwd_${edt}.txt \033[0m \n" + fi + echo "This is a hidden file, so to list it: ls -la ~/Desktop/.gpg*" + echo "Becareful not to leave it where it is!!!" +} + +function looooooooong { + START=$(date +%s.%N) + $* + EXIT_CODE=$? + END=$(date +%s.%N) + DIFF=$(echo "$END - $START" | bc) + RES=$(python -c "diff = $DIFF; min = int(diff / 60); print('%s min' % min)") + result="$1 completed in $RES, exit code $EXIT_CODE." + echo -e "\n⏰ $result" +} + +# apt install wofi +newnote() { + local folder="$HOME/notes/" + mkdir -p "$folder" + local name + if [ -z "$1" ]; then + name="$(wofi --show dmenu -p "Enter a name: ")" || return 1 + # Fallback to Timestamp if user just hit enter + : "${name:=$(date +%F_%T | tr ':' '-')}" + $editor $folder$name".md" 2>&1 + else + $editor "$folder$1.md" + fi +} + +notes() { \ + local folder="$HOME/notes/" + if [ -z "$1" ]; then + choice=$(echo -e "New\n$(command ls -t1 $folder)" | wofi --show dmenu -L 25 -i -p "Choose note or create new: ") + case $choice in + New) newnote ;; + *.md) $editor "$folder$choice" 2>&1 ;; + *) return 1 ;; + esac + else + $editor "$folder$1.md" + fi +} + + +alias cht='/opt/profiles/scripts/cht.sh' + +alias create-archive='/opt/profiles/scripts/create_archive.sh' + +alias bible-quote='/opt/profiles/scripts/bible_quotes.sh' diff --git a/.aliases.d/networking.sh b/.aliases.d/networking.sh new file mode 100644 index 0000000..970f93d --- /dev/null +++ b/.aliases.d/networking.sh @@ -0,0 +1,68 @@ +#Networking +alias ip='ip --color=always' +alias addr='ip addr' +alias ipr='ip route' +alias public-ip='dig +short myip.opendns.com @208.67.222.222 @208.67.220.220' +alias myip='/bin/ip -c -br -f inet addr show' +alias myipv6='/bin/ip -c -br -6 addr show' +alias mymac='/bin/ip -c -br link show' +alias ipstats='/sbin/ifconfig -a' +alias quickping='time ping -c 5' +alias fastping='ping -c 100 -i .250 -s 2' +alias qping='ping -c 5 -i .250 -s 2' + +# agi-get install ipcalc +ip-v() { + if [ -z "$1" ]; then + echo "ip-v 192.168.32.0/24" + else + ipcalc $1 + fi +} + +# Lists all open UDP/TCP ports +alias connections='netstat -tulanp' +alias connections-common='netstat -t -4' # TCP IPv4 +alias openports='sudo ss -tunlp' +alias tcp='sudo lsof -nP -iTCP -sTCP:LISTEN' +alias udp='sudo lsof -nP -iUDP' +whatsonport() { + sudo lsof -i ":$1" +} +# Wake up remote PC/Sever +alias ipwake='/usr/bin/wakeonlan -i' +alias wake='echo "WakeOnLAN File with MAC and IP" && /usr/bin/wakeonlan -f' + +# Firewall IP Tables +alias ipt='sudo /sbin/iptables' +# Display all firewall rules +alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers' +alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers' +alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers' +alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers' + +# ufw +alias ufw-list='sudo ufw status numbered' +alias ufw-allow='sudo ufw allow' +alias ufw-re='sudo ufw reload' +alias rfw='sudo ufw reload' +alias ufw?='ufw --help' + +export FW='ufw' # iptlist +alias firewall='sudo "$FW"' + +#More Networking +export LAN='eth0' +export WAN='eth1' +alias dnstop='dnstop -l 5 "$LAN"' +alias vnstat='vnstat -i "$LAN"' +alias iftop='iftop -i "$LAN"' +alias tcpdump='tcpdump -i "$LAN"' +alias ethtool='ethtool "$LAN"' + +# Get Wireless Status +alias iwconfig='iwconfig wlo1' +alias wifi-low-power='sudo iwconfig wlo1 txpower 1dBm' +alias wifi=iwconfig + +alias essh="$EDITOR ~/.ssh/config" diff --git a/.aliases.d/nice_stuff.sh b/.aliases.d/nice_stuff.sh new file mode 100644 index 0000000..7bde050 --- /dev/null +++ b/.aliases.d/nice_stuff.sh @@ -0,0 +1,76 @@ +## You should use these on servers instead of default commands...!! +#set nice levels for common commands + +#The niceness value ranges from -20 (highest priority) to 19 (lowest priority). +#A value of 2 is close to the default priority (0). +#A value of 17 is close to the lowest possible priority (19). +alias speed-up='echo -e "Grant Import-Fastest-CPU-time-to-process-this-task \r\n"; sudo nice -n -19' +alias speed-down='echo -e "Mark this as slowest-yelding-background-process-task \r\n"; nice -n 19' + +alias ncfg='nice -n 2 ./configure' +alias nmake='nice -n 2 make' +alias nmakeinstall='sudo nice -n 2 make install' +alias ncp='nice -n 17 cp -iv' +alias nmv='nice -n 17 mv -iv' +alias nrm='nice -n 17 rm -I --preserve-root' +alias ncurl='nice -n 17 curl' +alias nl='nice -n 17 ls --color=auto -alh' +alias nn='nice -n 17 nano' +ng() { + nice -n 17 geany $1 & +} +alias no='nice -n 17 less' +alias nless='nice -n 17 less' +alias ngrep='nice -n 17 grep --color=auto' +alias nhg='history | nice -n 17 grep --color=auto' + +#NICE apt-get +alias nagi='sudo nice -n 2 apt-get install' +alias nagr='sudo nice -n 2 apt-get remove' +alias nagu='sudo nice -n 2 apt-get update' +alias nacs='nice -n 2 apt-cache search' + +#NICE RSYNC +alias nbackup="nice -n 2 rsync --progress -ravz" +alias nrsync="nice -n 2 rsync" + +#NICE git +alias ngs='nice -n 17 git status' +alias ngc='nice -n 17 git commit -a -m' +alias nmpull='nice -n 17 git pull origin master' +alias nmpush='nice -n 17 git push origin master' +alias npull='nice -n 17 git pull origin' +alias npush='nice -n 17 git push origin' +alias ngb='nice -n 17 git branch' +alias nbranch='nice -n 17 git branch' +alias nclone='nice -n 17 git clone' +alias ncheckout='nice -n 17 git checkout' +alias ngitolite='nice -n 17 git clone gitolite:' + +#NICE tar +nmaketar() { + if [ -e "$1" ]; then + nice -n 17 tar cvzf "$1.tgz" "$@" + else + if [ -e "$2" ]; then + x="" + for var in "$@" + do + if [ -e "$var" ]; then + x+=$var + x+=" " + fi + done + nice -n 17 tar cvzf "$1.tgz" $x + else + if [ -n "$1" ]; then + nice -n 17 tar cvzf "$1.tgz" * + else + nice -n 17 tar cvzf all.tgz * + fi + fi + fi +} +alias ntar='nice -n 17 tar' +alias nungz='nice -n 17 tar xvfz' +alias nuntar='nice -n 17 tar xvf' diff --git a/.aliases.d/nvida.sh b/.aliases.d/nvida.sh new file mode 100644 index 0000000..79a4e03 --- /dev/null +++ b/.aliases.d/nvida.sh @@ -0,0 +1,5 @@ +alias nvidia-on="sudo tee /proc/acpi/bbswitch <<= 0 && input_level <= 10 )); then + level="$input_level" + fi + if [[ -z "$target" ]]; then + "$stan" + else + "$stan" analyse --level="$level" "$target" + fi +} +#sudo apt-get install aspell aspell-en +#composer require peckphp/peck --dev +#./vendor/bin/peck --init +alias phck='./vendor/bin/peck' +#composer require rector/rector --dev +alias phrector-dry='./vendor/bin/rector src --dry-run' +alias phre='./vendor/bin/rector' +#composer remove phpunit/phpunit +#composer require pestphp/pest --dev --with-all-dependencies +#./vendor/bin/pest --init +alias pe-cc='./vendor/bin/pest --parallel --coverage' +alias pe-tc='./vendor/bin/pest --type-coverage --min=100' +alias pe-arch='./vendor/bin/pest --arch' +alias pe-pa='./vendor/bin/pest --parallel' diff --git a/.aliases.d/robs_misc.sh b/.aliases.d/robs_misc.sh new file mode 100644 index 0000000..39edd0e --- /dev/null +++ b/.aliases.d/robs_misc.sh @@ -0,0 +1,80 @@ +#calendar and notes +alias appointments='calcurse -D ~/.calcurse -C ~/.calcurse/config' +alias todo='calcurse -D ~/.calcurse -C ~/.calcurse/config --todo' +alias todays='calcurse -D ~/.calcurse -C ~/.calcurse/config --appointment' +alias anythingon='calcurse -D ~/.calcurse -C ~/.calcurse/config -a -d' +alias apts='$EDITOR ~/.calcurse/apts' +alias todos='$EDITOR ~/.calcurse/todo' +todays +# +#Screen Dim/BlueScreen +alias night='redshift -o 3500' + +alias speak-file='RHVoice-test -i' + +#Better Copying +alias cpv='rsync -avh --info=progress2' + +function count() { + if [ -z "$1" ]; then + /bin/ls -1 | wc -l + else + /bin/ls -1 $@ | wc -l + fi +} + +see() { + if [ $# -eq 0 ]; then + echo "Usage: see " + return 1 + fi + + filename="$1" + if [ -d "$filename" ]; then + echo "Opening directory: $filename" + nautilus "$filename" & + return 0 + fi + extension="${filename##*.}" + + case "$extension" in + wg) + echo "Opening wordgrinder document $filename" + wordgrinder "$filename" + ;; + doc|odt) + echo "Opening Word document: $filename" + libreoffice --nologo "$filename" & + ;; + txt) + echo "Opeing Text document: $filename" + gedit "$filename" & + ;; + pdf) + echo "Opening PDF document: $filename" + evince "$filename" & + ;; + html|php|js|css) + echo "Opening web document: $filename" + geany "$filename" & + ;; + epub) + echo "Opening ePub document: $filename" + mupdf "$filename" & + ;; + *) + echo "Unsupported file type: $extension" + return 1 + ;; + esac +} + +s() { # do sudo if no argument given, ! or last do previous cmd + if [[ $# == 0 ]]; then + sudo -i + elif [[ "$1" == "!" || "$1" == "last" ]]; then + sudo $(history -p '!!') + else + sudo "$@" + fi +} diff --git a/.aliases.d/routers.sh b/.aliases.d/routers.sh new file mode 100644 index 0000000..529c53d --- /dev/null +++ b/.aliases.d/routers.sh @@ -0,0 +1,16 @@ +#Reboot routers +rebootlinksys() { + curl -u "admin:$2" "http://$1/setup.cgi?todo=reboot" +} + +rebootnetgear() { + wget --output-document=/dev/null --user="admin" --password="$2" "http://$1/setup.cgi?next_file=diag.htm&todo=reboot" +} + +ssh-reboot() { + if [ -n "$2" ]; then + ssh "$1"@"$2" sudo -S /sbin/reboot + else + ssh "root@$1" /sbin/reboot + fi +} diff --git a/.aliases.d/scripts.sh b/.aliases.d/scripts.sh new file mode 100644 index 0000000..e1c02c6 --- /dev/null +++ b/.aliases.d/scripts.sh @@ -0,0 +1,17 @@ +alias find-servers='~/dotfiles/scripts/common_networking.sh' +alias sshto='~/dotfiles/scripts/sshto/sshto.sh' +alias gp="~/dotfiles/scripts/git/gitprojects.sh" +alias dogit="~/dotfiles/scripts/git/dogit" +alias pwdgen="~/dotfiles/scripts/pwd_gen.sh" +alias sites='~/dotfiles/scripts/websites.sh' + +z() { + if [ -x /usr/local/bin/NoANSI ]; then + _f_do_as "$1" /usr/bin/cat $@ | /usr/local/bin/NoANSI + else + echo -e "Download my NoANSI GO Project from https://github.com/technowizardbob/no_ansi \r\n" + fi +} +zx() { + $@ | /usr/local/bin/NoANSI +} diff --git a/.aliases.d/security.sh b/.aliases.d/security.sh new file mode 100644 index 0000000..2474606 --- /dev/null +++ b/.aliases.d/security.sh @@ -0,0 +1,24 @@ +alias findblanks='sudo awk -F: '\''($2 == "") {print}'\'' /etc/shadow' +alias findrootusers='sudo awk -F: '\''($3 == "0") {print}'\'' /etc/passwd' +alias findusers='sudo awk -F: '\''($3 >=1000) {print $1,$6}'\'' /etc/passwd' +alias findnobody-files='find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o \( -nouser -o -nogroup \) -ls 2> /dev/null' +alias mempass='shuf -n 3 /usr/share/dict/british-english | sed "s/./\u&/" | tr -cd "[A-Za-z]"; echo $(shuf -i0-999 -n 1)' +alias uchecker='curl -s -L https://kernelcare.com/uchecker | sudo python' +alias find-ow='find / -perm -o=w ! -type l ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/tmp/*" 2>/dev/null' +alias find-sticky='find /bin/ -perm /4000 -user root' + +# Pass the username to these: +alias belongstouser='find / -user' +taruserdata() { + find / -user "$1" -not -path '/proc/*' -not -path '/sys/*' -not -path '/run/*' -not -path "*/.git/*" -not -path "*/node_modules/*" -not -path "*/vendor/*" -not -path "*/nbproject/*" -not -path "*/logs/*" -not -path "*/tmp/*" -not -path "*/cache/*" -not -path "*/trash/*" -not -path "*/.gvfs/*" -exec tar -rf "$1".tar {} \; +} +userdata() { + find / -user "$1" -not -path '/proc/*' -not -path '/sys/*' -not -path '/run/*' -not -path "*/.git/*" -not -path "*/node_modules/*" -not -path "*/vendor/*" -not -path "*/nbproject/*" -not -path "*/logs/*" -not -path "*/tmp/*" -not -path "*/cache/*" -not -path "*/trash/*" -not -path "*/.gvfs/*" 2> /dev/null +} +alias userprocess='ps -aux | grep' +alias pwdinfo='chage -l' +# Look inside of programs to see what payload it has. +str() { + strings "$1" | less +} +alias vscan='/usr/bin/sudo /usr/bin/clamscan -v --move=/var/lib/clamav/quarantine --log=/var/log/clamav/results.log' diff --git a/.aliases.d/serial.sh b/.aliases.d/serial.sh new file mode 100644 index 0000000..dcbd14a --- /dev/null +++ b/.aliases.d/serial.sh @@ -0,0 +1,108 @@ +cserial() { + local file="/dev/${1:-ttyUSB0}" # Use $1 if set; default to ttyUSB0 + local baud_rate="${2:-9600}" # Use $2 if set; otherwise, default to 9600 + # Does the device file exist + if [ -e "$file" ]; then + # Check for read and write permissions + if [ -r "$file" ] && [ -w "$file" ]; then + /usr/bin/cu -l "$file" -s ${baud_rate} + else + /usr/bin/echo "Device File $1 needs both read and write access!" + fi + else + /usr/bin/echo "Device File $1 does not exist!" + fi +} +tserial() { + local file="/dev/${1:-ttyUSB0}" # Use $1 if set; default to ttyUSB0 + local baud_rate="${2:-9600}" # Use $2 if set; otherwise, default to 9600 + # Does the device file exist + if [ -e "$file" ]; then + # Check for read and write permissions + if [ -r "$file" ] && [ -w "$file" ]; then + /usr/bin/tip -$baud_rate $1 + else + /usr/bin/echo "Device File $1 needs both read and write access!" + fi + else + /usr/bin/echo "Device File $1 does not exist!" + fi +} +pserial() { + local file="/dev/${1:-ttyUSB0}" # Use $1 if set; default to ttyUSB0 + local baud_rate="${2:-9600}" # Use $2 if set; otherwise, default to 9600 + # Does the device file exist + if [ -e "$file" ]; then + # Check for read and write permissions + if [ -r "$file" ] && [ -w "$file" ]; then + /usr/bin/putty "$file" -serial -sercfg ${baud_rate},8,n,1,N + else + /usr/bin/echo "Device File $1 needs both read and write access!" + fi + else + /usr/bin/echo "Device File $1 does not exist!" + fi +} +sserial() { + local file="/dev/${1:-ttyUSB0}" # Use $1 if set; default to ttyUSB0 + local baud_rate="${2:-9600}" # Use $2 if set; otherwise, default to 9600 + # Does the device file exist + if [ -e "$file" ]; then + # Check for read and write permissions + if [ -r "$file" ] && [ -w "$file" ]; then + /usr/bin/screen "$file" $baud_rate + else + /usr/bin/echo "Device File $1 needs both read and write access!" + fi + else + /usr/bin/echo "Device File $1 does not exist!" + fi +} +mserial() { + local file="/dev/${1:-ttyUSB0}" # Use $1 if set; default to ttyUSB0 + local baud_rate="${2:-9600}" # Use $2 if set; otherwise, default to 9600 + # Does the device file exist + if [ -e "$file" ]; then + # Check for read and write permissions + if [ -r "$file" ] && [ -w "$file" ]; then + /usr/bin/minicom -D "$file" -b $baud_rate + else + /usr/bin/echo "Device File $1 needs both read and write access!" + fi + else + /usr/bin/echo "Device File $1 does not exist!" + fi +} + +serial() { + if [ -z "$1" ]; then + echo "Example: serial DEVICE_NAME BAUD_RATE" + echo "Ex useage: serial ttyUSB0 115200" + return 0 + fi + if id -nG "$USER" | grep -qw "dialout"; then + echo -e "\n" + else + echo -e "To avoid running as Root, you should add yourself to the dialout group, so you can use serial...without being Root.\n" + echo -e "You will need sudo access to do this, if you do not have SUDOers access, say no. \r\n Have an Admin do: usermod -a -G dialout $USER" + echo -e "Do you want to add $USER to the dialout Group? \r\n" + read -p "IF so, Type 'Yes' to continue: " response + if [ "$response" = "Yes" ]; then + echo -e "Adding $USER to dialout Group, enter sudo password" + sudo usermod -a -G dialout $USER + fi + fi + if [ -x /usr/bin/minicom ]; then + mserial $@ + elif [ -x /usr/bin/putty ]; then + pserial $@ + elif [ -x /usr/bin/screen ]; then + sserial $@ + elif [ -x /usr/bin/tip ]; then + tserial $@ + elif [ -x /usr/bin/cu ]; then + cserial $@ + else + echo -e "Opps no minicom, putty, screen, cu, or tip programs installed!" + fi +} diff --git a/.aliases.d/services.sh b/.aliases.d/services.sh new file mode 100644 index 0000000..81da1e9 --- /dev/null +++ b/.aliases.d/services.sh @@ -0,0 +1,4 @@ +alias show-enabled-services="sudo systemctl list-unit-files --state enabled" +alias show-running-services="sudo systemctl list-units --type service --state running" +alias show-active-services="sudo systemctl -t service --state active" +alias whatsup='service --status-all' diff --git a/.aliases.d/ssh.sh b/.aliases.d/ssh.sh new file mode 100644 index 0000000..d3621d5 --- /dev/null +++ b/.aliases.d/ssh.sh @@ -0,0 +1,19 @@ +# OpenSSH authentication agent - +# This will hold your Password for the private key file, +# for use in the Current Shell session only as it does not store this data. +ssha() { + if [ -r "$1" ]; then + eval $(ssh-agent) && ssh-add "$1" + else + echo -e "This requires a Private SSH Key! Please give path & key File! \r\n Example: ~/.ssh/id_rsa" + fi +} +gpg-ssh() { + if [ -n "$(which gpg)" ] && [ -n "$(gpg --list-key)" ]; then + GPG_SOCK=$(gpgconf --list-dirs agent-ssh-socket) + if [ -S "$GPG_SOCK" ]; then + export SSH_AUTH_SOCK=$GPG_SOCK + fi + fi +} +gpg-ssh diff --git a/.aliases.d/tar.sh b/.aliases.d/tar.sh new file mode 100644 index 0000000..7745103 --- /dev/null +++ b/.aliases.d/tar.sh @@ -0,0 +1,138 @@ +maketar() { + if [ -e "$1" ]; then + tar cvzf "$1.tgz" "$@" + else + if [ -e "$2" ]; then + x="" + for var in "$@" + do + if [ -e "$var" ]; then + x+=$var + x+=" " + fi + done + tar cvzf "$1.tgz" $x + else + if [ -n "$1" ]; then + tar cvzf "$1.tgz" * + else + tar cvzf all.tgz * + fi + fi + fi + + errstatus=$? + if [ -z "$1" ]; then + NAME=all + else + NAME=$1 + fi + + if [ $errstatus -eq 0 ]; then + echo "Successfully, made tar archive called $NAME.tgz" + return 0 + else + echo "Failed, to make tar archive called $NAME.tgz" + return $errstatus + fi +} + +bk() { + local outbase="" + local verbose=1 + + # Parse options + while [[ $# -gt 0 ]]; do + case "$1" in + -o|--output) + outbase="$2"; shift 2 ;; + -q|--quiet) + verbose=0; shift ;; + -h|--help|help) + echo "Usage: bk -o NAME file/dir [file/dir ...]" + echo "Creates NAME.YYYYMMDD-HHMMSS.tgz from the given paths." + return 0 ;; + --) shift; break ;; + -*) + echo "Unknown option: $1" >&2 + return 1 ;; + *) + break ;; + esac + done + + if [[ -z "$outbase" || $# -lt 1 ]]; then + echo "Usage: bk -o NAME file/dir [file/dir ...]" >&2 + return 1 + fi + + local stamp + stamp="$(date +%Y%m%d-%H%M%S)" + local myoutfile="${outbase%.tgz}.$stamp.tgz" + + if [[ -e "$myoutfile" ]]; then + echo "Refusing to overwrite existing file: $myoutfile" >&2 + return 1 + fi + + # Exclude the archive itself in case you’re archiving CWD + local exclude_arg=(--exclude="./$(basename "$myoutfile")") + + (( verbose )) && echo "Making tar file $outfile" + tar -czf "$myoutfile" "${exclude_arg[@]}" "$@" +} + +function extract { + if [ -z "$1" ]; then + echo "Usage: extract ." + return 0 + fi + + for n in "$@"; do + if [ ! -f "$n" ]; then + echo "'$n' - File doesn't exist" + return 1 + fi + done + + # Initialize an array + exit_statuses=() + + for n in "$@"; do + NAME=${n%.*} + echo -e "\n Extacting from: $NAME ..." + case "${n%,}" in + *.deb) sudo nice -n 17 dpkg -i $n ;; + *.rpm) sudo nice -n 17 rpm -ivh $n ;; + *.tar.bz2) nice -n 17 tar xvjf "$n" ;; + *.tar.gz) nice -n 17 tar xvzf "$n" ;; + *.tar.xz) nice -n 17 tar xvJf "$n" ;; + *.lzma) nice -n 17 unlzma "$n" ;; + *.bz2) nice -n 17 bunzip2 "$n" ;; + *.rar) nice -n 17 unrar x -ad "$n" ;; + *.gz) nice -n 17 gunzip "$n" ;; + *.tar) nice -n 17 tar xvf "$n" ;; + *.tbz2) nice -n 17 tar xvjf "$n" ;; + *.tgz) nice -n 17 tar xvzf "$n" ;; + *.zip) nice -n 17 unzip "$n" ;; + *.Z) nice -n 17 uncompress "$n" ;; + *.7z) nice -n 17 7z x "$n" ;; + *.xz) nice -n 17 unxz "$n" ;; + *.exe) nice -n 17 cabextract "$n" ;; + *) echo "Extract: $n - Unknown archive method!"; + return 1 ;; + esac + + exit_statuses+=($?) + done + + # Check for error status codes + for status in "${exit_statuses[@]}"; do + if (( status > 0 )); then + echo "Unable to Extract something...!" + return $status + fi + done + echo "Success! Extracted all files..." + return 0 +} diff --git a/.aliases.d/test_mail.sh b/.aliases.d/test_mail.sh new file mode 100644 index 0000000..d184b33 --- /dev/null +++ b/.aliases.d/test_mail.sh @@ -0,0 +1,7 @@ +test-email() { + if [ -z "$1" ]; then + echo "Send a Test email to which user? root or $USER" + else + echo "Testing..." | mail -s "Just a Quick Test" $1 + fi +} diff --git a/.aliases.d/the_cloud.sh b/.aliases.d/the_cloud.sh new file mode 100644 index 0000000..8a522ef --- /dev/null +++ b/.aliases.d/the_cloud.sh @@ -0,0 +1 @@ +alias amazon-backup='s3backup' diff --git a/.aliases.d/tmux.sh b/.aliases.d/tmux.sh new file mode 100644 index 0000000..fd99187 --- /dev/null +++ b/.aliases.d/tmux.sh @@ -0,0 +1,58 @@ +alias t='/opt/profiles/scripts/t.sh' +td() { + if [ -z "$1" ]; then + tmux detach -s myCode + else + tmux detach -s "$1" + fi +} +ta() { + if [ -z "$1" ]; then + tmux attach-session -t myCode + else + tmux attach-session -t "$1" + fi +} +tks() { + if [ -z "$1" ]; then + tmux kill-session -t myCode + else + tmux kill-session -t "$1" + fi +} +tn() { + if [ -z "$1" ]; then + echo "Assign tmux session a name!" + return 1 + fi + tmux new-session -d -s "$1" +} +tna() { + if [ -z "$1" ]; then + echo "Assign tmux session a name!" + return 1 + fi + tmux new-session -d -s "$1" -n work + tmux new-window -t "$1" -d -n work2 + tmux split-window -v -t "$1" + tmux send-keys -t "$1":work.2 "clear" Enter + tmux select-pane -t "$1":work.1 + tmux attach-session -t "$1" +} +tl() { + local tlses=$(tmux list-sessions | cut -d ':' -f 1) + if [ -z "$tlses" ]; then + echo "Sessions not found" + return 1 + fi + local resultses=$(echo $tlses | tr ' ' '\n' | fzf) + if [ -z "$resultses" ]; then + echo "Session not found" + return 1 + fi + if [ -n "$TMUX" ]; then + tmux switch-client -t "$resultses" + else + tmux attach-session -t "$resultses" + fi +} diff --git a/.aliases.d/umask.sh b/.aliases.d/umask.sh new file mode 100644 index 0000000..032f1e5 --- /dev/null +++ b/.aliases.d/umask.sh @@ -0,0 +1 @@ +umask 0002 diff --git a/.aliases.d/vagrant.sh b/.aliases.d/vagrant.sh new file mode 100644 index 0000000..780e677 --- /dev/null +++ b/.aliases.d/vagrant.sh @@ -0,0 +1,6 @@ +alias v="vagrant global-status" +alias vup="vagrant up" +alias vhalt="vagrant halt" +alias vssh="vagrant ssh" +alias vreload="vagrant reload" +alias vrebuild="vagrant destroy --force && vagrant up" diff --git a/.aliases.d/video.sh b/.aliases.d/video.sh new file mode 100644 index 0000000..15eb34f --- /dev/null +++ b/.aliases.d/video.sh @@ -0,0 +1 @@ +alias mp4='totem' diff --git a/.aliases.d/vim.sh b/.aliases.d/vim.sh new file mode 100644 index 0000000..75c2561 --- /dev/null +++ b/.aliases.d/vim.sh @@ -0,0 +1,9 @@ +if [ -x /usr/bin/vim ] || [ -x /usr/bin/vi ]; then + alias v-conf="$EDITOR ~/.vimrc" + alias va-conf="$EDITOR ~/.vim/autocmds.vim" + alias vc-conf="$EDITOR ~/.vim/config.vim" + alias vf-conf="$EDITOR ~/.vim/functions.vim" + alias vm-conf="$EDITOR ~/.vim/mappings.vim" +else + alias {v-conf,va-config,vc-conf,vf-conf,vm-conf}='echo "Sorry, vim not installed"' +fi diff --git a/.aliases.d/web.sh b/.aliases.d/web.sh new file mode 100644 index 0000000..59f74f1 --- /dev/null +++ b/.aliases.d/web.sh @@ -0,0 +1,24 @@ +#Web +alias chrome='/opt/google/chrome/chrome &' + +DNS_FAMILY1=1.1.1.3 +DNS_FAMILY2=1.0.0.3 +DNS_OPEN1=208.67.222.222 +DNS_OPEN2=208.67.220.220 +DNS_GOOGLE1=8.8.8.8 +DNS_GOOGLE2=8.8.4.4 + +privatefox() { + if [ ! -d ~/work ]; then + mkdir ~/work + fi + firejail --seccomp --private=~/work --dns=$DNS_OPEN1 --dns=$DNS_OPEN2 firefox -no-remote -private-window $@ & +} +safefox() { + if [ ! -d ~/work ]; then + mkdir ~/work + fi + firejail --seccomp --x11 --name=SecureMode --private=~/work --dns=$DNS_FAMILY1 --dns=$DNS_FAMILY2 firefox -private-window -no-remote -safe-mode $@ & +} +#my default browser +alias web='privatefox' diff --git a/.aliases.d/web_servers.sh b/.aliases.d/web_servers.sh new file mode 100644 index 0000000..35fd11b --- /dev/null +++ b/.aliases.d/web_servers.sh @@ -0,0 +1,34 @@ +PHP_FPM=php8.4-fpm + +#Debug Web Server +alias errors=fpm_errors +alias fpm_errors='sudo tail /var/log/${PHP_FPM}.log' +alias ap_errors='sudo tail /var/log/apache2/error.log' +alias hh_errors='sudo tail /var/log/hhvm/error.log' +alias ng_errors='sudo tail /var/log/nginx/error.log' + +# Get web server headers # +# -k Allow insecure server connections, self-signed... +alias header='curl -k -I ' + +# Find out if remote server supports gzip / mod_deflate or not # +alias headerc='curl -k -I --compressed ' + +# Controll Web Servers +alias fpm-status='service $PHP_FPM status' +alias fpm-start='service $PHP_FPM start' +alias fpm-reload='service $PHP_FPM reload' +alias ngreload='sudo /usr/sbin/nginx -s reload' +alias ngtest='sudo /usr/sbin/nginx -t' +alias a2='sudo service apache2 restart' +alias hh_restart='sudo service hhvm restart' +alias t7='sudo /etc/init.d/tomcat7 restart' +alias lightyload='sudo /etc/init.d/lighttpd reload' +alias lightytest='sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t' +alias httpdreload='sudo /usr/sbin/apachectl -k graceful' +alias httpdtest='sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS' + +# Is gzip working? +function is_gzip { + curl -I -H 'Accept-Encoding: gzip,deflate' $1 |grep "Content-Encoding" +} diff --git a/.aliases.d/welcome.sh b/.aliases.d/welcome.sh new file mode 100644 index 0000000..18fed48 --- /dev/null +++ b/.aliases.d/welcome.sh @@ -0,0 +1,14 @@ +#Check if Root +if [ $UID -ne 0 ]; then + # This is not a root user: + echo -ne "\033[36m" + echo "Welcome, " `whoami` + echo "This is a protected system! All access is logged." + echo -ne "\033[0m" + alias reboot='sudo reboot' +else + # Wow, got root: + echo -ne "\033[36m" + echo "You are logged in as an admin becareful! This is a restricted system." + echo -ne "\033[0m" +fi diff --git a/.aliases.d/windows.sh b/.aliases.d/windows.sh new file mode 100644 index 0000000..8af24bb --- /dev/null +++ b/.aliases.d/windows.sh @@ -0,0 +1,10 @@ +#Windows to linux +alias attrib='chmod' +alias chdir='cd' +alias copy='cp' +alias del='rm' +alias deltree='rm -r' +alias edit='nano' +alias ff='whereis' +alias mem='top' +alias move='mv' diff --git a/.aliases.d/yay.sh b/.aliases.d/yay.sh new file mode 100644 index 0000000..9abd862 --- /dev/null +++ b/.aliases.d/yay.sh @@ -0,0 +1,10 @@ +if [ -x /usr/bin/yay ]; then + alias yai='yay -S' # install package(s) + alias yas='yay -Ss' # search packages + alias yad='yay -Si' # description of the package + alias yau='yay -Syu' # update all packages + alias yar='yay -Rns' # remove package(s) + alias yac='yay -Yc' # clean unwanted packages +else + alias {yai,yas,yad,yau,yar,yac}='echo "Sorry, yay not installed"' +fi diff --git a/.aliases.d/youtube.sh b/.aliases.d/youtube.sh new file mode 100644 index 0000000..e3ea22e --- /dev/null +++ b/.aliases.d/youtube.sh @@ -0,0 +1,5 @@ +# apt install youtube-dl ?? +# https://github.com/ytdl-org/youtube-dl +alias ytd='youtube-dl -f 136' # 720p +alias ytdl='youtube-dl -f 134' # 360p +alias ytda='youtube-dl -f 140' # audio diff --git a/.aliases.d/z_mail_checker.sh b/.aliases.d/z_mail_checker.sh new file mode 100644 index 0000000..6844697 --- /dev/null +++ b/.aliases.d/z_mail_checker.sh @@ -0,0 +1 @@ +../scripts/helper/check_mail.sh diff --git a/.aliases.d/zephir.sh b/.aliases.d/zephir.sh new file mode 100644 index 0000000..ed67a81 --- /dev/null +++ b/.aliases.d/zephir.sh @@ -0,0 +1,4 @@ +# Get Zephir: https://zephir-lang.com/en +alias zcompile="zephir api -v" +alias p2z="php2zephir php2zephir:zep:create" +alias zbuild="zephir build" diff --git a/.bash_aliases b/.bash_aliases new file mode 100755 index 0000000..be269b1 --- /dev/null +++ b/.bash_aliases @@ -0,0 +1,24 @@ +_f_do_as() { + local file_name="$1" + shift # Remove the first argment (the file) + if [ -r "$file_name" ]; then + $@ + else + $USE_SUPER $@ + fi +} + +if [ -f ~/dotfiles/scripts/scan_aliases.sh ]; then + source "~/dotfiles/scripts/scan_aliases.sh" +else + SANE_TEST_FAILED=0 +fi + +if [ $SANE_TEST_FAILED -eq 0 ]; then + # Load aliases from ~/.aliases.d + if [ -d ~/.aliases.d ]; then + for f in ~/.aliases.d/*.sh; do + [ -r "$f" ] && . "$f" + done + fi +fi diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..50c459f --- /dev/null +++ b/.bashrc @@ -0,0 +1,79 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]$(__git_ps1 " (%s)"):\[\033[01;34m\]\w\[\033[00m\]\$ ' + source ~/dotfiles/scripts/helper/.git_bash_prompt +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi + +# git with Colors +#PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ " + +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if [ -f /etc/bash_completion ] && ! shopt -oq posix; then + . /etc/bash_completion +fi +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi diff --git a/.profile b/.profile new file mode 100644 index 0000000..2ec53dc --- /dev/null +++ b/.profile @@ -0,0 +1,22 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +umask 0002 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin directories +PATH="$HOME/bin:$HOME/.local/bin:$PATH" + +export PATH="$HOME/.cargo/bin:$PATH" diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..707c8f3 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License + +Copyright (c) 2021 Robert Strutts + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..866c71c --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# my dotfiles + +## stow +``` +$ sudo apt install stow +$ cd ~/dotfiles +$ stow . +``` diff --git a/cheats/bash_if_tests.txt b/cheats/bash_if_tests.txt new file mode 100644 index 0000000..f948877 --- /dev/null +++ b/cheats/bash_if_tests.txt @@ -0,0 +1,53 @@ +File test operators + +The test command includes the following FILE operators that allow you to test for particular types of files: + + -b FILE - True if the FILE exists and is a special block file. + -c FILE - True if the FILE exists and is a special character file. + -d FILE - True if the FILE exists and is a directory. + -e FILE - True if the FILE exists and is a file, regardless of type (node, directory, socket, etc.). + -f FILE - True if the FILE exists and is a regular file (not a directory or device). + -G FILE - True if the FILE exists and has the same group as the user running the command. + -h FILE - True if the FILE exists and is a symbolic link. + -g FILE - True if the FILE exists and has set-group-id (sgid) flag set. + -k FILE - True if the FILE exists and has a sticky bit flag set. + -L FILE - True if the FILE exists and is a symbolic link. + -O FILE - True if the FILE exists and is owned by the user running the command. + -p FILE - True if the FILE exists and is a pipe. + -r FILE - True if the FILE exists and is readable. + -S FILE - True if the FILE exists and is a socket. + -s FILE - True if the FILE exists and has nonzero size. + -u FILE - True if the FILE exists, and set-user-id (suid) flag is set. + -w FILE - True if the FILE exists and is writable. + -x FILE - True if the FILE exists and is executable. + +Comparison operators are operators that compare values and return true or false. When comparing strings in Bash you can use the following operators: + + -eq - equals, -ne - not equal to + string1 = string2 and string1 == string2 - The equality operator returns true if the operands are equal. + Use the = operator with the test [ command. + Use the == operator with the [[ command for pattern matching. + string1 != string2 - The inequality operator returns true if the operands are not equal. + string1 =~ regex- The regex operator returns true if the left operand matches the extended regular expression on the right. + string1 > string2 - The greater than operator returns true if the left operand is greater than the right sorted by lexicographical (alphabetical) order. + string1 < string2 - The less than operator returns true if the right operand is greater than the right sorted by lexicographical (alphabetical) order. + -z string - True if the string length is zero. + -n string - True if the string length is non-zero. + +Following are a few points to be noted when comparing strings: + + A blank space must be used between the binary operator and the operands. + Always use double quotes around the variable names to avoid any word splitting or globbing issues. + Bash does not segregate variables by “type”, variables are treated as integer or string depending on the context. + +There are multiple ways to check if a string contains a substring: + + One approach is to use surround the substring with asterisk symbols * which means match all characters. + +EX block: + +if [ -z "$1" ];then + echo "Please enter something!" +else + echo "Thanks..." +fi diff --git a/cheats/chmod.txt b/cheats/chmod.txt new file mode 100644 index 0000000..d8d96e8 --- /dev/null +++ b/cheats/chmod.txt @@ -0,0 +1,38 @@ +0 = none +1 = execute only +2 = write only +3 = write and execute (1+2) +4 = read only +5 = read and execute (4+1) +6 = read and write (4+2) +7 = read and write and execute (4+2+1) + ++ allow, - deny + ++r adds read access ++w adds write access ++x allows execution + +u = user, g = group, o = other +# Change file permissions Examples: +chmod +r file.txt +chmod u+r g+r file.txt +chmod o-w file.txt + +# ( user group other ), so 664 is u:r/w g:r/w o:r +chmod 664 file.txt + +#Change ownership of a file: chown owner:group file +chown dave:www-data file.txt + +# Add write protection, must be root....: +chattr +i data.txt + +# Remove write protection, must be root....: +chattr -i data.txt + +# Change all directories to 775 +find /var/www/myproject -type d -exec chmod 775 {} \; + +# Change all file to 664 +find /var/www/myproject -type f -exec chmod 664 {} \; diff --git a/cheats/kubernetes.txt b/cheats/kubernetes.txt new file mode 100644 index 0000000..06e9c70 --- /dev/null +++ b/cheats/kubernetes.txt @@ -0,0 +1,52 @@ +% kubernetes, k8s + +# Print all contexts +kubectl config get-contexts + +# Print current context of kubeconfig +kubectl config current-context + +# Set context of kubeconfig +kubectl config use-context + +# Print resource documentation +kubectl explain + +# Get nodes (add option '-o wide' for details) +kubectl get nodes + +# Get namespaces +kubectl get namespaces + +# Get pods from namespace (add option '-o wide' for details) +kubectl get pods -n + +# Get pods from all namespace (add option '-o wide' for details) +kubectl get pods --all-namespaces + +# Get services from namespace +kubectl get services -n + +# Get details from resource on namespace +kubectl describe / -n + +# Print logs from namespace +kubectl logs -f pods/ -n + +# Get deployments +kubectl get deployments -n + +# Edit deployments +kubectl edit deployment/ -n + +# Drain node in preparation for maintenance +kubectl drain + +# Mark node as schedulable +kubectl uncordon + +# Mark node as unschedulable +kubectl cordon + +# Display resource (cpu/memory/storage) usage +kubectl top diff --git a/cheats/linux.txt b/cheats/linux.txt new file mode 100644 index 0000000..f79d1e1 --- /dev/null +++ b/cheats/linux.txt @@ -0,0 +1,69 @@ +sudo !! - Will rerun the last command but done as ROOT + + +=============================== +How to make a .deb package: +mkdir packageName +mkdir packageName/DEBIAN +mkdir -p packageName/usr/bin + +$ nano packageName/DEBIAN/control +Package: {THE Name} +Version: 1.0 +Section: custom +Priority: optional +Architecture: all +Essential: no +Installed-Size: 1024 [note: this is the size on Disk after Install] +Maintainer: {MyName} +Description: {Does...this...} + +-----------------EOF + +Add the executables to the packageName/usr/bin folder. +Then run: $ dpkg-deb --build packageName +mv packageName.deb packageName-1.0_amd64.deb + +--Copy file to another PC, then install it, +on that PC: $ dpkg -i packageName-1.0_amd64.deb + +=========================================================== +The RedHat way, see DJ Ware's video: +https://youtu.be/iBVZ2-NIQ6I?t=1620 + +sudo dnf install -y rpmdevtools rpmlint +rpmdev-setuptree + +tar --create --file packageName-1.0.0.tar.gz packageNameExecutableFile +mv packageName-1.0.0.tar.gz rpmbuild/SOURCES + +rpmdev-newspec MySpecFile +nano MySpecFile.spec +Name: {THE Name - CHANGEME} +Version: 1.0.0 +... +Summary: {Does...this... - CHANGEME} +BuildArch: x86_64 +... +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{_bindir} +cp %{name} $RPM_BUILD_ROOT/%{_bindir} + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%{_bindir}/%{name} + +----------------EOF + +$ tree rpmbuild # To see folder structure +cd rpmbuild + +mv MySpecFile.spec rpmbuild/SPECS +rpmlint ~/rpmbuild/SPECS/MySpecFile.spec +rpmbuild -ba ~/rpmbuild/SPECS/MySpecFile.spec + +copy this file: ~/rpmbuild/RPMS/x86_64/packageName-1.0.0...x86_64.rpm +then run: dnf install on that file... diff --git a/cheats/regex.txt b/cheats/regex.txt new file mode 100644 index 0000000..5276f1d --- /dev/null +++ b/cheats/regex.txt @@ -0,0 +1,42 @@ +\ Escape + +\^ Beginning of line +\$ End of line +\* Match any # of previous or none +\+ Match any # of previous +\< Start of word +\> End of word +\b A word boundary +\B A non-word boundary +\A The begining of the input +\G The end of the previous match +\Z The end of the input but the final terminator, if any +\z The end of the input +\? Optional +\i Case-insensitive matching +\g Global match + +\. Any one character, except newline +[a-z] Any lowercase letter +[A-Z] Any uppercase letter +[A-Za-z] Any Letter +\d OR [0-9] Any digit +\D OR [^0-9] Any non-digit +\s Any white space character [ \t\n\x0B\f\r] +\S Any non-white space character [^\s] +\w A word character [a-zA-Z_0-9] +\W A non-word character [^\w] + +\{n\} Match exactly n times +\{n,\} Match at least n times +\{x,y\} Match at least x times, but no more than y times +*? Match 0 or more times, but a few times as possible ++? Match 1 or more times, but a few times as possible +?? Match 0 or 1 times, but as few times as possible +\{x,y\}? Match at least x times, no more than y times, and as few times as possible +(a|b) a or b + +Ex email pattern: grep "\S\+@\S\+\.[A-Za-z]\{2,6\}" file +OR grep -rIhEo "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" file + +Ex URL pattern: grep "https\?://\S*\.[a-z]\+" file diff --git a/cheats/tar.txt b/cheats/tar.txt new file mode 100644 index 0000000..23dea61 --- /dev/null +++ b/cheats/tar.txt @@ -0,0 +1,19 @@ +Extracting Files: +tar xvjf FILE.tar.bz2 +tar xvzf FILE.tar.gz +tar xvJf FILE.tar.xz +tar xvf FILE.tar +tar xvzf FILE.tgz +tar xvjf FILE.tbz2 +gunzip FILE.gz +unxz FILE.xz +unlzma FILE.lzma +bunzip2 FILE.bz2 +unrar x -ad FILE.rar +unzip FILE.zip +uncompress FILE.Z +7z x FILE.7z + +Compressing Files: +tar cvzf FILE.tgz files +tar cvfj FILE.tar.bz2 files diff --git a/cheats/tmux.txt b/cheats/tmux.txt new file mode 100644 index 0000000..6b0dce0 --- /dev/null +++ b/cheats/tmux.txt @@ -0,0 +1,139 @@ +# tmux shortcuts & cheatsheet +start new: + tmux + +start new with session name: + tmux new -s myname + +attach: + tmux a # (or at, or attach) + +attach to named: + tmux a -t myname + +list sessions: + tmux ls + +kill session: + tmux kill-session -t myname + +In tmux, hit the prefix `ctrl+b` (my modified prefix is ctrl+space) and then: + +## List all shortcuts +to see all the shortcuts keys in tmux simply use the `bind-key ?` in my case that would be `CTRL-space ?` + +## Sessions + :new new session + s list sessions + $ name session + +##Windows (tabs) + c create window + w list windows + n next window + p previous window + f find window + , name window + & kill window + +##Panes (splits) + | vertical split (default was %) + - horizontal split (default was ") + o swap panes + q show pane numbers + x kill pane + + break pane into window (e.g. to select text by mouse to copy) + - restore pane from window + ⍽ space - toggle between layouts + q (Show pane numbers, when the numbers show up type the key to goto that pane) + { (Move the current pane left) + } (Move the current pane right) + z toggle pane zoom + arrow key - move to pane + arrow key - move to pane + +##Sync Panes +You can do this by switching to the appropriate window, typing your Tmux prefix (commonly Ctrl-B or Ctrl-space) and then a colon to bring up a Tmux command line, and typing: +``` +:setw synchronize-panes +``` +You can optionally add on or off to specify which state you want; otherwise the option is simply toggled. This option is specific to one window, so it won’t change the way your other sessions or windows operate. When you’re done, toggle it off again by repeating the command. [tip source](http://blog.sanctum.geek.nz/sync-tmux-panes/) + + +## Resizing Panes +You can also resize panes if you don’t like the layout defaults. I personally rarely need to do this, though it’s handy to know how. Here is the basic syntax to resize panes: + PREFIX : resize-pane -D (Resizes the current pane down) + PREFIX : resize-pane -U (Resizes the current pane upward) + PREFIX : resize-pane -L (Resizes the current pane left) + PREFIX : resize-pane -R (Resizes the current pane right) + PREFIX : resize-pane -D 20 (Resizes the current pane down by 20 cells) + PREFIX : resize-pane -U 20 (Resizes the current pane upward by 20 cells) + PREFIX : resize-pane -L 20 (Resizes the current pane left by 20 cells) + PREFIX : resize-pane -R 20 (Resizes the current pane right by 20 cells) + PREFIX : resize-pane -t 2 -L 20 (Resizes the pane with the id of 2 left by 20 cells) + +## Copy mode: +Pressing PREFIX [ places us in Copy mode. We can then use our movement keys to move our cursor around the screen. By default, the arrow keys work. we set our configuration file to use Vim keys for moving between windows and resizing panes so we wouldn’t have to take our hands off the home row. tmux has a vi mode for working with the buffer as well. To enable it, add this line to .tmux.conf: + + setw -g mode-keys vi + +With this option set, we can use h, j, k, and l to move around our buffer. + +To get out of Copy mode, we just press the ENTER key. Moving around one character at a time isn’t very efficient. Since we enabled vi mode, we can also use some other visible shortcuts to move around the buffer. + +For example, we can use "w" to jump to the next word and "b" to jump back one word. And we can use "f", followed by any character, to jump to that character on the same line, and "F" to jump backwards on the line. + + Function vi emacs + Back to indentation ^ M-m + Clear selection Escape C-g + Copy selection Enter M-w + Cursor down j Down + Cursor left h Left + Cursor right l Right + Cursor to bottom line L + Cursor to middle line M M-r + Cursor to top line H M-R + Cursor up k Up + Delete entire line d C-u + Delete to end of line D C-k + End of line $ C-e + Goto line : g + Half page down C-d M-Down + Half page up C-u M-Up + Next page C-f Page down + Next word w M-f + Paste buffer p C-y + Previous page C-b Page up + Previous word b M-b + Quit mode q Escape + Scroll down C-Down or J C-Down + Scroll up C-Up or K C-Up + Search again n n + Search backward ? C-r + Search forward / C-s + Start of line 0 C-a + Start selection Space C-Space + Transpose chars C-t + +## Misc + d detach + t big clock + ? list shortcuts + : prompt + +## Configurations Options: + # Mouse support - set to on if you want to use the mouse + * setw -g mode-mouse off + * set -g mouse-select-pane off + * set -g mouse-resize-pane off + * set -g mouse-select-window off + + # Set the default terminal mode to 256color mode + set -g default-terminal "screen-256color" + + # enable activity alerts + setw -g monitor-activity on + set -g visual-activity on + + # Center the window list + set -g status-justify centre diff --git a/scripts/bible_quotes.sh b/scripts/bible_quotes.sh new file mode 100755 index 0000000..7076c37 --- /dev/null +++ b/scripts/bible_quotes.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +bible-quote() { + declare -a BIBLE_ARRAY=("Jeremiah 31:3\n The Lord hath appeared of old unto me, saying, Yea, I have loved thee with an everlasting love: therefore with lovingkindness have I drawn thee." "Matthew 6:30\n Wherefore, if God so clothe the grass of the field, which to day is, and to morrow is cast into the oven, shall he not much more clothe you, O ye of little faith?" "I Corinthians 8:3\n But if any man love God, the same is known of him." "Hebrews 10:24\n And let us consider one another to provoke unto love and to good works:" "Ephesians 1:3\n Blessed be the God and Father of our Lord Jesus Christ, who hath blessed us with all spiritual blessings in heavenly places in Christ:" "John 3:16\n For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life." "Philippians 1:9\n And this I pray, that your love may abound yet more and more in knowledge and in all judgment;" "Proverbs 8:17\n I love them that love me; and those that seek me early shall find me." "Romans 13:10\n Love worketh no ill to his neighbour: therefore love is the fulfilling of the law." "I Corinthians 13:4-7\nCharity suffereth long, and is kind; charity envieth not; charity vaunteth not itself, is not puffed up, doth not behave itself unseemly, seeketh not her own, is not easily provoked, thinketh no evil; rejoiceth not in iniquity, but rejoiceth in the truth; beareth all things, believeth all things, hopeth all things, endureth all things." "Deuteronomy 6:5\n And thou shalt love the Lord thy God with all thine heart, and with all thy soul, and with all thy might." "John 17:26\n And I have declared unto them thy name, and will declare it: that the love wherewith thou hast loved me may be in them, and I in them." "Joshua 23:11\n Take good heed therefore unto yourselves, that ye love the Lord your God." "Jude 1:21\nKeep yourselves in the love of God, looking for the mercy of our Lord Jesus Christ unto eternal life." "Psalm 91:4\nBecause he hath set his love upon me, therefore will I deliver him: I will set him on high, because he hath known my name." "Romans 8:38-39\n For I am persuaded, that neither death, nor life, nor angels, nor principalities, nor powers, nor things present, nor things to come, nor height, nor depth, nor any other creature, shall be able to separate us from the love of God, which is in Christ Jesus our Lord." "Proverbs 17:17\nA friend loveth at all times, and a brother is born for adversity." "II Thessalonians 3:5\n And the Lord direct your hearts into the love of God, and into the patient waiting for Christ." "Song of Solomon 2:4\n He brought me to the banqueting house, and his banner over me was love." "Galatians 5:13\n For, brethren, ye have been called unto liberty; only use not liberty for an occasion to the flesh, but by love serve one another." "John 14:21\n He that hath my commandments, and keepeth them, he it is that loveth me: and he that loveth me shall be loved of my Father, and I will love him, and will manifest myself to him." "I John 3:18\n My little children, let us not love in word, neither in tongue; but in deed and in truth." "Ephesians 5:25\n Husbands, love your wives, even as Christ also loved the church, and gave himself for it;" "Mark 12:33\n And to love him with all the heart, and with all the understanding, and with all the soul, and with all the strength, and to love his neighbour as himself, is more than all whole burnt offerings and sacrifices." "Luke 6:35\n But love ye your enemies, and do good, and lend, hoping for nothing again; and your reward shall be great, and ye shall be the children of the Highest: for he is kind unto the unthankful and to the evil." "I John 3:16\n Hereby perceive we the love of God, because he laid down his life for us: and we ought to lay down our lives for the brethren." "John 13:35\n By this shall all men know that ye are my disciples, if ye have love one to another." "II John 1:6\n And this is love, that we walk after his commandments. This is the commandment, That, as ye have heard from the beginning, ye should walk in it." "Romans 12:10\n Be kindly affectioned one to another with brotherly love; in honour preferring one another;" "John 15:9\n As the Father hath loved me, so have I loved you: continue ye in my love." "Deuteronomy 10:19\n Love ye therefore the stranger: for ye were strangers in the land of Egypt." "Matthew 22:37\n Jesus said unto him, Thou shalt love the Lord thy God with all thy heart, and with all thy soul, and with all thy mind." "Romans 8:37\n Nay, in all these things we are more than conquerors through him that loved us." "John 14:15\n If ye love me, keep my commandments." "Romans 13:8\n Owe no man any thing, but to love one another: for he that loveth another hath fulfilled the law." "I Corinthians 8:3\n But if any man love God, the same is known of him." "Song of Solomon 8:7\n Many waters cannot quench love, neither can the floods drown it: if a man would give all the substance of his house for love, it would utterly be contemned." "Galatians 5:32, 33\n But the fruit of the Spirit is love, joy, peace, longsuffering, gentleness, goodness, faith, meekness, temperance: against such there is no law." "I John 2:10\n He that loveth his brother abideth in the light, and there is none occasion of stumbling in him." "I Thessalonians 3:12\n And the Lord make you to increase and abound in love one toward another, and toward all men, even as we do toward you:" "Ephesians 5:2\n And walk in love, as Christ also hath loved us, and hath given himself for us an offering and a sacrifice to God for a sweetsmelling savour." "Romans 5:8\n But God commendeth his love toward us, in that, while we were yet sinners, Christ died for us." "John 13:34\n A new commandment I give unto you, That ye love one another; as I have loved you, that ye also love one another." "Philippians 2:2\n Fulfil ye my joy, that ye be likeminded, having the same love, being of one accord, of one mind." "Ephesians 4:15\n But speaking the truth in love, may grow up into him in all things, which is the head, even Christ:" "Ecclesiastes 9:9\n Live joyfully with the wife whom thou lovest all the days of the life of thy vanity, which he hath given thee under the sun, all the days of thy vanity: for that is thy portion in this life, and in thy labour which thou takest under the sun." "I John 4:10\n Herein is love, not that we loved God, but that he loved us, and sent his Son to be the propitiation for our sins." "Philemon 1:7\n For we have great joy and consolation in thy love, because the bowels of the saints are refreshed by thee, brother." "Hebrews 6:10\n For God is not unrighteous to forget your work and labour of love, which ye have shewed toward his name, in that ye have ministered to the saints, and do minister." "Zephaniah 3:17\n The Lord thy God in the midst of thee is mighty; he will save, he will rejoice over thee with joy; he will rest in his love, he will joy over thee with singing." "Hebrews 13:1\n Let brotherly love continue." "James 1:12\n Blessed is the man that endureth temptation: for when he is tried, he shall receive the crown of life, which the Lord hath promised to them that love him." "I Peter 3:8\n Finally, be ye all of one mind, having compassion one of another, love as brethren, be pitiful, be courteous:" "Ephesians 2:4,5\n But God, who is rich in mercy, for his great love wherewith he loved us, even when we were dead in sins, hath quickened us together with Christ, (by grace ye are saved;)" "I John 3:1\n Behold, what manner of love the Father hath bestowed upon us, that we should be called the sons of God: therefore the world knoweth us not, because it knew him not." "John 5:20\n For the Father loveth the Son, and sheweth him all things that himself doeth: and he will shew him greater works than these, that ye may marvel." "Matthew 5:44\n But I say unto you, Love your enemies, bless them that curse you, do good to them that hate you, and pray for them which despitefully use you, and persecute you;" "I John 4:7\n Beloved, let us love one another: for love is of God; and every one that loveth is born of God, and knoweth God." "II Timothy 1:7\n For God hath not given us the spirit of fear; but of power, and of love, and of a sound mind." "I John 4:18\n There is no fear in love; but perfect love casteth out fear: because fear hath torment. He that feareth is not made perfect in love." "Isaiah 43:4\n Since thou wast precious in my sight, thou hast been honourable, and I have loved thee: therefore will I give men for thee, and people for thy life." "Psalm 5:11\n But let all those that put their trust in thee rejoice: let them ever shout for joy, because thou defendest them: let them also that love thy name be joyful in thee.") + echo -e ${BIBLE_ARRAY["$[RANDOM % ${#BIBLE_ARRAY[@]}]"]} + unset BIBLE_ARRAY +} + +bible-quote diff --git a/scripts/debian_deps.list b/scripts/debian_deps.list new file mode 100644 index 0000000..b49ec41 --- /dev/null +++ b/scripts/debian_deps.list @@ -0,0 +1,2 @@ +pass gnupg2 xclip dialog mlocate wofi expect fonts-powerline fonts-hack-ttf firejail mutt mosh sshfs git tmux fzf bat ranger neofetch htop ncdu ripgrep fd-find + diff --git a/scripts/helper/.git_bash_prompt b/scripts/helper/.git_bash_prompt new file mode 100644 index 0000000..ab1f965 --- /dev/null +++ b/scripts/helper/.git_bash_prompt @@ -0,0 +1,276 @@ +PROFILE_PATH=/opt/profiles +# Set the bash prompt according to: +# * the branch/status of the current git repository +# * the return value of the previous command +# AUTHOR: Scott Woods West Arete Computing +# Based on work by halbtuerke and lakiolen. +# http://gist.github.com/31967 + +# Unicode symbols https://github.com/pjmp/fancy-linux-prompt/blob/master/fancy-prompt.sh +# The various escape codes that we can use to color our prompt. +# Glued together by Bob S. -> https://github.com/technowizardbob/profiles + GIT_BRANCH_CHANGED_SYMBOL='+ changed' + GIT_NEED_PULL_SYMBOL='⇣ do pull' + GIT_NEED_PUSH_SYMBOL='⇡ needs push' + + BOLD="\\[$(tput bold)\\]" + DIM="\\[$(tput dim)\\]" + RESET="\\[$(tput sgr0)\\]" + REVERSE="\\[$(tput rev)\\]" + + RED="\[\033[1;31m\]" + YELLOW="\[\033[1;33m\]" + GREEN="\[\033[0;32m\]" + BLUE="\[\033[1;34m\]" + MAGENTA="\[\033[1;35m\]" + CYAN="\[\033[1;36m\]" + LIGHT_RED="\[\033[1;31m\]" +LIGHT_GREEN="\[\033[1;32m\]" + LIGHT_BLUE="\[\033[1;94m\]" + LIGHT_CYAN="\[\033[1;96m\]" + WHITE="\[\033[1;37m\]" + BLACK="\[\033[1;30m\]" + LIGHT_GRAY="\[\033[1;37m\]" + + BK_DEFAULT="\[\e[49m\]" + BK_BLACK="\[\e[40m\]" + BK_RED="\[\e[41m\]" + BK_GREEN="\[\e[42m\]" + BK_YELLOW="\[\e[43m\]" + BK_BLUE="\[\e[44m\]" + BK_LIGHT_RED="\[\e[101m\]" + BK_LIGHT_GREEN="\[\e[102m\]" + BK_LIGHT_YELLOW="\[\e[103m\]" + BK_LIGHT_BLUE="\[\e[104m\]" + BK_LIGHT_CYAN="\[\e[106m\]" + BK_LIGHT_WHITE="\[\e[107m\]" + BK_EXIT="\[\e[49m\]" + + COLOR_NONE="\[\e[0m\]" + COLOR_DEFAULT="\[\e[39m\]" + +[ -f ~/dotfiles/scripts/helper/.kube-ps1 ] && source ~/dotfiles/scripts/helper/.kube-ps1 + +function is_normal_theme() { + # sudo apt-get install fonts-powerline + + if [ -f "~/dotfiles/.data/.unicode_support" ]; then + PS_SYMBOL='🐧' + SEGMENT_SEPARATOR=$'\ue0b0' + PL_BRANCH_CHAR=$'\ue0a0' #  + else + PS_SYMBOL='' + SEGMENT_SEPARATOR=' -> ' + PL_BRANCH_CHAR='' + fi + + if [ -f "~/dotfiles/.data/.simple_theme" ]; then + return 1 + else + return 0 + fi +} + +__git_info() { + # no .git directory + [ -d .git ] || return + + local aheadN + local behindN + local branch + local marks + local stats + + # get current branch name or short SHA1 hash for detached head + branch="$(git symbolic-ref --short HEAD 2>/dev/null || git describe --tags --always 2>/dev/null)" + [ -n "$branch" ] || return # git branch not found + + # how many commits local branch is ahead/behind of remote? + stats="$(git status --porcelain --branch | grep '^##' | grep -o '\[.\+\]$')" + aheadN="$(echo "$stats" | grep -o 'ahead \d\+' | grep -o '\d\+')" + behindN="$(echo "$stats" | grep -o 'behind \d\+' | grep -o '\d\+')" + [ -n "$aheadN" ] && marks+=" $GIT_NEED_PUSH_SYMBOL$aheadN" + [ -n "$behindN" ] && marks+=" $GIT_NEED_PULL_SYMBOL$behindN" + + if ! is_normal_theme; then + printf "%s" "$state[$branch]$WHITE$marks" + return + fi + + # print the git branch segment without a trailing newline + # branch is modified? + if [ -n "$(git status --porcelain)" ]; then + printf "%s" "$RESET$bk$WHITE[$branch]$marks$state" + else + printf "%s" "$RESET$bk$WHITE[$branch]$marks$RESET$state" + fi + } + +# Detect whether the current directory is a git repository. +function is_git_repository { + git branch > /dev/null 2>&1 +} + +# Determine the branch/state information for this git repository. +function set_git_branch { + # Capture the output of the "git status" command. + git_status="$(git status 2> /dev/null)" + + # Set color based on clean/staged/dirty. + if [[ ${git_status} =~ "working tree clean" ]]; then + state="${GREEN}" + bk="$BK_GREEN" + elif [[ ${git_status} =~ "Changes to be committed" ]]; then + state="${YELLOW}" + bk="$BK_YELLOW" + else + state="${RED}" + bk="$BK_RED" + fi + + # Set arrow icon based on status against remote. + remote_pattern="# Your branch is (.*) of" + if [[ ${git_status} =~ ${remote_pattern} ]]; then + if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then + remote="↑ needs push" + else + remote="↓ do pull" + fi + else + remote="$PL_BRANCH_CHAR" + fi + diverge_pattern="# Your branch and (.*) have diverged" + if [[ ${git_status} =~ ${diverge_pattern} ]]; then + remote="↕ changed" + fi + + BRANCH="${state}(git)${COLOR_NONE}${remote} " + BRANCH+="$(__git_info bk)" + if is_normal_theme; then + BRANCH+="$BK_EXIT${SEGMENT_SEPARATOR}$RESET" + fi +} + + +# Return the prompt symbol to use, colorized based on the return value of the +# previous command. +function set_prompt_symbol() { + if is_normal_theme; then + ERRX="✘" + else + ERRX="Opps!" + fi + if test $1 -eq 0 ; then + PROMPT_SYMBOL="\$${COLOR_NONE}" + else + PROMPT_SYMBOL="${RED}${ERRX} \$${COLOR_NONE}" + fi +} + +function pydir() { + local pyt=$(dirname "$1") + local pw=$(pwd) + if [ "$pyt" == "$pw" ]; then + return 0 + fi + return 1 +} +# Function to check if inside a Python virtual environment +function is_in_python_env() { + # Check for VIRTUAL_ENV environment variable (most reliable method) + if [ -n "$VIRTUAL_ENV" ]; then + if pydir "$VIRTUAL_ENV"; then + return 0 + fi + fi + + # Alternative check for venv/pipenv/conda environments + if [ -n "$CONDA_DEFAULT_ENV" ]; then + if pydir "$CONDA_DEFAULT_ENV"; then + return 0 + fi + fi + if [ -n "$PIPENV_ACTIVE" ]; then + return 0 + fi + + return 1 +} + + +# Set the full bash prompt. +function set_bash_prompt() { + # Set the PROMPT_SYMBOL variable. We do this first so we don't lose the + # return value of the last command. + set_prompt_symbol $? + + # Set the BRANCH variable. + if is_git_repository ; then + set_git_branch + else + BRANCH='' + fi + + if is_in_python_env ; then + PY="🐍" + else + PY='' + fi + # Set the bash prompt variable. + + if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then + _distro=$(awk '/^ID=/' /etc/*-release | awk -F'=' '{ print tolower($2) }') + + # set an icon based on the distro + # make sure your font is compatible with https://github.com/lukas-w/font-logos +case $_distro in + *kali*) ICON="ﴣ";; + *arch*) ICON="";; + *debian*) ICON="";; + *raspbian*) ICON="";; + *ubuntu*) ICON="";; + *elementary*) ICON="";; + *fedora*) ICON="";; + *coreos*) ICON="";; + *gentoo*) ICON="";; + *mageia*) ICON="";; + *centos*) ICON="";; + *opensuse*|*tumbleweed*) ICON="";; + *sabayon*) ICON="";; + *slackware*) ICON="";; + *linuxmint*) ICON="";; + *alpine*) ICON="";; + *aosc*) ICON="";; + *nixos*) ICON="";; + *devuan*) ICON="";; + *manjaro*) ICON="";; + *rhel*) ICON="";; + *macos*) ICON="";; + *) ICON="";; +esac + + UPC="${RED}SSH:${WHITE}${PY} ${ICON} " + else + UPC="Local:${PY}" + fi + + # if you want kube prompt + [ -f ~/dotfiles/scripts/helper/.kube-ps1 ] && PS1="$(kube_ps1)\r\n" + [ ! -f ~/dotfiles/scripts/helper/.kube-ps1 ] && PS1="" + + if [ -f "~/dotfiles/scripts/helper/theme" ]; then + source "~/dotfiles/scripts/helper/theme" + else + UPC+="\u@\h" + if is_normal_theme; then + PS1+="${BK_GREEN}$WHITE$UPC${GREEN}${SEGMENT_SEPARATOR}" + WD="$WHITE$BK_BLUE\\w${COLOR_NONE}${BLUE}${SEGMENT_SEPARATOR}${WHITE}" + PS1+="${WHITE}${BRANCH}${WD}$PS_SYMBOL${PROMPT_SYMBOL} " + else + WD="\\w${COLOR_NONE}${WHITE}" + PS1+="$CYAN$UPC ${WHITE}${BRANCH} ${WD} ${PROMPT_SYMBOL} " + fi + fi +} +# Tell bash to execute this function just before displaying its prompt. +PROMPT_COMMAND=set_bash_prompt diff --git a/scripts/helper/.kube-ps1 b/scripts/helper/.kube-ps1 new file mode 100644 index 0000000..91022a1 --- /dev/null +++ b/scripts/helper/.kube-ps1 @@ -0,0 +1,378 @@ +#!/usr/bin/env bash + +# Kubernetes prompt helper for bash/zsh +# Displays current context and namespace + +# Copyright 2021 Jon Mosco +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Debug +[[ -n $DEBUG ]] && set -x + +# Default values for the prompt +# Override these values in ~/.zshrc or ~/.bashrc +KUBE_PS1_BINARY="${KUBE_PS1_BINARY:-kubectl}" +KUBE_PS1_SYMBOL_ENABLE="${KUBE_PS1_SYMBOL_ENABLE:-true}" +KUBE_PS1_SYMBOL_DEFAULT=${KUBE_PS1_SYMBOL_DEFAULT:-$'\u2388'} +KUBE_PS1_SYMBOL_PADDING="${KUBE_PS1_SYMBOL_PADDING:-true}" +KUBE_PS1_SYMBOL_USE_IMG="${KUBE_PS1_SYMBOL_USE_IMG:-false}" +KUBE_PS1_NS_ENABLE="${KUBE_PS1_NS_ENABLE:-true}" +KUBE_PS1_CONTEXT_ENABLE="${KUBE_PS1_CONTEXT_ENABLE:-true}" +KUBE_PS1_PREFIX="${KUBE_PS1_PREFIX-(}" +KUBE_PS1_SEPARATOR="${KUBE_PS1_SEPARATOR-|}" +KUBE_PS1_DIVIDER="${KUBE_PS1_DIVIDER-:}" +KUBE_PS1_SUFFIX="${KUBE_PS1_SUFFIX-)}" + +KUBE_PS1_SYMBOL_COLOR="${KUBE_PS1_SYMBOL_COLOR-blue}" +KUBE_PS1_CTX_COLOR="${KUBE_PS1_CTX_COLOR-red}" +KUBE_PS1_NS_COLOR="${KUBE_PS1_NS_COLOR-cyan}" +KUBE_PS1_BG_COLOR="${KUBE_PS1_BG_COLOR}" + +KUBE_PS1_KUBECONFIG_CACHE="${KUBECONFIG}" +KUBE_PS1_DISABLE_PATH="${HOME}/.kube/kube-ps1/disabled" +KUBE_PS1_LAST_TIME=0 +KUBE_PS1_CLUSTER_FUNCTION="${KUBE_PS1_CLUSTER_FUNCTION}" +KUBE_PS1_NAMESPACE_FUNCTION="${KUBE_PS1_NAMESPACE_FUNCTION}" + +# Determine our shell +if [ "${ZSH_VERSION-}" ]; then + KUBE_PS1_SHELL="zsh" +elif [ "${BASH_VERSION-}" ]; then + KUBE_PS1_SHELL="bash" +fi + +_kube_ps1_init() { + [[ -f "${KUBE_PS1_DISABLE_PATH}" ]] && KUBE_PS1_ENABLED=off + + case "${KUBE_PS1_SHELL}" in + "zsh") + _KUBE_PS1_OPEN_ESC="%{" + _KUBE_PS1_CLOSE_ESC="%}" + _KUBE_PS1_DEFAULT_BG="%k" + _KUBE_PS1_DEFAULT_FG="%f" + setopt PROMPT_SUBST + autoload -U add-zsh-hook + add-zsh-hook precmd _kube_ps1_update_cache + zmodload -F zsh/stat b:zstat + zmodload zsh/datetime + ;; + "bash") + _KUBE_PS1_OPEN_ESC=$'\001' + _KUBE_PS1_CLOSE_ESC=$'\002' + _KUBE_PS1_DEFAULT_BG=$'\033[49m' + _KUBE_PS1_DEFAULT_FG=$'\033[39m' + [[ $PROMPT_COMMAND =~ _kube_ps1_update_cache ]] || PROMPT_COMMAND="_kube_ps1_update_cache;${PROMPT_COMMAND:-:}" + ;; + esac +} + +_kube_ps1_color_fg() { + local KUBE_PS1_FG_CODE + case "${1}" in + black) KUBE_PS1_FG_CODE=0;; + red) KUBE_PS1_FG_CODE=1;; + green) KUBE_PS1_FG_CODE=2;; + yellow) KUBE_PS1_FG_CODE=3;; + blue) KUBE_PS1_FG_CODE=4;; + magenta) KUBE_PS1_FG_CODE=5;; + cyan) KUBE_PS1_FG_CODE=6;; + white) KUBE_PS1_FG_CODE=7;; + # 256 + [0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) KUBE_PS1_FG_CODE="${1}";; + *) KUBE_PS1_FG_CODE=default + esac + + if [[ "${KUBE_PS1_FG_CODE}" == "default" ]]; then + KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}" + return + elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then + KUBE_PS1_FG_CODE="%F{$KUBE_PS1_FG_CODE}" + elif [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then + if tput setaf 1 &> /dev/null; then + KUBE_PS1_FG_CODE="$(tput setaf ${KUBE_PS1_FG_CODE})" + elif [[ $KUBE_PS1_FG_CODE -ge 0 ]] && [[ $KUBE_PS1_FG_CODE -le 256 ]]; then + KUBE_PS1_FG_CODE="\033[38;5;${KUBE_PS1_FG_CODE}m" + else + KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}" + fi + fi + echo ${_KUBE_PS1_OPEN_ESC}${KUBE_PS1_FG_CODE}${_KUBE_PS1_CLOSE_ESC} +} + +_kube_ps1_color_bg() { + local KUBE_PS1_BG_CODE + case "${1}" in + black) KUBE_PS1_BG_CODE=0;; + red) KUBE_PS1_BG_CODE=1;; + green) KUBE_PS1_BG_CODE=2;; + yellow) KUBE_PS1_BG_CODE=3;; + blue) KUBE_PS1_BG_CODE=4;; + magenta) KUBE_PS1_BG_CODE=5;; + cyan) KUBE_PS1_BG_CODE=6;; + white) KUBE_PS1_BG_CODE=7;; + # 256 + [0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) KUBE_PS1_BG_CODE="${1}";; + *) KUBE_PS1_BG_CODE=$'\033[0m';; + esac + + if [[ "${KUBE_PS1_BG_CODE}" == "default" ]]; then + KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_BG}" + return + elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then + KUBE_PS1_BG_CODE="%K{$KUBE_PS1_BG_CODE}" + elif [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then + if tput setaf 1 &> /dev/null; then + KUBE_PS1_BG_CODE="$(tput setab ${KUBE_PS1_BG_CODE})" + elif [[ $KUBE_PS1_BG_CODE -ge 0 ]] && [[ $KUBE_PS1_BG_CODE -le 256 ]]; then + KUBE_PS1_BG_CODE="\033[48;5;${KUBE_PS1_BG_CODE}m" + else + KUBE_PS1_BG_CODE="${DEFAULT_BG}" + fi + fi + echo ${OPEN_ESC}${KUBE_PS1_BG_CODE}${CLOSE_ESC} +} + +_kube_ps1_binary_check() { + command -v $1 >/dev/null +} + +_kube_ps1_symbol() { + [[ "${KUBE_PS1_SYMBOL_ENABLE}" == false ]] && return + + case "${KUBE_PS1_SHELL}" in + bash) + if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then + KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}" + KUBE_PS1_SYMBOL_IMG=$'\u2638\ufe0f' + else + KUBE_PS1_SYMBOL=$'\xE2\x8E\x88' + KUBE_PS1_SYMBOL_IMG=$'\xE2\x98\xB8' + fi + ;; + zsh) + KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}" + KUBE_PS1_SYMBOL_IMG="\u2638";; + *) + KUBE_PS1_SYMBOL="k8s" + esac + + if [[ "${KUBE_PS1_SYMBOL_USE_IMG}" == true ]]; then + KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_IMG}" + fi + + if [[ "${KUBE_PS1_SYMBOL_PADDING}" == true ]]; then + echo "${KUBE_PS1_SYMBOL} " + else + echo "${KUBE_PS1_SYMBOL}" + fi + +} + +_kube_ps1_split() { + type setopt >/dev/null 2>&1 && setopt SH_WORD_SPLIT + local IFS=$1 + echo $2 +} + +_kube_ps1_file_newer_than() { + local mtime + local file=$1 + local check_time=$2 + + if [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then + mtime=$(zstat +mtime "${file}") + elif stat -c "%s" /dev/null &> /dev/null; then + # GNU stat + mtime=$(stat -L -c %Y "${file}") + else + # BSD stat + mtime=$(stat -L -f %m "$file") + fi + + [[ "${mtime}" -gt "${check_time}" ]] +} + +_kube_ps1_update_cache() { + local return_code=$? + + [[ "${KUBE_PS1_ENABLED}" == "off" ]] && return $return_code + + if ! _kube_ps1_binary_check "${KUBE_PS1_BINARY}"; then + # No ability to fetch context/namespace; display N/A. + KUBE_PS1_CONTEXT="BINARY-N/A" + KUBE_PS1_NAMESPACE="N/A" + return + fi + + if [[ "${KUBECONFIG}" != "${KUBE_PS1_KUBECONFIG_CACHE}" ]]; then + # User changed KUBECONFIG; unconditionally refetch. + KUBE_PS1_KUBECONFIG_CACHE=${KUBECONFIG} + _kube_ps1_get_context_ns + return + fi + + # kubectl will read the environment variable $KUBECONFIG + # otherwise set it to ~/.kube/config + local conf + for conf in $(_kube_ps1_split : "${KUBECONFIG:-${HOME}/.kube/config}"); do + [[ -r "${conf}" ]] || continue + if _kube_ps1_file_newer_than "${conf}" "${KUBE_PS1_LAST_TIME}"; then + _kube_ps1_get_context_ns + return + fi + done + + return $return_code +} + +_kube_ps1_get_context() { + if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then + KUBE_PS1_CONTEXT="$(${KUBE_PS1_BINARY} config current-context 2>/dev/null)" + # Set namespace to 'N/A' if it is not defined + KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}" + + if [[ ! -z "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then + KUBE_PS1_CONTEXT=$($KUBE_PS1_CLUSTER_FUNCTION $KUBE_PS1_CONTEXT) + fi + fi +} + +_kube_ps1_get_ns() { + if [[ "${KUBE_PS1_NS_ENABLE}" == true ]]; then + KUBE_PS1_NAMESPACE="$(${KUBE_PS1_BINARY} config view --minify --output 'jsonpath={..namespace}' 2>/dev/null)" + # Set namespace to 'default' if it is not defined + KUBE_PS1_NAMESPACE="${KUBE_PS1_NAMESPACE:-default}" + + if [[ ! -z "${KUBE_PS1_NAMESPACE_FUNCTION}" ]]; then + KUBE_PS1_NAMESPACE=$($KUBE_PS1_NAMESPACE_FUNCTION $KUBE_PS1_NAMESPACE) + fi + fi +} + +_kube_ps1_get_context_ns() { + # Set the command time + if [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then + if ((BASH_VERSINFO[0] >= 4 && BASH_VERSINFO[1] >= 2)); then + KUBE_PS1_LAST_TIME=$(printf '%(%s)T') + else + KUBE_PS1_LAST_TIME=$(date +%s) + fi + elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then + KUBE_PS1_LAST_TIME=$EPOCHSECONDS + fi + + _kube_ps1_get_context + _kube_ps1_get_ns +} + +# Set kube-ps1 shell defaults +_kube_ps1_init + +_kubeon_usage() { + cat <<"EOF" +Toggle kube-ps1 prompt on + +Usage: kubeon [-g | --global] [-h | --help] + +With no arguments, turn off kube-ps1 status for this shell instance (default). + + -g --global turn on kube-ps1 status globally + -h --help print this message +EOF +} + +_kubeoff_usage() { + cat <<"EOF" +Toggle kube-ps1 prompt off + +Usage: kubeoff [-g | --global] [-h | --help] + +With no arguments, turn off kube-ps1 status for this shell instance (default). + + -g --global turn off kube-ps1 status globally + -h --help print this message +EOF +} + +kubeon() { + if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then + _kubeon_usage + elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then + rm -f -- "${KUBE_PS1_DISABLE_PATH}" + elif [[ "$#" -ne 0 ]]; then + echo -e "error: unrecognized flag ${1}\\n" + _kubeon_usage + return + fi + + KUBE_PS1_ENABLED=on +} + +kubeoff() { + if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then + _kubeoff_usage + elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then + mkdir -p -- "$(dirname "${KUBE_PS1_DISABLE_PATH}")" + touch -- "${KUBE_PS1_DISABLE_PATH}" + elif [[ $# -ne 0 ]]; then + echo "error: unrecognized flag ${1}" >&2 + _kubeoff_usage + return + fi + + KUBE_PS1_ENABLED=off +} + +# Build our prompt +kube_ps1() { + [[ "${KUBE_PS1_ENABLED}" == "off" ]] && return + [[ -z "${KUBE_PS1_CONTEXT}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]] && return + + local KUBE_PS1 + local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}" + + # Background Color + [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="$(_kube_ps1_color_bg ${KUBE_PS1_BG_COLOR})" + + # Prefix + [[ -n "${KUBE_PS1_PREFIX}" ]] && KUBE_PS1+="${KUBE_PS1_PREFIX}" + + # Symbol + KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_SYMBOL_COLOR)$(_kube_ps1_symbol)${KUBE_PS1_RESET_COLOR}" + + if [[ -n "${KUBE_PS1_SEPARATOR}" ]] && [[ "${KUBE_PS1_SYMBOL_ENABLE}" == true ]]; then + KUBE_PS1+="${KUBE_PS1_SEPARATOR}" + fi + + # Context + if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then + KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_CTX_COLOR)${KUBE_PS1_CONTEXT}${KUBE_PS1_RESET_COLOR}" + fi + + # Namespace + if [[ "${KUBE_PS1_NS_ENABLE}" == true ]]; then + if [[ -n "${KUBE_PS1_DIVIDER}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then + KUBE_PS1+="${KUBE_PS1_DIVIDER}" + fi + KUBE_PS1+="$(_kube_ps1_color_fg ${KUBE_PS1_NS_COLOR})${KUBE_PS1_NAMESPACE}${KUBE_PS1_RESET_COLOR}" + fi + + # Suffix + [[ -n "${KUBE_PS1_SUFFIX}" ]] && KUBE_PS1+="${KUBE_PS1_SUFFIX}" + + # Close Background color if defined + [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_BG}${_KUBE_PS1_CLOSE_ESC}" + + echo "${KUBE_PS1}" +} \ No newline at end of file diff --git a/scripts/helper/check_mail.sh b/scripts/helper/check_mail.sh new file mode 100755 index 0000000..643a048 --- /dev/null +++ b/scripts/helper/check_mail.sh @@ -0,0 +1,82 @@ +MAIL_FOLDER=/var/mail + +if groups "$USER" | grep -o "sudo" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "doas" >/dev/null 2>/dev/null; then + USE_SUPER="doas" +elif groups "$USER" | grep -o "wheel" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "admin" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif [ "$EUID" -eq 0 ]; then + USE_SUPER="\$" +else + USE_SUPER="" +fi + +del_mail() { + if [ ! -f "$MAIL_FOLDER/$1" ]; then + return + fi + if [ $(sudo cat "$MAIL_FOLDER/$1" | wc -l) -eq 0 ]; then + sudo rm "$MAIL_FOLDER/$1" + return + fi + + read -r -p "Would you like to save your mail or delete it [save or delete] : " keep + if [ "$keep" == "delete" ] || [ "$keep" == "del" ]; then + echo "Attempting to erase mail for user $1." + sudo rm "$MAIL_FOLDER/$1" + fi +} + +read_mail() { + if [ ! -f "$MAIL_FOLDER/$1" ]; then + return + fi + + if [ $EUID -ne 0 ] && [ -z "$USE_SUPER" ]; then + echo "Have your Root user check the mailbox for ${MAIL_FOLDER}/$1 has Mail in it!" + return + fi + + echo "Checking if $1 has any mail...." + if [ $(sudo cat "$MAIL_FOLDER/$1" | wc -l) -eq 0 ]; then + echo "No new mail" + sudo rm "$MAIL_FOLDER/$1" + return + fi + echo "$1 HAS Mail!!!" + if [ -x /usr/bin/mutt ]; then + if [ "$1" == "root" ]; then + sudo mutt -f "$MAIL_FOLDER/$1" + else + mutt -f "$MAIL_FOLDER/$1" + fi + elif [ -x /usr/bin/mail ]; then + read -r -p "Check mail via [ mail, less, nano, tail, read, or cat ] : " check + case $check in + mail) sudo mail -u "$1";; + less) sudo less "$MAIL_FOLDER/$1";; + nano) sudo nano "$MAIL_FOLDER/$1";; + tail) sudo tail -n 50 "$MAIL_FOLDER/$1";; + *) sudo cat "$MAIL_FOLDER/$1";; + esac + else + read -r -p "Check mail via [ less, nano, tail, read, or cat ] : " check + case $check in + less) sudo less "$MAIL_FOLDER/$1";; + nano) sudo nano "$MAIL_FOLDER/$1";; + tail) sudo tail -n 50 "$MAIL_FOLDER/$1";; + *) sudo cat "$MAIL_FOLDER/$1";; + esac + fi + del_mail "$1" +} + +# Check for Root Mail Alerts, to keep up to date on Security Issues +read_mail root + +if [ "$USER" != "root" ]; then + read_mail "$USER" +fi diff --git a/scripts/helper/gpg/common-helper.sh b/scripts/helper/gpg/common-helper.sh new file mode 100644 index 0000000..71d7302 --- /dev/null +++ b/scripts/helper/gpg/common-helper.sh @@ -0,0 +1,85 @@ +_parse_gpg_system_name() { + if [ ! -x $XGPG_APP ]; then + echo -e "Please install the gpg program!\n" + return 1 + fi + if [ $(which pass | wc -l) -ne 1 ]; then + echo "You should install the pass program!" + echo -e "pass: the standard unix password manager.\n" + fi + if [ ! -d "$XGPG_PASS_STORE" ]; then + echo -e "GPG PASS program has not made the ~/.password-store folder yet! Bailing!\n" + return 1 + fi + if [ -z $(which mktemp) ]; then + XNP_GPG_TEMP=/tmp/np + else + XNP_GPG_TEMP=$(mktemp) + fi + + saveIFS=$IFS + IFS="/" + local parts=($1) + IFS=$saveIFS + local count_gp=${#parts[@]} + + local part1=${parts[0]} + if [ $count_gp -eq 1 ]; then + myGPG_folder="" + myGPG_file="$part1" + return 0 + fi + if [ $count_gp -eq 2 ]; then + local part2=${parts[1]} + myGPG_folder="$XGPG_PASS_STORE/$part1" + myGPG_file="$part2" + return 0 + fi + if [ $count_gp -gt 2 ]; then + local part2=${parts[1]} + local lastthing=${1##*/} + myGPG_folder="$XGPG_PASS_STORE/$part1/$part2" + myGPG_file="$lastthing" + return 0 + fi + echo "Invaild System Name." + return 1 +} + +_do_gpg_stuff() { + if [ -f $XNP_GPG_TEMP.gpg ]; then + rm $XNP_GPG_TEMP.gpg + fi + + read -r -p "Enter extra comments (optional):" comments + if [ -n "$comments" ]; then + echo "$comments" >> $XNP_GPG_TEMP + fi + + if [ -z "$1" ]; then + $XGPG_APP -r "$XGPG_EMAIL" --encrypt $XNP_GPG_TEMP + if [ $? -ne 0 ]; then + echo "GPG unable to find user's email of $GPG_EMAIL" + echo "Edit by: cmd gpg --edit" + rm $XNP_GPG_TEMP + return 1 + fi + else + $XGPG_APP -r "$1" --encrypt $XNP_GPG_TEMP + if [ $? -ne 0 ]; then + echo "GPG unable to find user's email of $1" + rm $XNP_GPG_TEMP + return 1 + fi + fi + + cat $XNP_GPG_TEMP + rm $XNP_GPG_TEMP + + if [ -n "$myGPG_folder" ]; then + mkdir -p "$myGPG_folder" + mv $XNP_GPG_TEMP.gpg "$myGPG_folder/$myGPG_file.gpg" + else + mv $XNP_GPG_TEMP.gpg "$XGPG_PASS_STORE/$myGPG_file.gpg" + fi +} diff --git a/scripts/helper/gpg/new-mempass.sh b/scripts/helper/gpg/new-mempass.sh new file mode 100755 index 0000000..68dbbe4 --- /dev/null +++ b/scripts/helper/gpg/new-mempass.sh @@ -0,0 +1,26 @@ +#!/bin/bash +source ${_PROFILES_PATH}scripts/gpg/common-helper.sh + +new-mempass() { + if [ -z "$1" ]; then + echo "Please assign system-name, example: email/bob@example.com" + else + _parse_gpg_system_name "$1" + if [ $? -ne 0 ]; then + rm $XNP_GPG_TEMP + return 1 + fi + if [ -z "$myGPG_file" ]; then + rm $XNP_GPG_TEMP + return 1 + fi + + local syb_size=2 + local syb1=$(tr -dc '!@#^&*(){}[];:,.?' < /dev/urandom | head -c $syb_size) + local syb2=$(tr -dc '!@#^&*(){}[];:,.?' < /dev/urandom | head -c $syb_size) + + echo -e "$syb1$(shuf -n 3 /usr/share/dict/british-english | sed "s/./\u&/" | tr -cd "[A-Za-z]"; echo $(shuf -i0-999 -n 1))$syb2" > $XNP_GPG_TEMP + _do_gpg_stuff "$2" + fi +} +new-mempass "$1" "$2" diff --git a/scripts/helper/gpg/new-pwd.sh b/scripts/helper/gpg/new-pwd.sh new file mode 100755 index 0000000..40ba7da --- /dev/null +++ b/scripts/helper/gpg/new-pwd.sh @@ -0,0 +1,26 @@ +#!/bin/bash +source ${_PROFILES_PATH}scripts/gpg/common-helper.sh + +new-pwd() { + if [ -z "$1" ]; then + echo "Please assign system-name, example: email/bob@example.com" + else + _parse_gpg_system_name "$1" + if [ $? -ne 0 ]; then + rm $XNP_GPG_TEMP + return 1 + fi + if [ -z "$myGPG_file" ]; then + rm $XNP_GPG_TEMP + return 1 + fi + + local syb_size=3 + local syb1=$(tr -dc '!@#^&*(){}[];:,.?' < /dev/urandom | head -c $syb_size) + local syb2=$(tr -dc '!@#^&*(){}[];:,.?' < /dev/urandom | head -c $syb_size) + + echo "$syb1$(openssl rand -base64 $XNEW_PASSWORD_SIZE)$syb2" > $XNP_GPG_TEMP + _do_gpg_stuff "$2" + fi +} +new-pwd "$1" "$2" diff --git a/scripts/helper/gpg_helper.sh b/scripts/helper/gpg_helper.sh new file mode 100644 index 0000000..fa50c28 --- /dev/null +++ b/scripts/helper/gpg_helper.sh @@ -0,0 +1,13 @@ +function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; } + +GPG_VER=$(gpg --version | head -n1 | grep -E -o "[0-9.]+") + +cd ~/.ssh || { echo "Unable to CD into ~.ssh"; exit 1; } + +gv=$(version "$GPG_VER") +compair_to_version=$(version "2.1.17") +if [ "$gv" -ge "$compair_to_version" ]; then + gpg --full-generate-key +else + gpg --default-new-key-algo rsa4096 --gen-key +fi diff --git a/scripts/helper/scan_aliases.sh b/scripts/helper/scan_aliases.sh new file mode 100755 index 0000000..9b56066 --- /dev/null +++ b/scripts/helper/scan_aliases.sh @@ -0,0 +1,210 @@ +#!/bin/bash + +SANE_CHECKER="~/dotfiles/.data/.sane_checker.sum" +SANE_CERTS="~/dotfiles/.data/.sane_certs.sum" +export SHA_SUM_APP=/usr/bin/sha256sum +error_status=$(mktemp) + +if groups "$USER" | grep -o "sudo" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "doas" >/dev/null 2>/dev/null; then + USE_SUPER="doas" +elif groups "$USER" | grep -o "wheel" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif groups "$USER" | grep -o "admin" >/dev/null 2>/dev/null; then + USE_SUPER="sudo" +elif [ "$EUID" -eq 0 ]; then + USE_SUPER="\$" +else + USE_SUPER="" +fi +export USE_SUPER +SANE_TEST_FAILED=0 + +tmpsum=$(mktemp -u --suffix ".sum.tmp") +tmpsum2=$(mktemp -u --suffix ".sum2.tmp") + +# Spinner function with multiple animation styles +_my_spinner() { + local pid=$1 + local style=${2:-0} + local delay=0.1 + + case $style in + 0) local chars='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' ;; # Braille dots + 1) local chars='▁▂▃▄▅▆▇█▇▆▅▄▃▂▁' ;; # Growing bar + 2) local chars='_-~+=*@#.?' ;; # Arrows + 3) local chars='◐◓◑◒' ;; # Circle + 4) local chars='⣾⣽⣻⢿⡿⣟⣯⣷' ;; # Detailed Braille + esac + + local color='\e[34m' # Blue color + local reset='\e[0m' + + # Hide cursor + tput civis + + while kill -0 $pid 2>/dev/null; do + # Save cursor position + echo -en "\e7" + + for ((i=0; i<${#chars}; i++)); do + # Restore cursor position + echo -en "\e8" + echo -en "\e[H${color}[${chars:$i:1}] Scanning Files...${reset}" + sleep $delay + done + done + + # Show cursor + tput cnorm + # Clear line + echo -en "\r\033[K" +} + + +#shaXsum +require_root() { + local sane_file_name="$1" + local temp_file="$2" + if [ "$EUID" -eq 0 ]; then + mv "$temp_file" "$sane_file_name" + chown root:root "$sane_file_name" + chmod 444 "$sane_file_name" + chattr +i "$sane_file_name" + else + echo "Trying to make sane sum file Immutable for security purposes, Please enter ROOT password when prompted." + if [ -n "$USE_SUPER" ] && sudo --validate; then + sudo mv "$temp_file" "$sane_file_name" + sudo chown root:root "$sane_file_name" + sudo chmod 444 "$sane_file_name" + sudo chattr +i "$sane_file_name" + else + echo "Please have a ROOT user make this file: $sane_file_name Immutable!" + fi + fi +} +prompter_for_fix() { + echo "Verify the integerity of your aliases scripts, then run:" + if [ ! -w "$SANE_CHECKER" ]; then + echo -e "\r\n sudo chattr -i \"$SANE_CHECKER\" \r\n sudo chmod 664 \"$SANE_CHECKER\" \r\n sudo rm $SANE_CHECKER" + else + echo -e "sudo rm $SANE_CHECKER" + fi +} +good=1 +if [ ! -f "$SANE_CHECKER" ]; then + echo -e "\033[0;34m 1st run added to sane sum file! \033[0m" + $SHA_SUM_APP {~/dotfiles/scripts/*.sh,~/dotfiles/.aliases.d/*.sh,~/.bash_aliases,~/.bashrc,~/.bash_logout,~/dotfiles/scripts/helper/.git_bash_prompt,~/.profile,~/dotfiles/scripts/helper/.kube-ps1,~/dotfiles/scripts/helper/theme} > "$tmpsum" 2>/dev/null + require_root "$SANE_CHECKER" "$tmpsum" + good=0 + else + if [ -w "$SANE_CHECKER" ]; then + echo -e "\033[0;31m Warning -- sane sum Security file is Mutable! Please have a Root User run: \r\n \033[0m sudo chmod 444 \"$SANE_CHECKER\" \r\n AND then run \r\n sudo chattr +i \"$SANE_CHECKER\" \r\n" + good=0 + fi +fi +if [ ! -f "$SANE_CERTS" ]; then + echo -e "\033[0;34m 1st run added to sane certs sum file! \033[0m" + $SHA_SUM_APP /etc/ssl/certs/* > "$tmpsum2" 2>/dev/null + require_root "$SANE_CERTS" "$tmpsum2" + good=0 +else + if [ -w "$SANE_CERTS" ]; then + echo -e "\033[0;31m Warning -- sane sum Cert Security file is Mutable! Please have a Root User run: \r\n \033[0m sudo chmod 444 \"$SANE_CERTS\" \r\n AND then run \r\n sudo chattr +i \"$SANE_CERTS\" \r\n" + good=0 + fi +fi +check_certificates() { + if [ -f "$SANE_CHECKER" ]; then + for FILE in ~/dotfiles/scripts/*.sh; do + if [ -f "$FILE" ] && ! grep -q "$FILE" "$SANE_CHECKER"; then + echo -e "\033[0;31m $FILE is a new file! \r\n Please Scan it for viruses. \033[0m" >> "$error_status" + SANE_TEST_FAILED=1 + fi + done + for FILE in ~/dotfiles/.aliases.d/*.sh; do + if [ -f "$FILE" ] && ! grep -q "$FILE" "$SANE_CHECKER"; then + echo -e "\033[0;31m $FILE is a new file! \r\n Please Scan it for viruses. \033[0m" >> "$error_status" + SANE_TEST_FAILED=1 + fi + done + if ! $SHA_SUM_APP --quiet -c "$SANE_CHECKER"; then + echo -e "\033[0;31m Danger...? Failed Sane checker!! \033[0m" >> "$error_status" + SANE_TEST_FAILED=1 + fi + fi + + if [ "$SANE_TEST_FAILED" -eq 1 ]; then + return 1 + else + return 0 + fi +} +# Create a temporary file to store the exit status +temp_status=$(mktemp) + +if [ "$good" -eq 1 ]; then + # Run the check in background and capture its exit status + (check_certificates; echo $? > "$temp_status") & + # Start spinner with style 0 (can be changed to 1-4 for different animations) + _my_spinner $! 0 + # Wait for background process to complete + wait + # Read the exit status and clean up + exit_status=$(cat "$temp_status") + if [ "$exit_status" -eq 1 ]; then + prompter_for_fix + SANE_TEST_FAILED=1 + else + SANE_TEST_FAILED=$exit_status + fi +fi +# sed to remove any evil ANSI codes +cat "$error_status" | sed -r 's/\x1b\[[0-9;]*m//g' +rm "$error_status" +rm "$temp_status" + +_do_scan_ssl_certs() { + if [ -f "$SANE_CERTS" ]; then + changed=0 + for cert in /etc/ssl/certs/*; do + if [ -f "$cert" ]; then # Only process regular files + if ! grep -q "$($SHA_SUM_APP "$cert")" "$SANE_CERTS"; then + echo -e "\033[0;31mWARNING: Modified or new cert found: $cert \r\n \033[0m" >> "$ssl_error_status" + changed=1 + fi + fi + done + if [ "$changed" -eq 1 ]; then + echo "Please -- Verify the integerity of your SSL Certs, then run:" >> "$ssl_error_status" + if [ ! -w "$SANE_CERTS" ]; then + echo -e "\r\n sudo chattr -i \"$SANE_CERTS\" \r\n sudo chmod 664 \"$SANE_CERTS\" \r\n sudo rm $SANE_CERTS" >> "$ssl_error_status" + else + echo -e "sudo rm $SANE_CERTS" >> "$ssl_error_status" + fi + SANE_TEST_FAILED=1 + else + echo -e "SSL Certs look the same..." >> "$ssl_error_status" + fi + fi +} + +scan_ssl_certs() { + clear + ssl_error_status=$(mktemp) + # Run the check in background and capture its exit status + (_do_scan_ssl_certs) & + # Start spinner with style 0 (can be changed to 1-4 for different animations) + _my_spinner $! 0 + # Wait for background process to complete + wait + cat "$ssl_error_status" | sed -r 's/\x1b\[[0-9;]*m//g' + rm "$ssl_error_status" +} + +# Unset the function +unset -f require_root +unset -f prompter_for_fix +unset -f check_certificates +source ~/dotfiles/scripts/helper/scan_libs.sh diff --git a/scripts/helper/scan_libs.sh b/scripts/helper/scan_libs.sh new file mode 100755 index 0000000..318e5e5 --- /dev/null +++ b/scripts/helper/scan_libs.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Function to check the SHA-256 hash of an environment variable +check_env_var_hash() { + local env_var_name="$1" + local hash_file="~/dotfiles/.data/.${env_var_name}_hash_${USER}.sum" + + # Get the current value of the specified environment variable + local current_value=$(/usr/bin/printenv "$env_var_name") + + # Compute the SHA-256 hash of the current environment variable value + local current_hash=$(/usr/bin/echo -n "$current_value" | $SHA_SUM_APP | /usr/bin/awk '{print $1}') + + # Check if the hash file exists + if [[ -f "$hash_file" ]]; then + # Read the previous hash from the file + local previous_hash=$(/usr/bin/cat "$hash_file") + + # Compare the current hash with the previous hash + if [[ "$current_hash" != "$previous_hash" ]]; then + /usr/bin/echo -e "\033[0;31m Danger...? Change detected in $env_var_name!!! ENV VAR \033[0m" + export SANE_TEST_FAILED=1 + return 1 + fi + else + /usr/bin/echo "Hash file for $env_var_name does not exist. Creating new hash file." + # Save the current hash to the hash file + /usr/bin/echo "$current_hash" > "$hash_file" + if [ "$USE_SUPER" == "error" ]; then + echo -e "Have an Admin lock down this file: $hash_file" + return 0 + fi + ${USE_SUPER} chown root:root "$hash_file" + ${USE_SUPER} chmod 444 "$hash_file" + ${USE_SUPER} chattr +i "$hash_file" + fi +} + +check_env_var_hash "LD_PRELOAD" +check_env_var_hash "LD_LIBRARY_PATH" +check_env_var_hash "PATH" diff --git a/scripts/helper/theme b/scripts/helper/theme new file mode 100644 index 0000000..932f7dd --- /dev/null +++ b/scripts/helper/theme @@ -0,0 +1,38 @@ +# Get the terminal width using tput +width=$(tput cols) + +if is_normal_theme; then + + if [ $UID -ne 0 ]; then + FP="${BK_GREEN}${WHITE}░▒«${UPC}\u@\h»${GREEN}${SEGMENT_SEPARATOR}" + else + FP="${BK_GREEN}${WHITE}░▒«${UPC}${RED}■╠╬${DIM}!¡ as ${RESET}${BK_GREEN}${RED}Root${DIM} ¡!${RESET}${BK_GREEN}${RED}╬╣■${WHITE}@\h»${GREEN}${SEGMENT_SEPARATOR}" + fi + + prompt_color='\[\033[;32m\]' + info_color='\[\033[1;34m\]' + + WD="$WHITE$BK_BLUE\w${COLOR_NONE}${BLUE}${SEGMENT_SEPARATOR}${WHITE}" + BP="$PS_SYMBOL${WHITE}${BRANCH}${WD}" + + len=${#PWD} + if [ "$len" -gt 35 ] || [ "$width" -lt 70 ]; then + NLT="\n│\n├────" + else + NLT="" + fi + + if [ "$len" -lt 12 ]; then + PS1+=${FP}${BP}$info_color''${PROMPT_SYMBOL}'\[\033[0m\] ' + else + PS1+=$prompt_color'┌────'${FP}''$prompt_color${NLT}${BP}''$prompt_color'\n│\n'$prompt_color'└─'$info_color''${PROMPT_SYMBOL}'\[\033[0m\] ' + fi +else + WD="\w${COLOR_NONE}${WHITE}" + if [ $UID -ne 0 ]; then + UR="${WHITE}\u" + else + UR="${RED}|as ¡Root!|${COLOR_NONE}${WHITE}" + fi + PS1+="${WHITE}┌─${CYAN}${UPC}${UR}@\h ${BRANCH} ${WD}\n└─ ${PROMPT_SYMBOL} " +fi diff --git a/scripts/rename_postfix.sh b/scripts/rename_postfix.sh new file mode 100755 index 0000000..f384486 --- /dev/null +++ b/scripts/rename_postfix.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +# rename_postfix.sh [-n|--dry-run] [-v] POSTFIX REPLACEMENT +set -o errexit -o pipefail +set -o nounset + +dry_run=0 +verbose=0 + +# ---- Parse flags +while [[ $# -gt 0 ]]; do + case "$1" in + -n|--dry-run) dry_run=1; shift ;; + -v|--verbose) verbose=1; shift ;; + --) shift; break ;; + -*) echo "Unknown option: $1" >&2; exit 2 ;; + *) break ;; + esac +done + +if [[ $# -lt 2 ]]; then + echo "Usage: ${0##*/} [-n|--dry-run] [-v] old_extension new_extension" >&2 + echo "Example: $0 .env .sh" + exit 2 +fi + +old_ext="$1" +new_ext="$2" + +if [[ -z "$new_ext" ]]; then + echo "Refusing to run: new_ext cannot be empty." >&2 + exit 2 +fi + +# Match files in current dir whose names start with $postfix +# nullglob: if no matches, the glob expands to nothing (prevents literal) +shopt -s nullglob + +# Include dotfiles if the postfix starts with a dot (like .env) +# (Bash already matches dotfiles when the pattern itself starts with a dot.) +# Handle spaces safely by quoting $f everywhere. +for file in *"$old_ext"; do + [[ -e "$file" ]] || continue + + base="${file%$old_ext}" # strip the old extension + new_file="${base}${new_ext}" + + # Skip if nothing changes + [[ "$file" == "$new_file" ]] && continue + + if (( dry_run )); then + printf '[DRY-RUN] mv -- %q %q\n' "$file" "$new_file" + else + # -n: don't overwrite existing files accidentally + # Add -v if requested + if (( verbose )); then + mv -vn -- "$file" "$new_file" + else + mv -n -- "$file" "$new_file" + fi + fi +done diff --git a/scripts/rename_prefix.sh b/scripts/rename_prefix.sh new file mode 100755 index 0000000..0fdff13 --- /dev/null +++ b/scripts/rename_prefix.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +# rename_prefix.sh [-n|--dry-run] [-v] PREFIX REPLACEMENT +set -o errexit -o pipefail +set -o nounset + +dry_run=0 +verbose=0 + +# ---- Parse flags +while [[ $# -gt 0 ]]; do + case "$1" in + -n|--dry-run) dry_run=1; shift ;; + -v|--verbose) verbose=1; shift ;; + --) shift; break ;; + -*) echo "Unknown option: $1" >&2; exit 2 ;; + *) break ;; + esac +done + +if [[ $# -lt 2 ]]; then + echo "Usage: ${0##*/} [-n|--dry-run] [-v] PREFIX REPLACEMENT" >&2 + exit 2 +fi + +prefix=$1 +replacement=$2 + +if [[ -z "$prefix" ]]; then + echo "Refusing to run: PREFIX cannot be empty." >&2 + exit 2 +fi + +# Match files in current dir whose names start with $prefix +# nullglob: if no matches, the glob expands to nothing (prevents literal) +shopt -s nullglob + +# Include dotfiles if the prefix starts with a dot (like .env) +# (Bash already matches dotfiles when the pattern itself starts with a dot.) +# Handle spaces safely by quoting $f everywhere. +for f in -- "$prefix"*; do + [[ -e "$f" ]] || continue + + dir=$(dirname -- "$f") + base=$(basename -- "$f") + + # Replace only if $prefix is at the START of the filename + newbase="${base/#$prefix/$replacement}" + newpath="$dir/$newbase" + + # Skip if nothing changes + [[ "$f" == "$newpath" ]] && continue + + if (( dry_run )); then + printf '[DRY-RUN] mv -- %q %q\n' "$f" "$newpath" + else + # -n: don't overwrite existing files accidentally + # Add -v if requested + if (( verbose )); then + mv -vn -- "$f" "$newpath" + else + mv -n -- "$f" "$newpath" + fi + fi +done diff --git a/scripts/setup_debian.sh b/scripts/setup_debian.sh new file mode 100755 index 0000000..bd6d6ff --- /dev/null +++ b/scripts/setup_debian.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +prompt_to_setup() { + cat debian_deps.list + read -rp "Do you want to install these packages (y/n)?: " response + if [[ "$response" == "y" ]]; then + return 0 # user choose to install + else + return 1 # user choose to not install + fi +} + +if [ -x /usr/bin/apt ] || [ -x /bin/apt ]; then + if [ -r debian_deps.list ] && prompt_to_setup; then + sudo apt update && sudo apt install $(cat debian_deps.list) + else + echo "Install aborted..." + fi +fi diff --git a/scripts/sshto/LICENSE.md b/scripts/sshto/LICENSE.md new file mode 100644 index 0000000..bda32e2 --- /dev/null +++ b/scripts/sshto/LICENSE.md @@ -0,0 +1,23 @@ +The MIT License + +Copyright (c) 2019-2020 Ivan Marov +Copyright (c) 2021 Robert Strutts + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/scripts/sshto/README b/scripts/sshto/README new file mode 100644 index 0000000..2255ad1 --- /dev/null +++ b/scripts/sshto/README @@ -0,0 +1,30 @@ +A simple terminal GUI interface for SSH config files. + +Credits for sshto: go to the original creator Ivan Marov. + +.SH AUTHOR +Ivan Marov +.SH GITHUB +https://github.com/vaniacer/sshto + +Copyright: 2019-2020 Ivan Marov +License: MIT + +All code in scripts/sshto and it's sub-fodlers were based on work by Ivan Marov. +Ivan's repo is a nice smaller script, take a look...at his repo listed above. + +-=-=- +Robert Strutts - changes: What have I added in this adapted form of works: +* Auto config file generation when .ssh folder does not exist: + - Finds remote servers and tries to create an entry for it from /etc/hosts file. + - Auto generate RSA/GPG key pairs for a new account. +* $ sshto [optional group based on server names] + - Just load into view the optional name of servers group + IE: $ sshto work +* config file "ignore" option...to hide host from main menu + - IE: Host github #ignore +* Menu Command to Copy main Bash Aliases (compresses and creates installer script). +* Mosh client connection +* SFTP via GUI file MGR +* Mount will mount into /mnt +* Key Copy asks which key to use diff --git a/scripts/sshto/bin/bash_aliases.tar.gz b/scripts/sshto/bin/bash_aliases.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5715f85d86b0bcb958a20b02cc300e7ed1a3555 GIT binary patch literal 55030 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±Uoz3P}U<&-2=Tj9t536Xa;s%Q9J97`>Ncs_&27sv- zRC$eEqyg1{S~i7=c=RHyK8(~vw{Q?D$$(DqX$%Z_B?e0Wp|-Kj*IM-g-*fES68+>l zKm>laf@|tb`=s*a0#`k;oxLl~=*;mJYWT>h{{4x>#DEllC2{Le)MmF!z9aur)V6Xu zP+G9qxB2yOH0ZQONGA}y;1cx(%CHgrQZRSZH!bI4S%ZqST9jGq?%uux;&D8R6d}Wm z#4tN|kMmi8KiwH(a|VX?O(Rn&+Hs!6WZv~_E4&=Qh5X>)6(U-}%y>eZ3?9_us#c@BeJR|M4)#XZ!vS>$ds+ z&)0sWWY+Dpl-^LeZyYzp|9dZ!pz*JwmzSYsfT50 z&Lp^mu#R{XVgVoj1f(4}Y%z7`V+ibt;mkDC-j<}My};KsLQwcM1jk)e$qZK23H)aL z@hx~*cKO%HG0KCr*s`j`@i6QOJaY_rIe-T!A?hljCR@Q_T^3;qd-WTF{29I{r1?Y( z!5I?xGR*^Q6TD+D0IP=)9YZ*yo^IlT?%{rQEpDl@iH{dJ0zx~@_F+C9oBVt3nZ99) zOe2_T0q{Y0E^NqLNc=q{OS|-|j3?sjNr;=B`I0k9&xRO~+UTsX#9lD85aT3Z;rmpO zK;a2Ol%jEkTqkcRnQ0#c#{_6hrf~Y$eN1gSF#}FUG+INNy$ddH0ob5ecSP-gKwn@p znNkxXJ?J5c%50bpLx?2exC}~wGe(HS`H0_y(sYCbv7}|%zt2JN3^vTlrJhTJIb;)v z31^QPBi=-6Ci7s9>W0klIc=sNb75{9)JwA-L^V2A$guxv^rksbNM}e+2mRNbHpJR; za|qXRmAvVUj{9dL0zC%J-smmqzkYgZ-ZSBTDsL((6R&dF)FqqM7}(`$9l z+MV9dAX=xvp}>Wq2_^A!MXlGEm3 z)M=e{n*(xsHaP7M6+qtxu)R+2)c~-t?I5^oE z1osNm6cQ=Q{-&%qV~PZxg1H(nwF$=U4*6jk1g_uM*_qp*z0~&Uw&PvA+=LYOairG& zfzoWBDBCmResSEe{zJB!-T&KvvHN1P{y)U=n4sjP)8kW?9@j|MwCA5h0u7fVhqN8m z><7LiJ%)pv@&j~ev%;5gr5zN zhrxU@VUyj4Lr!;*Bwjm;t0x)$tBY_6`ye7LfB)m3KIG|kOcpD;}oxodw zfC9(YHH$LrQj^6fjqFz(zqCefj)y!_{y(n&zE>PK`2Xkod;8hvKl?8>&wn1|5Z`~r z*I0cQ-D;-L|3H%1E;`}5L9VdgpM5Qs;8$TkYM%I76>HdmpRQ+q!~}=G19Fh+e}XT~ z8az1!SM1Go;gj(l9ProNyRp6kfvb7iEc_srcv*+Nqr<~<=~@Z8ZkvY z?TNmhp{fz~N*eMZ{&noId=FEP+RN}p_{m6ijjyufW2)!-YFGsz+8g1x3rM{@;6vht zqU$BR5XH=ic@$0_OND=d|DzG9UNiF(q~|5mcIN@Q`StE&RxVa%xDlr>diNV!2i)%oW!;z2{!lphp+=Yn@s z!})}d94lfL)f`FH9KMxO<8!=?)cAOJFM{7Mdjcq6v&l3T-{(2qCbKRb=cyKoA@a)s97NDtDgh*!iRiiYuRqRD2kn zrZ{+5VwoSjJ7xvQF&zedzs&Lfo2N{o0Hy!{KP2L7 literal 0 HcmV?d00001 diff --git a/scripts/sshto/config.inc b/scripts/sshto/config.inc new file mode 100644 index 0000000..8b89a10 --- /dev/null +++ b/scripts/sshto/config.inc @@ -0,0 +1,41 @@ +REMOTE=5901 # Remote port for tunneling. +LOCAL=5901 # Local port for tunneling. +GUEST=$USER # Alternative username to login with. +DEST="$HOME" # Destination folder on target server to download\upload files. +TIME=60 # Timer for tunneling command. Tunnel will be closed after 60 seconds, but it will stay open if used. +LSEXIT=false # Perform ls on exit true|false. +home=$PWD # Destination folder on local server to download\upload files and sshfs mount. +sshdir=~/.ssh # Ssh configfiles folder +knwhosts="$sshdir"/known_hosts # Path to known_hosts file +sshfsopt= # Sshfs options (-o allow_other) [[would allow ALL users access]] +SSH_OPT= # SSH Options + +if [ -z "$EDITOR" ]; then + EDITOR=nano # Editor nano or vim +fi + +if [ -d "$HOME" ]; then + HPATH=$HOME +elif [ -d "/home/$USER" ]; then + HPATH=/home/$USER +else + echo "Unable to Find user HOME folder!!!!" + exit 1 +fi + +# SSH key to use (Add my ssh key to host). +if [ ! -d "$HPATH/.ssh" ]; then + echo "Let's setup SSH...." +elif [ -r "$HPATH/.ssh/${USER}_rsa.pub" ]; then + KEY=$HPATH/.ssh/${USER}_rsa.pub +elif [ -r "$HPATH/.ssh/${USER}.pub" ]; then + KEY=$HPATH/.ssh/${USER}.pub +elif [ -r "$HPATH/.ssh/id_rsa.pub" ]; then + KEY=$HPATH/.ssh/id_rsa.pub +else + KEY=$(ls $HPATH/.ssh/*.pub 2> /dev/null | head -1) +fi +#echo $KEY + +# Save selected context for current user +tmpfile=/tmp/sshtorc-${USER} diff --git a/scripts/sshto/core/an_configfile.inc b/scripts/sshto/core/an_configfile.inc new file mode 100644 index 0000000..7987739 --- /dev/null +++ b/scripts/sshto/core/an_configfile.inc @@ -0,0 +1,477 @@ +HOSTS_FILE=/etc/hosts +split="1" # Default of no Split!!! + +pkey() { + if [ -f "$PK" ]; then + USE_PRIVATE_KEY=$PK + elif [ -f "${PK}.private" ]; then + USE_PRIVATE_KEY=${PK}.private + else + USE_PRIVATE_KEY=$HPATH/.ssh/id_rsa + fi +} + +choose_key() { + local homes=$HPATH/.ssh/ + local pubs=$(find "$homes" -type f -iname "*.pub" 2> /dev/null) + if [ -z "$pubs" ]; then + PK=${homes}${USER} + pkey + return 0 + fi + + nonpub="" + akeys=() + realkeys=() + indexforkeys=() + + IFSOLD=$IFS + IFS=$'\n' + + local pubs_count=0 + local option_no=0 + for k in $pubs; do + pubs_count=$((pubs_count+1)) + nonpub=${k/.pub/} + option_no=$((option_no+1)) + akeys+=( "$option_no" "${nonpub/$homes/}" ) + indexforkeys+=( "$option_no" ) + realkeys+=( "$nonpub" ) + done + + IFS=$IFSOLD + + if [ "$pubs_count" -eq "1" ]; then + PK=$nonpub + pkey + return 0 + elif [ "$pubs_count" -eq "0" ]; then + PK=$HPATH/.ssh/${USER} + pkey + return 0 + fi + + if [ "${#akeys[@]}" -eq "0" ]; then + PK=$HPATH/.ssh/${USER} + pkey + return 0 + fi + + usekey=$(dialog --ok-label "Use this Key" --cancel-label "Back" --output-fd 1 \ + --colors \ + --menu "Select key:" 0 0 0 "${akeys[@]}") + + match=false + c=0 + for no in "${indexforkeys[@]}"; do + c=$((c+1)) + if [ "$usekey" = "$no" ]; then + match=true + break + fi + done + + if [ "$match" = false ]; then + PK=$HPATH/.ssh/${USER} + pkey + return 0 + fi + + d=0 + for i in "${realkeys[@]}"; do + d=$((d+1)) + if [ "$d" = "$c" ]; then + PK=$i + pkey + return 0 + fi + done + + PK=$HPATH/.ssh/${USER} + pkey +} + +ask_to_edit_hosts() { + dialog --output-fd 1 --title "Edit Host File" \ + --backtitle "Add servers to your /etc/hosts file as SUDOer?" \ + --yesno "Would you like to add any servers as SUDO user?" 7 60 + EDIT_HOSTS=$? + clear +} + +default_ssh_port() { + SSH_PORT=22 + new_port=$(dialog --ok-label "OK" --cancel-label "BACK" --output-fd 1 --max-input 5 \ + --aspect 100 --colors --inputbox 'Change default SSH port#' 10 30 "$SSH_PORT") + SSH_PORT=${new_port:-$SSH_PORT} +} + +default_username() { + DEFAULT_USER=$USER + new_user=$(dialog --ok-label "OK" --cancel-label "BACK" --output-fd 1 \ + --aspect 100 --colors --inputbox 'Change default SSH USER' 10 30 "$DEFAULT_USER") + DEFAULT_USER=${new_user:-$DEFAULT_USER} +} + +split_hosts_file() { + echo "# Private/Remote Servers" > /tmp/localhosts_remotes + echo "# Local-Hosts IPv4" > /tmp/localhosts_ip4 + echo "# Local-Hosts IPv6" > /tmp/localhosts_ip6 + comment="" + + IFSOLD=$IFS + IFS=$'\n' + for item in $(cat "$HOSTS_FILE"); do + tipaddr=$(echo "$item" | awk '{print $1}') + thostname=$(echo "$item" | awk '{print $2}') + #lcase=$(echo "$thostname" | tr '[A-Z]' '[a-z]') + #rhost=${lcase/ssh-/} + #rhost=${rhost/h-/} + #rhost=${rhost/host-/} + if [ $(echo $tipaddr | awk -F. '{ printf("%d\n", $1); }') = "127" ]; then + #echo "Skipped IPv4 Loopback" + if [ -n "$comment" ]; then + echo "$comment" >> /tmp/localhosts_ip4 + comment="" + fi + echo "$item" >> /tmp/localhosts_ip4 + elif [ $(echo $tipaddr | grep -c "::") -ge 1 ]; then + #echo "Skipped IPv6 Loopback" + if [ -n "$comment" ]; then + echo "$comment" >> /tmp/localhosts_ip6 + comment="" + fi + echo "$item" >> /tmp/localhosts_ip6 + elif [ $(echo $tipaddr | grep -c "^#") -ge 1 ]; then + #echo "Skipped Comment" + + if [ "$item" != "# Private/Remote Servers" ] && \ + [ "$item" != "# Local-Hosts IPv4" ] && \ + [ "$item" != "# Local-Hosts IPv6" ] && \ + [ "$item" != "# Script will include Localhosts back in automatically" ] && \ + [ "$item" != "#" ]; then + if [ -n "$comment" ]; then + comment+=$(printf "\n%s" "$item") + else + comment=$item + fi + fi + continue + else + #echo "Found Private/Remote Host" + if [ -n "$comment" ]; then + echo "$comment" >> /tmp/localhosts_remotes + comment="" + fi + echo "$item" >> /tmp/localhosts_remotes + fi + done + + IFS=$IFSOLD + + cat /tmp/localhosts_ssh > /tmp/localhosts_main + cat /tmp/localhosts_remotes >> /tmp/localhosts_main + echo -e "\n#\n# Script will include Localhosts back in automatically" >> /tmp/localhosts_main +} + +thostname="" +hostnames=() +deduper() { + if [ ${#hostnames[@]} -eq 0 ]; then + hostnames+=("$thostname") + return 0 + fi + local dup=false + for x in "${hostnames[@]}"; do + if [ "$x" = "$thostname" ]; then + dup=true + break + fi + done + if [ $dup = false ]; then + hostnames+=("$thostname") + fi +} + +ask_to_split() { + dialog --output-fd 1 --title "Split Host File" \ + --backtitle "Hosts file too large, temporary..split it?" \ + --yesno "Local Hosts will be placed at bottom of host file." 7 60 + + split=$? + clear +} + +admin_step() { + + ask_to_edit_hosts + if [ "$EDIT_HOSTS" = "0" ]; then + echo "Editing Hosts file..." + else + return 0 + fi + + if [ $(wc -l "$HOSTS_FILE" | awk -F. '{ printf("%d\n", $1); }') -gt 500 ]; then + ask_to_split + fi + + echo "Updating Hosts" + if [ ! -d "$HPATH/.dotfile_backups" ]; then + mkdir "$HPATH/.dotfile_backups" 2> /dev/null + fi + local bknow=$(date +"%m_%d_%Y_%H_%M_%S") + cp "$HOSTS_FILE" "$HPATH/.dotfile_backups/host${bknow}" 2> /dev/null + + if [ "$split" = "0" ]; then + split_hosts_file + else + if [ -x /usr/bin/tee ] || [ -x /bin/tee ]; then + echo -e "# Please add all your SSH Servers to this list:" | cat - "$HOSTS_FILE" | sudo tee "$HOSTS_FILE" + fi + + if [ -z "$EDITOR" ]; then + sudo nano "$HOSTS_FILE" + else + sudo "$EDITOR" "$HOSTS_FILE" + fi + sudo sed -i '/# Please add all your SSH Servers to this list:/d' "$HOSTS_FILE" + return 1 + fi + + if [ -z "$EDITOR" ]; then + nano /tmp/localhosts_main + else + "$EDITOR" /tmp/localhosts_main + fi + + sed -i '/# Script will include Localhosts back in automatically/d' /tmp/localhosts_main +} + +admin_check() { + if [ $UID -eq 0 ]; then + admin_step + else + sudoers_power=$(groups "$USER" | grep " sudo") + admin_power=$(groups "$USER" | grep " admin") + wheel_power=$(groups "$USER" | grep " wheel") + if [ -n "$sudoers_power" ] || [ -n "$admin_power" ] || [ -n "$wheel_power" ]; then + admin_step + fi + fi +} + +clean_up_split() { + if [ "$split" = "0" ]; then + cat /tmp/localhosts_ip4 >> /tmp/localhosts_main + cat /tmp/localhosts_ip6 >> /tmp/localhosts_main + echo -e "\n Original $HOSTS_FILE file Backed up at: $HPATH/.dotfile_backups/host${bknow}" + echo "Cleaning up hosts file...." + sudo mv -f "$HOSTS_FILE" "${HOSTS_FILE}_old" + sudo mv /tmp/localhosts_main "$HOSTS_FILE" + sudo chown root:root "$HOSTS_FILE" + sudo chmod 644 "$HOSTS_FILE" + rm -f /tmp/localhosts_* + fi +} + +findhosts() { + + admin_check + + if [ "$split" = "0" ]; then + read_hosts=/tmp/localhosts_main + else + read_hosts=$HOSTS_FILE + fi + + IFSOLD=$IFS + IFS=$'\n' + + for item in $(cat "$read_hosts"); do + tipaddr=$(echo "$item" | awk '{print $1}') + thostname=$(echo "$item" | awk '{print $2}') + lcase=$(echo "$thostname" | tr '[A-Z]' '[a-z]') + + if [ "$(echo $tipaddr | awk -F. '{ printf("%d\n", $1); }')" = "127" ]; then + #echo "Skipped IPv4 Loopback" + continue + elif [ "$(echo $tipaddr | grep -c "::")" -ge 1 ]; then + #echo "Skipped IPv6 Loopback" + continue + elif [ "$(echo $tipaddr | grep -c "^#")" -ge 1 ]; then + #echo "Skipped Comment" + continue + else + deduper + fi + done + + IFS=$IFSOLD + + clean_up_split + +} + +edit_configs() { + IFSOLD=$IFS + IFS=$'\n' + + local aconfig=() + local cfgs=$(ls $HPATH/.ssh/config*) + local realconfig=() + local realindex=() + local p="" + local r="" + local cdd + for cdd in $cfgs; do + realconfig+=( "$cdd" ) + p=$HPATH/.ssh/ + r=${cdd/$p/} + de=${r/configs_/} + de=${de/.conf/} + realindex+=( "$de" ) + aconfig+=( "$de" "$r" ) + done + + if [ "${#aconfig[@]}" -eq "0" ]; then + return 1 + fi + + editme=$(dialog --ok-label "Edit this config" --cancel-label "Back" --output-fd 1 \ + --colors \ + --menu "Select SSH file:" 0 0 0 "${aconfig[@]}") + + local match=false + local c=0 + local no + for no in "${realindex[@]}"; do + c=$((c+1)) + # echo "$no" + if [ "$editme" = "$no" ]; then + match=true + break + fi + done + + if [ "$match" = false ]; then + return 0 + fi + + local d=0 + local i + for i in "${realconfig[@]}"; do + d=$((d+1)) + if [ "$d" = "$c" ]; then + "$EDITOR" "$i" + break + fi + done + + IFS=$IFSOLD +} + +if [ ! -r "$HPATH/.ssh/config" ]; then + choose_key + default_ssh_port + default_username + clear + findhosts + + prefix="" + #prefix_num=$(dialog --output-fd 1 --menu "SSH name prefixes:" 0 0 0 1 "None" 2 "s-" 3 "ssh-") + #case "$prefix_num" in + # '2') prefix="s-";; + # '3') prefix="ssh-";; + # *) prefix="";; + #esac + + # Begin Dummy Configs +echo "Include $HPATH/.ssh/configs_*.conf + +# Edit the following SSHTO config file: +# What servers do you want to connect to?" > "$HPATH/.ssh/config" + +if [ -r "$HPATH/.ssh/configs_work.conf" ]; then + bknow=$(date +"%m_%d_%Y_%H_%M_%S") + mv "$HPATH/.ssh/configs_work.conf" "$HPATH/.ssh/bk_configs_work${bknow}.old" 2> /dev/null +fi + + echo "#Host Group #My Work Server's#" > "$HPATH/.ssh/configs_work.conf" + + if [ "${#hostnames[@]}" -eq "0" ]; then + echo "Host ${prefix}mysite + HostName YOURsiteHERE.com OR IP of computer + Port $SSH_PORT + User $DEFAULT_USER + IdentityFile $USE_PRIVATE_KEY" >> "$HPATH/.ssh/configs_work.conf" + else + for h in "${hostnames[@]}"; do + ch=${h/host-/} + ch=${ch/h-/} + ch=${ch/s-/} + ch=${ch/ssh-/} +echo "Host ${prefix}${ch} + HostName ${h} + Port $SSH_PORT + User $DEFAULT_USER + IdentityFile $USE_PRIVATE_KEY" >> "$HPATH/.ssh/configs_work.conf" + + done + fi + + echo "Host github #ignore + HostName github.com + Port 22 + User git + IdentityFile $USE_PRIVATE_KEY + +# --- default for all NOT Defined hosts..! --- +Host * + Protocol 2 + HostKeyAlgorithms sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa + KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group18-sha512,diffie-hellman-group16-sha512 + Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr + MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256 + StrictHostKeyChecking ask + VerifyHostKeyDNS ask + User root + Port 22 + ServerAliveInterval 300 + ServerAliveCountMax 3 + ForwardAgent no + ForwardX11 no + ForwardX11Trusted no + PermitLocalCommand no + HashKnownHosts yes + TCPKeepAlive yes + SendEnv LANG LC_* +" >> "$HPATH/.ssh/config" + +if [ ! -r "$HPATH/.ssh/configs_home.conf" ]; then + echo "#Host Group #My Home Lab# +Host ${prefix}lab #ignore + HostName lab1 + Port $SSH_PORT + User $DEFAULT_USER + IdentityFile $USE_PRIVATE_KEY" > "$HPATH/.ssh/configs_home.conf" +fi + +if [ ! -r "$HPATH/.ssh/EXAMPLEconfigs_proxy.conf" ]; then +echo "#Host Group #Proxies's# +# Forward all local port 3128 traffic to port 3128 on the remote vps1.cyberciti.biz server +# $ ssh -f -N proxyus +Host proxyus #ignore + HostName vps1.cyberciti.biz + User breakfree + IdentityFile $HPATH/.ssh/vps1.cyberciti.biz.key + LocalForward 3128 127.0.0.1:3128" > "$HPATH/.ssh/EXAMPLEconfigs_proxy.conf" +fi + + chmod 644 "$HPATH/.ssh/config" + chmod 644 "$HPATH/.ssh/configs_work.conf" + chmod 644 "$HPATH/.ssh/configs_home.conf" + chmod 644 "$HPATH/.ssh/EXAMPLEconfigs_proxy.conf" + + edit_configs + +fi diff --git a/scripts/sshto/core/colors.inc b/scripts/sshto/core/colors.inc new file mode 100644 index 0000000..37c1f69 --- /dev/null +++ b/scripts/sshto/core/colors.inc @@ -0,0 +1,24 @@ +#-------------------------+--------------------------------+---------+ +# Text color | Background color | | +#-----------+-------------+--------------+-----------------+ | +# Base color|Lighter shade| Base color | Lighter shade | | +#-----------+-------------+--------------+-----------------+ | +BLK='\e[30m'; blk='\e[90m'; BBLK='\e[40m'; bblk='\e[100m' #| Black | +RED='\e[31m'; red='\e[91m'; BRED='\e[41m'; bred='\e[101m' #| Red | +GRN='\e[32m'; grn='\e[92m'; BGRN='\e[42m'; bgrn='\e[102m' #| Green | +YLW='\e[33m'; ylw='\e[93m'; BYLW='\e[43m'; bylw='\e[103m' #| Yellow | +BLU='\e[34m'; blu='\e[94m'; BBLU='\e[44m'; bblu='\e[104m' #| Blue | +MGN='\e[35m'; mgn='\e[95m'; BMGN='\e[45m'; bmgn='\e[105m' #| Magenta | +CYN='\e[36m'; cyn='\e[96m'; BCYN='\e[46m'; bcyn='\e[106m' #| Cyan | +WHT='\e[37m'; wht='\e[97m'; BWHT='\e[47m'; bwht='\e[107m' #| White | +#----------------------------------------------------------+---------+ +# Effects | +#--------------------------------------------------------------------+ +DEF='\e[0m' #Default color and effects | +BLD='\e[1m' #Bold\brighter | +DIM='\e[2m' #Dim\darker | +CUR='\e[3m' #Italic font | +UND='\e[4m' #Underline | +INV='\e[7m' #Inverted | +COF='\e[?25l' #Cursor Off | +CON='\e[?25h' #Cursor On | diff --git a/scripts/sshto/core/contents_menu.inc b/scripts/sshto/core/contents_menu.inc new file mode 100644 index 0000000..0e80582 --- /dev/null +++ b/scripts/sshto/core/contents_menu.inc @@ -0,0 +1,26 @@ +new_list() { + list=() + match="" + for item in "${fullist[@]}"; { + case $item:$match in + -*\ *\ *-:1) break;; + -*\ $filter\ *-:*) match=1;; + esac + [[ $match ]] && list+=( "$item" ) + } + [[ ${list[*]} ]] && echo "filter='$filter'" > "$tmpfile" || { list=( "${fullist[@]}" ); rm "$tmpfile"; } +} + +editconfig() { edit_configs; update_hosts; } + +contents_menu () { + filter=$(dialog --output-fd 1 --ok-label "SELECT" --cancel-label "BACK" \ + --extra-button --extra-label "Edit" \ + --no-items --menu "Select list of hosts:" 0 0 0 "All" "${content[@]}") + case $filter:$? in + All:0) list=( "${fullist[@]}" );; + *:0) new_list;; + *:3) editconfig;; + esac + main_dialog +} diff --git a/scripts/sshto/core/dialog.inc b/scripts/sshto/core/dialog.inc new file mode 100644 index 0000000..05e2121 --- /dev/null +++ b/scripts/sshto/core/dialog.inc @@ -0,0 +1,22 @@ +do='--output-fd 1 --colors' # dialog common options +ap='--aspect 100' # aspect 100 +eb='--extra-button' # extra +hb='--help-button' # buttons +cl='--cancel-label' # and +el='--extra-label' # short +hl='--help-label' # label +ol='--ok-label' # names + +# Dialog buttons order and exit codes +# +# 0 3 1 2 + +D(){ # dialog creator + local opts=() + [[ $1 ]] && opts+=("$ol" "$1") + [[ $2 ]] && opts+=("$el" "$2" "$eb") + [[ $3 ]] && opts+=("$cl" "$3") + [[ $4 ]] && opts+=("$hl" "$4" "$hb") + shift 4 + dialog "${opts[@]}" $do "$@" +} diff --git a/scripts/sshto/core/dynamic/run_cmd.inc b/scripts/sshto/core/dynamic/run_cmd.inc new file mode 100644 index 0000000..e02aefa --- /dev/null +++ b/scripts/sshto/core/dynamic/run_cmd.inc @@ -0,0 +1,42 @@ +if [ -z "$_PROFILES_PATH" ]; then + _MAIN_PATHC=/opt/profiles/scripts/ +else + _MAIN_PATHC=${_PROFILES_PATH}scripts/ +fi + + +if [ ! -d ~/.ssh ]; then + ${_MAIN_PATHC}make_a_key.sh +fi + +refresh() { + cmdlist=() + IFSOLD=$IFS + IFS=','; + while read -r label mycommand desc; + do + [[ $label =~ ^#.* ]] && continue + + desc=${desc/!GUEST/$GUEST} + desc=${desc/!REMOTE/$REMOTE} + desc=${desc/!LOCAL/$LOCAL} + desc=${desc/!DEST/$DEST} + desc=${desc/!home/$home} + desc=${desc/!target/$target} + + cmdlist+=("$label" "$desc" ) + done < "${_RUN_CMDS_FILE}" + IFS=$IFSOLD +} + +cmd() { + IFSOLD=$IFS + IFS=',' + while read -r label user_command desc; + do + [[ $label =~ ^#.* ]] && continue + [[ "$command" == "$label" ]] && break + done < "${_RUN_CMDS_FILE}" + IFS=$IFSOLD + [[ "$command" == "$label" ]] && { $user_command; return; } +} diff --git a/scripts/sshto/core/how_to_install.inc b/scripts/sshto/core/how_to_install.inc new file mode 100644 index 0000000..642b6cf --- /dev/null +++ b/scripts/sshto/core/how_to_install.inc @@ -0,0 +1,16 @@ +install_help=" +${BLD}sshto$DEF requires that the package '${GRN}%b$DEF' is installed. +Type this into the terminal and press return: + + ${BLD}%b$DEF + +Then run ${BLD}sshto$DEF again +" +how_to_install() { + local package=$1 + which yum &> /dev/null && installer="yum -y install $package" + which brew &> /dev/null && installer="brew install $package" + which apt-get &> /dev/null && installer="apt-get install -y $package" + printf -- "$install_help" "$package" "$installer" + [[ $2 ]] && exit $2 +} diff --git a/scripts/sshto/core/is_dialog_installed.inc b/scripts/sshto/core/is_dialog_installed.inc new file mode 100644 index 0000000..2f02994 --- /dev/null +++ b/scripts/sshto/core/is_dialog_installed.inc @@ -0,0 +1,12 @@ +dialog &> /dev/null || { + [[ $(uname -s) == "Darwin" ]] && \ + echo -e "\nInstall dialog\nbrew install -y dialog" + if [[ -x /usr/bin/apt-get ]]; then + echo -e "\nInstall dialog\nsudo apt-get install -y dialog" + fi + if [[ -x /usr/bin/pacman ]]; then + echo -e "\nInstall dialog\nsudo pacman -S dialog" + fi + errors="1" + exit 1 +} diff --git a/scripts/sshto/core/is_done.inc b/scripts/sshto/core/is_done.inc new file mode 100644 index 0000000..6f7b09d --- /dev/null +++ b/scripts/sshto/core/is_done.inc @@ -0,0 +1,20 @@ +if [ -z "$_PROFILES_PATH" ]; then + _MAIN_PATHD=/opt/profiles/scripts/ +else + _MAIN_PATHD=${_PROFILES_PATH}scripts/ +fi + +is_done() { + if [ "$errors" != "0" ]; then + exit 1 + fi + what=$(${_MAIN_PATHD}display_check.sh) + [[ $what == "" ]] && { + clear + #echo "Edit me: ${_MAIN_PATHD}sshto/core/is_done.inc" + $LSEXIT || exit 0 + ls + exit 0; + } || { clear; echo $what; exit 1; } +} +trap is_done INT diff --git a/scripts/sshto/core/main_dialog.inc b/scripts/sshto/core/main_dialog.inc new file mode 100644 index 0000000..4860efb --- /dev/null +++ b/scripts/sshto/core/main_dialog.inc @@ -0,0 +1,19 @@ +main_dialog () { + + if [ ${#list[@]} -eq 0 ]; then + echo "Menu has no SSH Hosts to pick from!" + errors="1" + exit 1 + fi + target=$(dialog --extra-button --extra-label "RUN COMMAND" \ + --ok-label "CONNECT" --cancel-label "EXIT" --colors \ + --help-button --help-label "CONTENTS" --output-fd 1 \ + --menu "Select host to connect to. $USERNOTE" 0 0 0 "${list[@]}"); + case $target:$? in + -*\ *\ *-:*) main_dialog ;; + *:0) go_to_target; main_dialog;; + *:2) contents_menu;; + *:3) run_dialog;; + *:*) is_done;; + esac +} diff --git a/scripts/sshto/core/pause.inc b/scripts/sshto/core/pause.inc new file mode 100644 index 0000000..f5a64e4 --- /dev/null +++ b/scripts/sshto/core/pause.inc @@ -0,0 +1,2 @@ +pause() { printf "\n${BLD}"; read -n 1 -s -r -p "press any key to continue"; printf "\n${DEF}"; } +line() { printf -v LINE "%$2s"; printf -- "${LINE// /$1}"; } diff --git a/scripts/sshto/core/run_dialog.inc b/scripts/sshto/core/run_dialog.inc new file mode 100644 index 0000000..bcbc7fe --- /dev/null +++ b/scripts/sshto/core/run_dialog.inc @@ -0,0 +1,15 @@ +run_dialog() { + refresh + command=$(dialog --ok-label "RUN" --cancel-label "BACK" --output-fd 1 \ + --extra-button --extra-label "CONNECT" --colors \ + --menu "Select command to run on host \Z4$target\Z0. $USERNOTE" 0 0 0 "${cmdlist[@]}") + + case $command:$? in + *:0) cmd;; + *:3) go_to_target;; + *:*) main_dialog;; + esac + + run_dialog + +} diff --git a/scripts/sshto/core/ssh_accept.inc b/scripts/sshto/core/ssh_accept.inc new file mode 100644 index 0000000..725d894 --- /dev/null +++ b/scripts/sshto/core/ssh_accept.inc @@ -0,0 +1,23 @@ +ssh_yes() { +# If connecting first time send 'yes' on ssh's request. +# Expect must be installed on server. Options: +# $1 - ssh address with parameters(if needed) +# +# Usage example: +# ssh_yes "-p22 user@localhost" +expect << EOF +spawn ssh $1 +expect { + "(yes/no)?" { + send "yes\n" + expect { + "assword:" { exit } + "$ " { send "exit\n" } + } + } + "assword:" { exit } + "$ " { send "exit\n" } +} +exit +EOF +} diff --git a/scripts/sshto/core/static/run_cmd.inc b/scripts/sshto/core/static/run_cmd.inc new file mode 100644 index 0000000..e2fc5a5 --- /dev/null +++ b/scripts/sshto/core/static/run_cmd.inc @@ -0,0 +1,35 @@ +if [ ! -d ~/.ssh ]; then + gen_rsa_key +fi + +refresh() { + cmdlist=() + IFSOLD=$IFS + IFS=','; + while read -r label mycommand desc; + do + [[ $label =~ ^#.* ]] && continue + + desc=${desc/!GUEST/$GUEST} + desc=${desc/!REMOTE/$REMOTE} + desc=${desc/!LOCAL/$LOCAL} + desc=${desc/!DEST/$DEST} + desc=${desc/!home/$home} + desc=${desc/!target/$target} + + cmdlist+=("$label" "$desc") + done <<< $hard_coded_cmds + IFS=$IFSOLD +} + +cmd() { + IFSOLD=$IFS + IFS=',' + while read -r label user_command desc; + do + [[ $label =~ ^#.* ]] && continue + [[ "$command" == "$label" ]] && break + done <<< $hard_coded_cmds + IFS=$IFSOLD + [[ "$command" == "$label" ]] && { $user_command; return; } +} diff --git a/scripts/sshto/core/targets.inc b/scripts/sshto/core/targets.inc new file mode 100644 index 0000000..3566742 --- /dev/null +++ b/scripts/sshto/core/targets.inc @@ -0,0 +1 @@ +go_to_target() { clear; ssh $SSH_OPT $target || pause; } diff --git a/scripts/sshto/core/z_get_hosts.inc b/scripts/sshto/core/z_get_hosts.inc new file mode 100644 index 0000000..b90beb2 --- /dev/null +++ b/scripts/sshto/core/z_get_hosts.inc @@ -0,0 +1,57 @@ +zpath=$1 + +update_hosts() { + if [ -z "$zpath" ]; then + local cf=~/.ssh/config* + else + local cf=~/.ssh/configs_$zpath*.conf + fi + + fullist=() # define & Refresh! + content=() + + IFSOLD=$IFS + IFS=$'\n' + + for host in $(grep -h "Host " $cf | sed '/\*/d; s/Host //g;'); do + + name="${host// #*/}" # Get HostName + desc="${host//*#/}" # Get Description + + case $desc in + 'ignore') continue;; + esac + + case $name in + '#Group') + desc="${host%\#*}" + desc="${desc##*\#}" + name="{ $desc }" + length=$(( (40-${#name})/2 )) + name=$( line - $length; printf "%s" "$name"; line - $length ) + [[ ${#name} -lt 40 ]] && name=-$name + content+=( "$desc" ) + desc=$(line - 20);; + '#'*) continue;; + esac + + desc="${desc/s-/}" + desc="${desc/ssh-/}" + desc="${desc/h-/}" + desc="${desc/host-/}" + + fullist+=( "$name" "$desc" ) #Add HostName and Description to the list + + done + + IFS=$IFSOLD + + list=( "${fullist[@]}" ) + [[ -e "$tmpfile" ]] && . "$tmpfile" + [[ "$filter" ]] && new_list + +} + +update_hosts +main_dialog +is_done diff --git a/scripts/sshto/scripts/aliases.inc b/scripts/sshto/scripts/aliases.inc new file mode 100644 index 0000000..e95734d --- /dev/null +++ b/scripts/sshto/scripts/aliases.inc @@ -0,0 +1,29 @@ +add_aliases () { + clear + echo "Compiling Bash Aliases...." + if [ ! -f ${_MAIN_PATH_SSHTO}bin/bash_aliases.tar.gz ]; then + ${_MAIN_PATH_SSHTO}scripts/compile_bash_aliases.sh + else + dialog --title "Choose an option" --yesno "Do you want to recompile aliases?" 10 50 +# Check the return code of the dialog command to see which button was pressed +# Return code 0 means "recompile", return code 1 means "use existing" +case $? in + 0) + clear + echo "Recompiling..." + ${_MAIN_PATH_SSHTO}scripts/compile_bash_aliases.sh + ;; + 1) + clear + echo "Using existing aliases..." + ;; +esac + fi + + echo "Copying over tar file..." + scp $SSH_OPT ${_MAIN_PATH_SSHTO}bin/bash_aliases.tar.gz $target:~ + echo "Copying over run_bash_alias_setup.sh" + echo "chmod +x ~/run_bash_alias_setup.sh and then run it..." + sleep 2 + scp $SSH_OPT ${_MAIN_PATH_SSHTO}scripts/run_bash_alias_setup.sh $target:~ +} diff --git a/scripts/sshto/scripts/change_ports.inc b/scripts/sshto/scripts/change_ports.inc new file mode 100644 index 0000000..436f973 --- /dev/null +++ b/scripts/sshto/scripts/change_ports.inc @@ -0,0 +1,11 @@ +local_port () { + new_local=$(dialog --ok-label "CHANGE" --cancel-label "BACK" --output-fd 1 --max-input 5 \ + --aspect 100 --colors --inputbox 'Change local port' 10 30 $LOCAL) + LOCAL=${new_local:-$LOCAL} +} + +remote_port () { + new_remote=$(dialog --ok-label "CHANGE" --cancel-label "BACK" --output-fd 1 --max-input 5 \ + --aspect 100 --colors --inputbox 'Change remote port' 10 30 $REMOTE) + REMOTE=${new_remote:-$REMOTE} +} diff --git a/scripts/sshto/scripts/change_username.inc b/scripts/sshto/scripts/change_username.inc new file mode 100644 index 0000000..ea80b23 --- /dev/null +++ b/scripts/sshto/scripts/change_username.inc @@ -0,0 +1,8 @@ +username () { + new_user=$(dialog --ok-label "CHANGE" --cancel-label "BACK" --output-fd 1 --max-input 20 \ + --aspect 100 --colors --inputbox 'Change alternative username' 10 30 $GUEST) + case $new_user:$? in + *:0) GUEST=${new_user:-$GUEST}; SSH_OPT="-oUser=$GUEST"; USERNOTE="Username changed to \Z2$GUEST\Z0.";; + *:*) return;; + esac +} diff --git a/scripts/sshto/scripts/compile_bash_aliases.sh b/scripts/sshto/scripts/compile_bash_aliases.sh new file mode 100755 index 0000000..2db10bb --- /dev/null +++ b/scripts/sshto/scripts/compile_bash_aliases.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ -z "$_PROFILES_PATH" ]; then + _PROFILES_PATHA=/opt/profiles/ +else + _PROFILES_PATHA=${_PROFILES_PATH} +fi + +if [ ! -d ${_PROFILES_PATHA} ]; then + echo "Sorry, no /opt/profiles folder!" + exit 1 +fi + +_MAIN_PATH="${_PROFILES_PATHA}scripts/sshto" + +if [ ! -d ${_MAIN_PATH}/bin ]; then + mkdir -p ${_MAIN_PATH}/bin > /dev/null 2> /dev/null + chmod 775 ${_MAIN_PATH}/bin +fi + +pushd ${_PROFILES_PATHA} +tar -zvcf ${_MAIN_PATH}/bin/bash_aliases.tar.gz --exclude=scripts/sshto --exclude=scripts/dmenu --exclude=scripts/mail_server --exclude=scripts/web_servers .bashrc .bash_aliases .git_bash_prompt scan_aliases.sh check_mail.sh theme aliases/ cheats/ custom_aliases/ scripts/ +popd diff --git a/scripts/sshto/scripts/compile_sshto.sh b/scripts/sshto/scripts/compile_sshto.sh new file mode 100755 index 0000000..1233e3e --- /dev/null +++ b/scripts/sshto/scripts/compile_sshto.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +if [ -z "$_PROFILES_PATH" ]; then + _MAIN_PATHCC=/opt/profiles/ +else + _MAIN_PATHCC=${_PROFILES_PATH} +fi + + +_MAIN_PATH="${_MAIN_PATHCC}scripts/sshto" + +_SSHTO_BIN=${_MAIN_PATH}/bin/sshto + +if [ ! -d ${_MAIN_PATH} ]; then + echo "Sorry, no /opt/profiles/scripts/sshto folder!" + exit 1 +fi + +if [ ! -d ${_MAIN_PATH}/bin ]; then + mkdir -p ${_MAIN_PATH}/bin > /dev/null 2> /dev/null + chmod 775 ${_MAIN_PATH}/bin +fi + +_PATH_TO_CORE="${_MAIN_PATH}/core" +_CORE_FILES="${_PATH_TO_CORE}/*.inc" + +_PATH_TO_SCRIPTS="${_MAIN_PATH}/scripts" +_SCRIPT_FILES="${_PATH_TO_SCRIPTS}/*.inc" + +_RUN_CMDS_FILE="${_PATH_TO_SCRIPTS}/sshto_run_cmds.list" + +[ ! -f $_RUN_CMDS_FILE ] && { echo "No config file!! Aborting..."; exit; } + +_GEN_A_KEY=${_MAIN_PATHCC}scripts/make_a_key.sh + +echo "#!/bin/bash" > $_SSHTO_BIN +cat ${_MAIN_PATH}/config.inc >> $_SSHTO_BIN + +echo -e "\n" >> $_SSHTO_BIN +echo "hard_coded_cmds=\$(cat <> $_SSHTO_BIN +cat $_RUN_CMDS_FILE >> $_SSHTO_BIN +echo "EOF" >> $_SSHTO_BIN +echo -e ")\n" >> $_SSHTO_BIN + +cp $_GEN_A_KEY /tmp/gen_a_key +sed -i "1,1d" /tmp/gen_a_key +sed -i "/make_a_key ##/d" /tmp/gen_a_key +cat /tmp/gen_a_key >> $_SSHTO_BIN +rm /tmp/gen_a_key + +echo -e "#script: run_cmd.inc \n" >> $_SSHTO_BIN +cat ${_PATH_TO_CORE}/static/run_cmd.inc >> $_SSHTO_BIN +echo -e "\n" >> $_SSHTO_BIN + +for s in $_SCRIPT_FILES; do + echo -e "#script: $s \n" >> $_SSHTO_BIN + cat $s >> $_SSHTO_BIN +done + +for f in $_CORE_FILES; do + echo -e "#core: $f \n" >> $_SSHTO_BIN + cat $f >> $_SSHTO_BIN +done + +set -x +chmod 755 $_SSHTO_BIN +set +x +echo "To use: $ sudo cp $_SSHTO_BIN /usr/local/bin/" +echo -e "Compiled to: $_SSHTO_BIN \n" diff --git a/scripts/sshto/scripts/copy_files.inc b/scripts/sshto/scripts/copy_files.inc new file mode 100644 index 0000000..a5acfa9 --- /dev/null +++ b/scripts/sshto/scripts/copy_files.inc @@ -0,0 +1,9 @@ +copy_files () { + filename=$(D "COPY" '' "BACK" '' --fselect $PWD/ 10 80) + + case $filename:$? in + $PWD|$PWD/:0) return;; + *:0) clear; uploader; scp -r $SSH_OPT $filename $target:~;; + *:*) return;; + esac; copy_files +} diff --git a/scripts/sshto/scripts/copy_ssh_keys.inc b/scripts/sshto/scripts/copy_ssh_keys.inc new file mode 100644 index 0000000..47cac80 --- /dev/null +++ b/scripts/sshto/scripts/copy_ssh_keys.inc @@ -0,0 +1,101 @@ +add_sshkey() { + clear + IFSOLD=$IFS + IFS=$'\n' + homes=~/.ssh/ + if [ -z $KEY ]; then + akeys=() + realkeys=() + indexforkeys=() + else + akeys=( "Default" "${KEY/$homes/}" ) + realkeys=( "${KEY}" ) + indexforkeys=( "Default" ) + fi + + local pubs=$(find ~/.ssh/ -type f -iname "*.pub") + if [ -z $pubs ]; then + echo "You have no KEYs, copy your existing ones or make a new one...." + echo "To make a key do \$ /opt/profiles/scripts/make_a_key.sh" + exit 1 + fi + + local option_no=0 + local ckeys=0 + for k in $pubs; do + ckeys=$((ckeys+1)) + if [ $k == "$KEY" ]; then + continue + fi + + option_no=$((option_no+1)) + akeys+=( "$option_no" "${k/$homes/}" ) + indexforkeys+=( "$option_no" ) + realkeys+=( "$k" ) + done + IFS=$IFSOLD + + if [ $ckeys -eq 1 ]; then + USExKEY=$k + else + usekey=$(dialog --ok-label "Use this Key" --cancel-label "Back" --output-fd 1 \ + --colors \ + --menu "Select key:" 0 0 0 "${akeys[@]}") + match="false" + c=0 + for no in "${indexforkeys[@]}"; do + c=$((c+1)) + if [ "$usekey" == "$no" ]; then + match="true" + break + fi + done + + if [ "$match" == "false" ]; then + clear + return 0 + fi + + d=0 + for i in "${realkeys[@]}"; do + d=$((d+1)) + if [ "$d" == "$c" ]; then + USExKEY=$i + break + fi + done + fi + + #echo $USExKEY + #exit 1 + clear + + custom="${USExKEY/.pub/}" + generic_exists="false" + if [ ! -e "$custom" ]; then + echo "Making Symbolic Link for key from private to base" + ln -s "$custom.private" "$custom" + else + generic_exists="true" + fi + + if [ -x /usr/bin/expect ]; then + echo '' + ssh_yes "$SSH_OPT $target" > /dev/null; ssh-copy-id -i $USExKEY $SSH_OPT $target + else + echo "Please install the package called expect" + pause + ssh-copy-id -i $USExKEY $SSH_OPT $target + fi + run_success=$? + + if [ "$generic_exists" == "false" ] && [ -h "$custom" ]; then + echo "Removing temp symbolic link that was just made..." + rm "$custom" + fi + + if [ ! "$run_success" -eq 0 ]; then + errors="1" + exit 1 + fi +} diff --git a/scripts/sshto/scripts/fix_id.inc b/scripts/sshto/scripts/fix_id.inc new file mode 100644 index 0000000..d4160a8 --- /dev/null +++ b/scripts/sshto/scripts/fix_id.inc @@ -0,0 +1,20 @@ +new_ssh_yes(){ + local hostname=$target + local fprint=($(ssh-keyscan -H "$hostname" 2>/dev/null)) + grep -q "${fprint[2]}" "$knwhosts" || echo "${fprint[@]}" >> "$knwhosts" +} + +fix_id(){ + clear + hostname=$(D "FIX" '' "BACK" '' --max-input 20 --inputbox 'Change Server Host name/address' 10 30 $target) + case $hostname:$? in + *:0) USEHOST=${hostname:-$USEHOST}; clear + local address=$(dig +short $USEHOST) + ssh-keygen -f "$knwhosts" -R "$USEHOST" + ssh-keygen -f "$knwhosts" -R "$address";; + *:*) return;; + esac + + new_ssh_yes + pause +} diff --git a/scripts/sshto/scripts/gui.inc b/scripts/sshto/scripts/gui.inc new file mode 100644 index 0000000..4add01b --- /dev/null +++ b/scripts/sshto/scripts/gui.inc @@ -0,0 +1,41 @@ +gui() { + clear + + if [ -x /usr/bin/nautilus ]; then + /usr/bin/nautilus "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/dolphin ]; then + /usr/bin/dolphin "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/konqueror ]; then + /usr/bin/konqueror "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/nemo ]; then + /usr/bin/nemo "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/thunar ]; then + /usr/bin/thunar "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/caja ]; then + /usr/bin/caja "sftp://${target}/home/" & + return 0 + fi + + if [ -x /usr/bin/xdg-open ]; then + /usr/bin/xdg-open "sftp://${target}/home/" & + return 0 + fi + + echo "Unable to find GUI File Manager" + exit 1 +} diff --git a/scripts/sshto/scripts/install_colors.inc b/scripts/sshto/scripts/install_colors.inc new file mode 100644 index 0000000..ee7d1df --- /dev/null +++ b/scripts/sshto/scripts/install_colors.inc @@ -0,0 +1,4 @@ +colors () { + [[ ! -e ~/.dialogrc ]] && { dialog --create-rc ~/.dialogrc; } + $EDITOR ~/.dialogrc +} diff --git a/scripts/sshto/scripts/mosh.inc b/scripts/sshto/scripts/mosh.inc new file mode 100644 index 0000000..ea0adce --- /dev/null +++ b/scripts/sshto/scripts/mosh.inc @@ -0,0 +1,11 @@ +mosh() { + clear + + if [ -x /usr/bin/mosh ]; then + /usr/bin/mosh "$target" + else + echo "Unable to find the mosh client!" + how_to_install mosh + exit 1 + fi +} diff --git a/scripts/sshto/scripts/newtab.inc b/scripts/sshto/scripts/newtab.inc new file mode 100644 index 0000000..b8c66b0 --- /dev/null +++ b/scripts/sshto/scripts/newtab.inc @@ -0,0 +1,3 @@ +newtab() { + gnome-terminal --title="SSHTO" --tab -qe "/bin/bash -c /opt/profiles/scripts/sshto/sshto.sh"; +} diff --git a/scripts/sshto/scripts/port_tunnel.inc b/scripts/sshto/scripts/port_tunnel.inc new file mode 100644 index 0000000..086c1af --- /dev/null +++ b/scripts/sshto/scripts/port_tunnel.inc @@ -0,0 +1 @@ +portunneling() { clear; echo -e "\nDoing Tunnel....\n"; ssh $SSH_OPT -L $REMOTE:127.0.0.1:$LOCAL -N $target; pause; } diff --git a/scripts/sshto/scripts/run_bash_alias_setup.sh b/scripts/sshto/scripts/run_bash_alias_setup.sh new file mode 100644 index 0000000..7c14a95 --- /dev/null +++ b/scripts/sshto/scripts/run_bash_alias_setup.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +if [ -z "$_PROFILES_PATH" ]; then + _PROFILES_PATHS=/opt/profiles/ +else + _PROFILES_PATHS=${_PROFILES_PATH} +fi + + +sudo mkdir -p ${_PROFILES_PATHS} 2> /dev/null +pushd ${_PROFILES_PATHS} +sudo tar -xvzf ~/bash_aliases.tar.gz + +if [ -f "$HOME/.ran_profiles_once" ]; then + echo -e "Already run once for this user!!\n" + popd + exit 1 +fi + +bnow=$(date +"%m_%d_%Y_%H_%M_%S") +mkdir -p "$HOME/.dotfile_backups/$bnow" 2> /dev/null +cp "$HOME"/{.bash_aliases,.bashrc,.profile,.git_bash_prompt,.vimrc,.gitconfig,.gitconfig.secret} "$HOME/.dotfile_backups/$bnow/" 2> /dev/null + +rm ~/.git_bash_prompt 2> /dev/null +mv ~/.bashrc ~/.bashrc_old 2> /dev/null +mv ~/.bash_aliases ~/.bash_aliases_old 2> /dev/null +ln -s ${_PROFILES_PATHS}.bashrc ~/.bashrc 2> /dev/null +ln -s ${_PROFILES_PATHS}.git_bash_prompt ~/.git_bash_prompt 2> /dev/null +ln -s ${_PROFILES_PATHS}.bash_aliases ~/.bash_aliases 2> /dev/null +popd + +rm ~/bash_aliases.tar.gz +touch "$HOME/.ran_profiles_once" diff --git a/scripts/sshto/scripts/sshto_run_cmds.list b/scripts/sshto/scripts/sshto_run_cmds.list new file mode 100644 index 0000000..b4755e0 --- /dev/null +++ b/scripts/sshto/scripts/sshto_run_cmds.list @@ -0,0 +1,26 @@ +#Label, Bash_Command, Description +Mosh SSH, mosh, Use Mosh Client +New Tab, newtab, Open SSHTO in a new Tab +GUI, gui, Open GUI File MGR +List Files, list_files, List remote files +Free Memory, free_mem, Get memory on server +Inodes Free, free_inodes, Get inodes free on server +Disk Space, disk_space, Get Disk Space on server +System Info, system_info, Get server information +,, +Home, homepath, Change local PC home folder\Z4 !home \Z0 +Dest, downpath, Change Server folder\Z4 !DEST \Z0 on \Z4 !target \Z0 +Upload, upload, Upload to the server\Z4 !home \Z0 to \Z4 !target:!DEST \Z0 +Download, download, Download from the server\Z4 !target:!DEST\Z0 to\Z4 !home \Z0 +Files Copy, copy_files, Copy file to server +Mount, mountdest, Mount remote Server folder\Z4 !DEST\Z0 to\Z4 /mnt/!target \Z0 +Unmount, unmountdest, Unmount remote Server folder\Z4 !DEST\Z0 from\Z4 /mnt/!target \Z0 +,, +Key Copy, add_sshkey, Copy your SSH key to the server +Fix host ID, fix_id , Remove server/host from known_hosts +Change Username, username, Switch user accounts:\Z4 !GUEST \Z0 +Local Port, local_port, Change local port:\Z4 !LOCAL \Z0 +Remote Port, remote_port, Change remote port:\Z4 !REMOTE \Z0 +Port Tunnel, portunneling, Open Tunnel to server +Change Colors, colors, Edit dialog colors +Copy Aliases, add_aliases, SCP Bash Aliases diff --git a/scripts/sshto/scripts/stats.inc b/scripts/sshto/scripts/stats.inc new file mode 100644 index 0000000..e3e9928 --- /dev/null +++ b/scripts/sshto/scripts/stats.inc @@ -0,0 +1,4 @@ +list_files() { clear; ssh $SSH_OPT $target "ls -la"; pause; } +free_mem() { clear; ssh $SSH_OPT $target "free -h"; pause; } +free_inodes() { clear; ssh $SSH_OPT $target "df -ih"; pause; } +disk_space() { clear; ssh $SSH_OPT $target "df -h"; pause; } diff --git a/scripts/sshto/scripts/system_info.inc b/scripts/sshto/scripts/system_info.inc new file mode 100644 index 0000000..939dde6 --- /dev/null +++ b/scripts/sshto/scripts/system_info.inc @@ -0,0 +1,39 @@ +system_info () { + clear + ssh $SSH_OPT $target " + printf '\n${BLD}Hostname:${DEF}\n' + hostname + + printf '\n${BLD}Interfaces:${DEF}\n' + ip a + + printf '\n${BLD}Memory:${DEF}\n' + LANG=Us free --si -h + + printf '\n${BLD}CPU:${DEF}\n' + lscpu + + printf '\n${BLD}Disk:${DEF}\n' + df -h; echo; df -ih; echo; lsblk + + printf '\n${BLD}Software:${DEF}\n' + uname -a; echo + [[ -e /usr/bin/lsb_release ]] && { lsb_release -a; echo; } + [[ -e /usr/bin/java ]] && { java -version; echo; } + [[ -e /usr/bin/psql ]] && { psql -V ; echo; } + [[ -e /usr/sbin/nginx ]] && { nginx -v ; echo; } + [[ -e /usr/sbin/apache2 ]] && { apache2 -v ; echo; } + [[ -e /usr/bin/php ]] && { php -v ; echo; } + [[ -e /usr/bin/mysql ]] && { mysql -v ; echo; } + + printf '${BLD}Logged in Users:${DEF}\n' + who + + printf '\n${BLD}Port usage info:${DEF}\n' + netstat -tulpn 2> /dev/null + + printf '\n${BLD}Processes:${DEF}\n' + top -bcn1 | head -n30 + " + pause +} diff --git a/scripts/sshto/scripts/up_or_down_load.inc b/scripts/sshto/scripts/up_or_down_load.inc new file mode 100644 index 0000000..96dfce3 --- /dev/null +++ b/scripts/sshto/scripts/up_or_down_load.inc @@ -0,0 +1,59 @@ +downpath(){ + new_path=$(D "CHANGE" '' "BACK" '' --max-input 100 --inputbox 'Change download folder' 10 50 $DEST) + DEST=${new_path:-$DEST} + dfilelist= +} + +homepath(){ + new_path=$(D "CHANGE" '' "BACK" '' --max-input 100 --inputbox 'Change home folder' 10 50 $home) + home=${new_path:-$home} +} + +uploader(){ + printf "Uploading $BLD$filename$DEF\n" + scp -r $SSH_OPT $filename $target:"$DEST/" +} + +mountdest(){ + which sshfs &> /dev/null || { clear; how_to_install sshfs; pause; return; } + clear + sudo mkdir -p "/mnt/$target" + sudo chown $USER:$USER "/mnt/$target" + echo "Mounting in /mnt/$target" + sshfs $sshfsopt "$target":"$DEST" "/mnt/$target" || pause +} + +unmountdest(){ mount | grep -q "$target" && umount "/mnt/$target"; } + +upload(){ + filelist=( $(ls -sh1 $home | awk '{print $2,$1}') ) + filename=$(D "UPLOAD" '' "BACK" '' --menu "Select file\folder to upload:" 0 0 0 "${filelist[@]:2}") + case $? in + 0) [[ $filename ]] || upload + clear; uploader; pause;; + *) return;; + esac; upload +} + +download(){ + clear + [[ $dfilelist ]] || { + dfilelist=$(ssh $SSH_OPT $target ls -sh1 $DEST 2>&1) \ + && dfilelist=( $(awk '{print $2,$1}' <<< "$dfilelist") ) \ + || { + clear + echo "$dfilelist" + pause + dfilelist= + run_dialog + } + } + dfilename=$(D "DOWNLOAD" '' "BACK" '' --menu "Select file\folder to download:" 0 0 0 "${dfilelist[@]:2}") + case $? in + 0) [[ $dfilename ]] || download + clear + printf "Downloading $BLD$dfilename$DEF\n" + scp -r $SSH_OPT $target:"$DEST/$dfilename" . || pause;; + *) return;; + esac; download +} diff --git a/scripts/sshto/sshto.sh b/scripts/sshto/sshto.sh new file mode 100755 index 0000000..2c0eb43 --- /dev/null +++ b/scripts/sshto/sshto.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +errors="0" + +if [ -z "$_PROFILES_PATH" ]; then + export _MAIN_PATH_SSHTO=~/dotfiles/scripts/sshto/ +else + export _MAIN_PATH_SSHTO=${_PROFILES_PATH}scripts/sshto/ +fi +_PATH_TO_CORE=${_MAIN_PATH_SSHTO}core +_CORE_FILES=${_PATH_TO_CORE}/*.inc + +_PATH_TO_SCRIPTS=${_MAIN_PATH_SSHTO}scripts +_SCRIPT_FILES=${_PATH_TO_SCRIPTS}/*.inc + +_RUN_CMDS_FILE=${_PATH_TO_SCRIPTS}/sshto_run_cmds.list + +[ ! -f "$_RUN_CMDS_FILE" ] && { echo "No config file!! Aborting..."; exit; } + +source "${_MAIN_PATH_SSHTO}config.inc" + +source "${_PATH_TO_CORE}/dynamic/run_cmd.inc" + +for s in $_SCRIPT_FILES; do + source "$s" +done + +for f in $_CORE_FILES; do + source "$f" +done