parent
3d5b3430fd
commit
7f3e6143ec
2 changed files with 172 additions and 0 deletions
@ -0,0 +1,11 @@ |
||||
## atom |
||||
|
||||
Plugin for Terraform, a tool from Hashicorp for managing infrastructure safely and efficiently. |
||||
|
||||
### Requirements |
||||
|
||||
* [Terraform](https://teraform.io/) |
||||
|
||||
### Usage |
||||
|
||||
* Type `terraform` into your prompt and hit `TAB` to see available completion options |
||||
@ -0,0 +1,161 @@ |
||||
#compdef terraform |
||||
|
||||
local -a _terraform_cmds |
||||
_terraform_cmds=( |
||||
'apply:Builds or changes infrastructure' |
||||
'destroy:Destroy Terraform-managed infrastructure' |
||||
'get:Download and install modules for the configuration' |
||||
'graph:Create a visual graph of Terraform resources' |
||||
'init:Initializes Terraform configuration from a module' |
||||
'output:Read an output from a state file' |
||||
'plan:Generate and show an execution plan' |
||||
'pull:Refreshes the local state copy from the remote server' |
||||
'push:Uploads the local state to the remote server' |
||||
'refresh:Update local state file against real resources' |
||||
'remote:Configures remote state management' |
||||
'taint:Manually forcing a destroy and recreate on the next plan/apply' |
||||
'show:Inspect Terraform state or plan' |
||||
'version:Prints the Terraform version' |
||||
) |
||||
|
||||
__apply() { |
||||
_arguments \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ |
||||
'-input=[(true) Ask for input for variables if not directly set.]' \ |
||||
'-no-color[If specified, output will not contain any color.]' \ |
||||
'-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ |
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ |
||||
'-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ |
||||
'-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ |
||||
'-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' |
||||
} |
||||
|
||||
__destroy() { |
||||
_arguments \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ |
||||
'-force[Do not ask for input for destroy confirmation.]' \ |
||||
'-no-color[If specified, output will not contain any color.]' \ |
||||
'-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ |
||||
'-state=[Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ |
||||
'-state-out=[Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ |
||||
'-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ |
||||
'-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' |
||||
} |
||||
|
||||
__get() { |
||||
_arguments \ |
||||
'-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' |
||||
} |
||||
|
||||
__graph() { |
||||
_arguments \ |
||||
'-module-depth=[(n) The maximum depth to expand modules. By default this is zero, which will not expand modules at all.]' |
||||
} |
||||
|
||||
__init() { |
||||
_arguments \ |
||||
'-address=[(url) URL of the remote storage server. Required for HTTP backend, optional for Atlas and Consul.]' \ |
||||
'-access-token=[(token) Authentication token for state storage server. Required for Atlas backend, optional for Consul.]' \ |
||||
'-backend=[(atlas) Specifies the type of remote backend. Must be one of Atlas, Consul, or HTTP. Defaults to atlas.]' \ |
||||
'-name=[(name) Name of the state file in the state storage server. Required for Atlas backend.]' \ |
||||
'-path=[(path) Path of the remote state in Consul. Required for the Consul backend.]' |
||||
} |
||||
|
||||
__output() { |
||||
_arguments \ |
||||
'-state=[(path) Path to the state file to read. Defaults to "terraform.tfstate".]' |
||||
} |
||||
|
||||
__plan() { |
||||
_arguments \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with" .backup" extension. Set to "-" to disable backup.]' \ |
||||
'-destroy[If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \ |
||||
'-input=[(true) Ask for input for variables if not directly set.]' \ |
||||
'-module-depth=[(n) Specifies the depth of modules to show in the output. This does not affect the plan itself, only the output shown. By default, this is zero. -1 will expand all.]' \ |
||||
'-no-color[If specified, output will not contain any color.]' \ |
||||
'-out=[(path) Write a plan file to the given path. This can be used as input to the "apply" command.]' \ |
||||
'-refresh=[(true) Update state prior to checking for differences.]' \ |
||||
'-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]' \ |
||||
'-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ |
||||
'-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' |
||||
} |
||||
|
||||
__push() { |
||||
_arguments \ |
||||
'-force[Forces the upload of the local state, ignoring any conflicts. This should be used carefully, as force pushing can cause remote state information to be lost.]' |
||||
} |
||||
|
||||
__refresh() { |
||||
_arguments \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ |
||||
'-input=[(true) Ask for input for variables if not directly set.]' \ |
||||
'-no-color[If specified, output will not contain any color.]' \ |
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ |
||||
'-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ |
||||
'-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ |
||||
'-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' |
||||
} |
||||
|
||||
__taint() { |
||||
_arguments \ |
||||
'-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ |
||||
'-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ |
||||
'-no-color[If specified, output will not contain any color.]' \ |
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ |
||||
'-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]' |
||||
} |
||||
|
||||
__remote() { |
||||
_arguments \ |
||||
'-address=[(url) URL of the remote storage server. Required for HTTP backend, optional for Atlas and Consul.]' \ |
||||
'-access-token=[(token) Authentication token for state storage server. Required for Atlas backend, optional for Consul.]' \ |
||||
'-backend=[(atlas) Specifies the type of remote backend. Must be one of Atlas, Consul, or HTTP. Defaults to atlas.]' \ |
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ |
||||
'-disable[Disables remote state management and migrates the state to the -state path.]' \ |
||||
'-name=[(name) Name of the state file in the state storage server. Required for Atlas backend.]' \ |
||||
'-path=[(path) Path of the remote state in Consul. Required for the Consul backend.]' \ |
||||
'-pull=[(true) Controls if the remote state is pulled before disabling. This defaults to true to ensure the latest state is cached before disabling.]' \ |
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' |
||||
} |
||||
|
||||
__show() { |
||||
_arguments \ |
||||
'-module-depth=[(n) The maximum depth to expand modules. By default this is zero, which will not expand modules at all.]' \ |
||||
'-no-color[If specified, output will not contain any color.]' |
||||
} |
||||
|
||||
_arguments '*:: :->command' |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands "terraform command" _terraform_cmds |
||||
return |
||||
fi |
||||
|
||||
local -a _command_args |
||||
case "$words[1]" in |
||||
apply) |
||||
__apply ;; |
||||
destroy) |
||||
__destroy ;; |
||||
get) |
||||
__get ;; |
||||
graph) |
||||
__graph ;; |
||||
init) |
||||
__init ;; |
||||
output) |
||||
__output ;; |
||||
plan) |
||||
__plan ;; |
||||
push) |
||||
__push ;; |
||||
refresh) |
||||
__refresh ;; |
||||
remote) |
||||
__remote ;; |
||||
show) |
||||
__show ;; |
||||
taint) |
||||
__taint ;; |
||||
esac |
||||
Loading…
Reference in new issue