diff --git a/CHANGELOG.md b/CHANGELOG.md index 81d12d5..a61c6f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Fix to not use 0.12.22 during testing which reports its version incorrectly * Introduce tfenv-resolve-version to deduplicate translation of requested version into actual version * README.md updates + * Fix #176 - New parameter TFENV_AUTO_INSTALL to handle the version specified by `use` or a `.terraform-version` file not being installed ## 1.0.2 (October 29, 2019) diff --git a/README.md b/README.md index 7cf4e46..157008f 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,16 @@ Specify architecture. Architecture other than the default amd64 can be specified TFENV_ARCH=arm tfenv install 0.7.9 ``` +##### `TFENV_AUTO_INSTALL` + +String (Default: true) + +Should tfenv automatically install terraform if the version specified by defaults or a .terraform-version file is not currently installed. + +```console +TFENV_AUTO_INSTALL=false terraform plan +``` + ##### `TFENV_CURL_OUTPUT` Integer (Default: 2) diff --git a/libexec/tfenv-exec b/libexec/tfenv-exec index a1359dc..4195fd2 100755 --- a/libexec/tfenv-exec +++ b/libexec/tfenv-exec @@ -83,6 +83,15 @@ TFENV_VERSION="$(tfenv-version-name)" \ }; export TFENV_VERSION; +if [ ! -d "${TFENV_ROOT}/versions/${TFENV_VERSION}" ]; then + if [ "${TFENV_AUTO_INSTALL:-true}" == "true" ]; then + log 'info' "version '${TFENV_VERSION}' is not installed (set by $(tfenv-version-file)). Installing now as TFENV_AUTO_INSTALL==true"; + tfenv-install; + else + log 'error' "version '${TFENV_VERSION}' was requested, but not installed and TFENV_AUTO_INSTALL is not 'true'"; + fi; +fi; + TF_BIN_PATH="${TFENV_ROOT}/versions/${TFENV_VERSION}/terraform"; export PATH="${TF_BIN_PATH}:${PATH}"; log 'debug' "TF_BIN_PATH added to PATH: ${TF_BIN_PATH}"; diff --git a/libexec/tfenv-version-name b/libexec/tfenv-version-name index dbd71fd..d9bbe5d 100755 --- a/libexec/tfenv-version-name +++ b/libexec/tfenv-version-name @@ -100,8 +100,9 @@ fi; [ -z "${TFENV_VERSION}" ] \ && log 'error' "Version could not be resolved (set by ${TFENV_VERSION_FILE} or tfenv use )"; -if [ -d "${TFENV_ROOT}/versions/${TFENV_VERSION}" ]; then - echo "${TFENV_VERSION}"; -else - log 'warn' "version '${TFENV_VERSION}' is not installed (set by ${TFENV_VERSION_FILE})"; +if [ ! -d "${TFENV_ROOT}/versions/${TFENV_VERSION}" ]; then + log 'debug' "version '${TFENV_VERSION}' is not installed (set by ${TFENV_VERSION_FILE})"; fi; + +echo "${TFENV_VERSION}"; +