Add rke command completion

This commit is contained in:
Patrik Wehrli 2020-10-13 21:37:47 +02:00
parent c549387745
commit 0fc24e62cf
2 changed files with 178 additions and 0 deletions

9
plugins/rke/README.md Normal file
View file

@ -0,0 +1,9 @@
# RKE plugin
This plugin adds auto-completion for [rke](https://rancher.com/products/rke/).
To use it add `rke` to the plugins array in your zshrc file.
```zsh
plugins=(... rke)
```

169
plugins/rke/_rke Normal file
View file

@ -0,0 +1,169 @@
#compdef rke
typeset -A opt_args
_arguments -C \
'1:cmd:->cmds' \
'2:subcmd:->subcmds' \
'*:: :->args' \
&& ret=0
case "$state" in
(cmds)
local commands; commands=(
'up:Bring the cluster up'
'remove:Teardown the cluster and clean cluster nodes'
'version:Show cluster Kubernetes version'
'config:Setup cluster configuration'
'etcd:etcd snapshot save/restore operations in k8s cluster'
'cert:Certificates management for RKE cluster'
'encrypt:Manage cluster encryption provider keys'
'help:Shows a list of commands or help for one command'
)
_describe -t commands 'command' commands && ret=0
;;
(subcmds)
case $line[1] in
(up)
local ups; ups=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--local:Deploy Kubernetes cluster locally'
'--dind:Deploy Kubernetes cluster in docker containers (experimental)'
'--dind-storage-driver:Storage driver for the docker in docker containers (experimental)'
'--dind-dns-server:DNS resolver to be used by docker in docker container. Useful if host is running systemd-resovld (default: "8.8.8.8")'
'--update-only:Skip idempotent deployment of control and etcd plane'
'--disable-port-check:Disable port check validation between nodes'
'--init:Initiate RKE cluster'
'--cert-dir:Specify a certificate dir path'
'--custom-certs:Use custom certificates from a cert dir'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t ups 'up' ups && ret=0
;;
(remove)
local removes; removes=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--force:Force removal of the cluster'
'--local:Remove Kubernetes cluster locally'
'--dind:Remove Kubernetes cluster deplozed in dind mode'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t removes 'remove' removes && ret=0
;;
(version)
local versions; versions=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
)
_describe -t versions 'version' versions && ret=0
;;
(config)
local configs; configs=(
'--name:Name of the configuration file (default: "cluster.yml")'
'-n:Name of the configuration file (default: "cluster.yml")'
'--empty:Generate Empty configuration file'
'-e:Generate Empty configuration file'
'--print:Print configuration'
'-p:Print configuration'
'--system-images:Generate the default system images'
'-s:Generate the default system images'
'--list-version:List the default kubernetes version'
'-l:List the default kubernetes version'
'--all:Used with -s and -l, get all available versions'
'-a:Used with -s and -l, get all available versions'
'--version:Generate the default system images for specific k8s versions'
)
_describe -t configs 'config' configs && ret=0
;;
(etcd)
local etcds; etcds=(
'snapshot-save:Take snapshot on all etcd hosts'
'snapshot-restore:Restore existing snapshot'
)
_describe -t etcds 'etcd' etcds && ret=0
;;
(cert)
local certs; certs=(
'rotate:Rotate RKE cluster certificates'
'generate-csr:Generate certificate sign requests for k8s components'
)
_describe -t certs 'cert' certs && ret=0
;;
(encrypt)
local encrypts; encrypts=(
'rotate-key:Rotate cluster encryption provider key'
)
_describe -t encrypts "encrypts" encrypts && ret=0
;;
esac
;;
(args)
case $line[2] in
(snapshot-save)
local saveopts; saveopts=(
'--name:Specify snapshot name'
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--s3:Enabled backup to s3'
'--s3-endpoint:Specify s3 endpoint url (default: "s3.amazonaws.com")'
'--s3-endpoint-ca:Specify a custom CA cert to connect to S3 endpoint'
'--access-key:Specify s3 accessKey'
'--secret-key:Specify s3 secretKey'
'--bucket-name:Specify s3 bucket name'
'--region:Specify the s3 bucket location (optional)'
'--folder:Specify s3 folder name'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t saveopts 'snapshot-save' saveopts && ret=0
;;
(snapshot-restore)
local restoreopts; restoreopts=(
'--name:Specify snapshot name'
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--s3:Enabled backup to s3'
'--s3-endpoint:Specify s3 endpoint url (default: "s3.amazonaws.com")'
'--s3-endpoint-ca:Specify a custom CA cert to connect to S3 endpoint'
'--access-key:Specify s3 accessKey'
'--secret-key:Specify s3 secretKey'
'--bucket-name:Specify s3 bucket name'
'--region:Specify the s3 bucket location (optional)'
'--folder:Specify s3 folder name'
'--cert-dir value:Specify a certificate dir path'
'--custom-certs:Use custom certificates from a cert dir'
'--use-local-state:Use local state file (do not check or use snapshot archive for state file)'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t restoreopts 'snapshot-restore' restoreopts && ret=0
;;
(rotate)
local rotateopts; rotateopts=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--service:Specify a k8s service to rotate certs, (allowed values: kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy, etcd)'
'--rotate-ca:Rotate all certificates including CA certs'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t rotateopts 'rotate' rotateopts && ret=0
;;
(generate-csr)
local generatecsropts; generatecsropts=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--cert-dir: Specify a certificate dir path'
)
_describe -t generatecsropts 'generate-csr' generatecsropts && ret=0
;;
(rotate-key)
local rotatekeyopts; rotatekeyopts=(
'--config:Specify an alternate cluster YAML file (default: "cluster.yml") $RKE_CONFIG'
'--ssh-agent-auth:Use SSH Agent Auth defined by SSH_AUTH_SOCK'
'--ignore-docker-version:Disable Docker version check'
)
_describe -t rotatekeyopts 'rotate-key' rotatekeyopts && ret=0
;;
esac
;;
esac
return ret