Skip to content

Commit a7729d8

Browse files
author
Samuel Phan
committed
fix: filter out Artifactory version & sort versions
fix tfutils#400 tfutils#401
1 parent 1ccfddb commit a7729d8

File tree

2 files changed

+64
-4
lines changed

2 files changed

+64
-4
lines changed

README.md

+49-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ $ brew install tfenv
2727
```
2828

2929
Install via Arch User Repository (AUR)
30-
30+
3131
```console
3232
$ yay --sync tfenv
3333
```
@@ -220,6 +220,54 @@ functionality will be restored.
220220
$ TFENV_REVERSE_REMOTE=1 tfenv list-remote
221221
```
222222

223+
##### `TFENV_SORT_VERSIONS_REMOTE`
224+
225+
Integer (Default: 0)
226+
227+
When using a custom remote, such as Artifactory, instead of the Hashicorp servers,
228+
the list of terraform versions returned by the curl of the remote directory may be inverted
229+
and sorted alphabetically, and not in a version-aware sort.
230+
231+
For example, you will have something like this:
232+
233+
```
234+
1.0.0
235+
1.0.10
236+
1.0.11
237+
1.0.1
238+
1.0.2
239+
1.0.3
240+
1.0.4
241+
1.0.5
242+
1.0.6
243+
1.0.7
244+
1.0.8
245+
1.0.9
246+
```
247+
248+
instead of:
249+
250+
```
251+
1.0.0
252+
1.0.1
253+
1.0.2
254+
1.0.3
255+
1.0.4
256+
1.0.5
257+
1.0.6
258+
1.0.7
259+
1.0.8
260+
1.0.9
261+
1.0.10
262+
1.0.11
263+
```
264+
265+
To use `sort --version-sort` over all the list of versions, set this environment variable:
266+
267+
```console
268+
$ TFENV_SORT_VERSIONS_REMOTE=1 tfenv list-remote
269+
```
270+
223271
##### `TFENV_CONFIG_DIR`
224272

225273
Path (Default: `$TFENV_ROOT`)

libexec/tfenv-list-remote

+15-3
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,20 @@ 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+
# Remove Artifactory version
77+
remote_versions="$(grep -v -E "Artifactory/[0-9]+\.[0-9]+\.[0-9]+" <<< "${remote_versions}")"
78+
79+
# Grep the versions
80+
remote_versions="$(grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-(rc|beta|alpha|oci)-?[0-9]*)?" <<< "${remote_versions}" | uniq)"
81+
82+
# Sort versions
83+
if [[ "${TFENV_SORT_VERSIONS_REMOTE:-0}" -eq 1 ]]; then
84+
remote_versions="$(sort --version-sort <<< "${remote_versions}")"
85+
fi
86+
87+
# Reverse versions
7688
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;
89+
remote_versions="$(awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' <<< "${remote_versions}")"
8090
fi;
91+
92+
cat <<< "${remote_versions}"

0 commit comments

Comments
 (0)