2024-07-14 01:31:32 +08:00
|
|
|
# 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'
|
2024-10-02 16:49:31 +08:00
|
|
|
alias ttaa='tofu apply -auto-approve'
|
2024-07-14 01:31:32 +08:00
|
|
|
alias ttc='tofu console'
|
|
|
|
alias ttd='tofu destroy'
|
|
|
|
alias ttf='tofu fmt'
|
2024-09-06 01:52:39 +08:00
|
|
|
alias ttfr='tofu fmt -recursive'
|
2024-07-14 01:31:32 +08:00
|
|
|
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'
|