Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

439 lines
13 KiB

#compdef gcloud
#------------------------------------------------------------
# Description:
#
# Completion script for Google Cloud SDK
#
# Author:
#
# * Colin Su (https://github.com/littleq0903)
#
# Source Code:
#
# https://github.com/littleq0903/gcloud-zsh-completion
#
#------------------------------------------------------------
## Util functions
# get authorized account list
__account_list ()
{
_wanted application expl 'Authorized Google Accounts' compadd $(command gcloud auth list 2> /dev/null | grep - | sed -e "s/^ - //g" | sed -e "s/(active)//g")
}
# get config variable names
__variable_list ()
{
_wanted application expl 'gcloud :: config :: Configuration Variables' compadd $(command gcloud config list 2> /dev/null | grep "=" | sed -e "s/ = .*//g")
}
## Common stuffs
local -a _first_arguments
_first_arguments=(
# these are command groups
'auth:Manage oauth2 credentials for the Google Cloud SDK'
'components:Install, update, or remove the tools in the Google Cloud SDK'
'compute:Read and manipulate Google Compute Engine resources'
'config:View and edit Google Cloud SDK properties'
'sql:Manage Cloud SQL databases'
# these are just commands
'init:Initialize a gcloud workspace in the current directory'
'interactive:Use this tool in an interactive python shell'
'version:Print version information for Cloud SDK components'
)
# common options
common_ops=(
{--project+,-p+}":Google Cloud Platform project to use for this invocation:( )"
{--quiet,-q}"[Disable all interactive prompts when running gcloud commands. If input is required, defaults will be used, or an error will be raised.]"
"--user-output-enabled+:Control whether user intended output is printed to the console.:(true false)"
"--verbosity+:Override the default verbosity for this command. This must be a standard logging verbosity level:(debug info warning error critical none)"
)
## for 'auth' command group
# Commands
local -a _auth_arguments
_auth_arguments=(
"activate-refresh-token:Get credentials via an existing refresh token"
"list:List the accounts for known credentials"
"login:Get credentials via Google's oauth2 web flow"
"revoke:Revoke authorization for credentials"
)
__gcloud-auth ()
{
local curcontext="$curcontext" state line
local -A opt_args
_arguments \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t subcommand "gcloud :: auth Commands" _auth_arguments
return
;;
(options)
case $line[1] in
(list)
_arguments \
"--account+::List only credentials for one account:( )"
;;
(login)
# TODO: make options repeatable
local args
args=(
"--account+:Override the account acquired from the web flow:( )"
"--do-not-activate[Do not set the new credentials as active]"
"--no-launch-browser[Print a URL to be copied instead of launching a web browser]"
)
_arguments -C $args
;;
(revoke)
_arguments \
"--all[Revoke all known credentials]"
;;
esac
;;
esac
}
## for 'components' command groups
local -a _components_arguments
_components_arguments=(
'list:Command to list the current state of installed components'
'remove:Command to remove installed components'
'restore:Command to restore a backup of a Cloud SDK installation'
'update:Command to update existing or install new components'
)
__gcloud-components ()
{
local curcontext="$curcontext" state line
local -A opt_args
_arguments -C \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: components Commands" _components_arguments
return
;;
(options)
case $line[1] in
(list)
_arguments \
"--show-versions[Show version information for all components]"
;;
(remove)
;;
(restore)
;;
(update)
;;
esac
;;
esac
}
## for 'compute' command groups
local -a _compute_arguments
_compute_arguments=(
"addresses:Read and manipulate Google Compute Engine addresses."
"backend-services:List, create, and delete backend services."
"disk-types:Read Google Compute Engine virtual disk types."
"disks:Read and manipulate Google Compute Engine disks."
"firewall-rules:List, create, and delete Google Compute Engine firewall rules."
"forwarding-rules:Read and manipulate forwarding rules to send traffic to load balancers."
"http-health-checks:Read and manipulate HTTP health checks for load balanced instances."
"images:List, create, and delete Google Compute Engine images."
"instances:Read and manipulate Google Compute Engine virtual machine instances."
"machine-types:Read Google Compute Engine virtual machine types."
"networks:List, create, and delete Google Compute Engine networks."
"operations:Read and manipulate Google Compute Engine operations."
"project-info:Read and manipulate project-level data like quotas and metadata."
"regions:List Google Compute Engine regions."
"routes:Read and manipulate routes."
"snapshots:List, describe, and delete Google Compute Engine snapshots."
"target-http-proxies:List, create, and delete target HTTP proxies."
"target-instances:Read and manipulate Google Compute Engine virtual target instances."
"target-pools:Read and manipulate Google Compute Engine target pools."
"url-maps:List, create, and delete URL maps."
"zones:List Google Compute Engine zones."
"config-ssh:Populate SSH config files with Host entries from each instance"
"copy-files:Copy files to and from Google Compute Engine virtual machines."
"ssh:SSH into a virtual machine instance."
)
__gcloud-compute ()
{
local curcontext="$curcontext" state line
local -A opt_args
_arguments -C \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: compute commands" _compute_arguments
return
;;
esac
}
## for 'config' command groups
local -a _config_arguments
_config_arguments=(
'list:View Google Cloud SDK properties'
'set:Edit Google Cloud SDK properties'
'unset:Erase Google Cloud SDK properties'
)
__gcloud-config ()
{
local curcontext="$curcontext" state line
local -A opt_args
_arguments -C \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: config Commands" _config_arguments
return
;;
(options)
case $line[1] in
(list)
_arguments \
"--all[List all set and unset properties that match the arguments]" \
{--section+,-s+}":The section whose properties shall be listed:( )"
;;
(set)
# FEATURE: gcloud config set <property>, will complete the property names
local -a _config_set_arguments
_config_set_arguments=(
"--global-only[Set the option in the global properties file]"
{--section+,-s+}":The section containing the option to be set:( )"
)
_arguments -C \
$_config_set_arguments \
'1:feature:__variable_list' \
'*:value:->value'
case $state in
(value)
case $line[1] in
(account)
# FEATURE: gcloud config set account <authed_account>
# when `config set account <cursor>`, completing by authroized accounts
_arguments -C \
'2:feature:__account_list'
;;
esac
;;
esac
;;
(unset)
# FEATURE: gcloud config unset <property>, will complete the property names
local -a _config_unset_arguments
_config_unset_arguments=(
"--global-only[Unset the option in the global properties file]"
{--section+,-s+}":The section containing the option to be unset:( )"
)
_arguments \
$_config_unset_arguments \
'1:feature:__variable_list'
;;
esac
;;
esac
}
## for 'sql' command groups
local -a _sql_arguments
_sql_arguments=(
'backups:Provide commands for working with backups of Cloud SQL instances'
'instances:Provide commands for managing Cloud SQL instances'
'operations:Provide commands for working with Cloud SQL instance operations'
'ssl-certs:Provide commands for managing SSL certificates of Cloud SQL instances'
'tiers:Provide a command to list tiers'
)
__gcloud-sql ()
{
local curcontext="$curcontext" state line
local -A opt_args
_arguments -C \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: sql Commands" _sql_arguments
return
;;
(options)
case $line[1] in
(backups)
_sql_backups_arguments=(
"get:Retrieves information about a backup"
"list:Lists all backups associated with a given instance"
)
_arguments \
':command:->command' \
{--instance+,-i+}":Cloud SQL instance ID:( )" \
'*::options:->options'
case $state in
(command)
local -a _sql_backups_arguments
_describe -t commands "gcloud :: sql :: backup Commands" _sql_backups_arguments
;;
esac
;;
(instances)
# too many optional options in here, cry ;(
_sql_instances_arguments=(
'create:Creates a new Cloud SQL instance'
'delete:Deletes a Cloud SQL instance'
'export:Exports data from a Cloud SQL instance'
'get:Retrieves information about a Cloud SQL instance'
'import:Imports data into a Cloud SQL instance from Google Cloud Storage'
'list:Lists Cloud SQL instances in a given project'
'patch:Updates the settings of a Cloud SQL instance'
'reset-ssl-config:Deletes all client certificates and generates a new server certificate'
'restart:Restarts a Cloud SQL instance'
'restore-backup:Restores a backup of a Cloud SQL instance'
'set-root-password:Sets the password of the MySQL root user'
)
_arguments \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: sql :: instances Commands" _sql_instances_arguments
;;
esac
;;
(operations)
local -a _sql_operations_arguments
_sql_operations_arguments=(
"get:Retrieves information about a Cloud SQL instance operation."
"list:Lists all instance operations for the given Cloud SQL instance"
)
_arguments \
':command:->command' \
{--instance+,-i+}":Cloud SQL instance ID:( )" \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: sql :: operations Commands" _sql_backups_arguments
;;
esac
;;
(ssl-certs)
local -a _sql_sslcerts_arguments
_sql_sslcerts_arguments=(
'create:Creates an SSL certificate for a Cloud SQL instance'
'delete:Deletes an SSL certificate for a Cloud SQL instance'
'get:Retrieves information about an SSL cert for a Cloud SQL instance'
'list:Lists all SSL certs for a Cloud SQL instance'
)
_arguments \
':command:->command' \
{--instance+,-i+}":Cloud SQL instance ID:( )" \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: sql :: ssl-certs Commands" _sql_sslcerts_arguments
;;
esac
;;
(tiers)
local -a _sql_tiers_arguments
_sql_tiers_arguments=(
"list:Lists all available service tiers for Google Cloud SQL"
)
_arguments \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "gcloud :: sql :: tiers Commands" _sql_tiers_arguments
;;
esac
;;
esac
;;
esac
}
## Top-level completion function
local expl
local curcontext="$curcontext" state line
local -A opt_args
_arguments -C \
$common_ops \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "Google Cloud SDK Commands" _first_arguments
;;
(options)
# subcommands
case $line[1] in
(auth)
__gcloud-auth
;;
(compute)
__gcloud-compute
;;
(components)
__gcloud-components
;;
(config)
__gcloud-config
;;
(sql)
__gcloud-sql
;;
esac
;;
esac
return 0
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et