Skip to content

Commit 8247db3

Browse files
committed
Support reversed list of versions from remote
1 parent 3e5df37 commit 8247db3

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,21 @@ To install from a remote other than the default
192192
$ TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
193193
```
194194

195+
##### `TFENV_REVERSE_REMOTE`
196+
197+
Integer (Default: 0)
198+
199+
When using a custom remote, such as Artifactory, instead of the Hashicorp servers,
200+
the list of terraform versions returned by the curl of the remote directory may be inverted.
201+
In this case the `latest` functionality will not work as expected because it expects the
202+
versions to be listed in order of release date from newest to oldest. If your remote
203+
is instead providing a list that is oldes-first, set `TFENV_REVERSE_REMOTE=1` and
204+
functionality will be restored.
205+
206+
```console
207+
$ TFENV_REVERSE_REMOTE=1 tfenv list-remote
208+
```
209+
195210
##### `TFENV_CONFIG_DIR`
196211

197212
Path (Default: `$TFENV_ROOT`)

libexec/tfenv-list-remote

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ if [ -z "${TFENV_ROOT:-""}" ]; then
1818
local file_name;
1919

2020
while [ "${target_file}" != "" ]; do
21-
cd "$(dirname ${target_file})" || early_death "Failed to 'cd \$(dirname ${target_file})' while trying to determine TFENV_ROOT";
21+
cd "$(dirname "${target_file}")" || early_death "Failed to 'cd \$(dirname ${target_file})' while trying to determine TFENV_ROOT";
2222
file_name="$(basename "${target_file}")" || early_death "Failed to 'basename \"${target_file}\"' while trying to determine TFENV_ROOT";
2323
target_file="$(readlink "${file_name}")";
2424
done;
@@ -73,4 +73,8 @@ remote_versions="$(curlw -sSf "${TFENV_REMOTE}/terraform/")" \
7373

7474
#log 'debug' "Remote versions available: ${remote_versions}"; # Even in debug mode this is too verbose
7575

76-
grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-(rc|beta|alpha|oci)-?[0-9]*)?" <<<"${remote_versions}" | uniq;
76+
if [[ "${TFENV_REVERSE_REMOTE:-0}" -eq 1 ]]; then
77+
grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-(rc|beta|alpha|oci)-?[0-9]*)?" <<<"${remote_versions}" | uniq | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }';
78+
else
79+
grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-(rc|beta|alpha|oci)-?[0-9]*)?" <<<"${remote_versions}" | uniq;
80+
fi;

0 commit comments

Comments
 (0)