summaryrefslogtreecommitdiff
path: root/plugins/opentofu/opentofu.plugin.zsh
diff options
context:
space:
mode:
authorchenzj <tibazq@gmail.com>2024-07-14 01:31:32 +0800
committerGitHub <noreply@github.com>2024-07-13 19:31:32 +0200
commitfd8f72b27614d48ec06421fb80aff2eb10674a69 (patch)
treebdcf6957212499abab662b67db026e6e15a82d22 /plugins/opentofu/opentofu.plugin.zsh
parent0b27b15d0b08645bd995e13b8d69fcbe2ef7e8eb (diff)
downloadzsh-fd8f72b27614d48ec06421fb80aff2eb10674a69.tar.gz
zsh-fd8f72b27614d48ec06421fb80aff2eb10674a69.tar.bz2
zsh-fd8f72b27614d48ec06421fb80aff2eb10674a69.zip
feat(opentofu): add plugin for OpenTofu (#12285)
- Adds aliases - Sets up autocompletion - Adds promp functions to show workspace and `tofu` version Co-authored-by: Marc Cornellà <marc@mcornella.com>
Diffstat (limited to 'plugins/opentofu/opentofu.plugin.zsh')
-rw-r--r--plugins/opentofu/opentofu.plugin.zsh43
1 files changed, 43 insertions, 0 deletions
diff --git a/plugins/opentofu/opentofu.plugin.zsh b/plugins/opentofu/opentofu.plugin.zsh
new file mode 100644
index 000000000..c6844c84a
--- /dev/null
+++ b/plugins/opentofu/opentofu.plugin.zsh
@@ -0,0 +1,43 @@
+# set up the tofu completion (compatible for zsh)
+autoload -Uz bashcompinit && bashcompinit
+complete -C tofu tofu
+
+# tofu workspace prompt function
+function tofu_prompt_info() {
+ # only show the workspace name if we're in an opentofu project
+ # i.e. if a .terraform directory exists within the hierarchy
+ local dir="$PWD"
+ while [[ ! -d "${dir}/.terraform" ]]; do
+ [[ "$dir" != / ]] || return 0 # stop at the root directory
+ dir="${dir:h}" # get the parent directory
+ done
+
+ # workspace might be different than the .terraform/environment file
+ # for example, if set with the TF_WORKSPACE environment variable
+ local workspace="$(tofu workspace show)"
+ # make sure to escape % signs in the workspace name to prevent command injection
+ echo "${ZSH_THEME_TOFU_PROMPT_PREFIX-[}${workspace:gs/%/%%}${ZSH_THEME_TOFU_PROMPT_SUFFIX-]}"
+}
+
+# tofu version prompt function
+function tofu_version_prompt_info() {
+ # get the output of `tofu --version` in a single line, and get the second word after splitting by a space
+ local tofu_version=${${(s: :)$(tofu --version)}[2]}
+ # make sure to escape % signs in the version string to prevent command injection
+ echo "${ZSH_THEME_TOFU_VERSION_PROMPT_PREFIX-[}${tofu_version:gs/%/%%}${ZSH_THEME_TOFU_VERSION_PROMPT_SUFFIX-]}"
+}
+
+alias tt='tofu'
+alias tta='tofu apply'
+alias ttc='tofu console'
+alias ttd='tofu destroy'
+alias ttf='tofu fmt'
+alias tti='tofu init'
+alias tto='tofu output'
+alias ttp='tofu plan'
+alias ttv='tofu validate'
+alias tts='tofu state'
+alias ttsh='tofu show'
+alias ttr='tofu refresh'
+alias ttt='tofu test'
+alias ttws='tofu workspace'