Skip to content

Commit 7508248

Browse files
authored
Merge pull request #238 from tfutils/support-v-prefix
Strip v prefix from any requested version string
2 parents 1d6c853 + 6632474 commit 7508248

6 files changed

Lines changed: 40 additions & 18 deletions

File tree

libexec/tfenv-resolve-version

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ fi;
9999

100100
log 'debug' "Version Requested: ${version_requested}";
101101

102+
# Accept a v-prefixed version, but strip the v.
103+
if [[ "${version_requested}" =~ ^v.*$ ]]; then
104+
log 'debug' "Version Requested is prefixed with a v. Stripping the v."
105+
version_requested="${version_requested#v*}";
106+
fi;
107+
102108
if [[ "${version_requested}" =~ ^min-required$ ]]; then
103109
log 'info' 'Detecting minimum required version...';
104110
min_required="$(tfenv-min-required)" \

libexec/tfenv-use

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ fi
7777

7878
log debug "Resolving version with: tfenv-resolve-version ${requested_arg}";
7979
declare resolved="$(tfenv-resolve-version ${requested_arg})";
80+
log debug "Resolved to: ${resolved}";
8081

8182
declare version="${resolved%%\:*}";
8283
declare regex="${resolved##*\:}";

libexec/tfenv-version-name

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ if [[ "${TFENV_VERSION}" =~ ^latest.*$ ]]; then
105105

106106
else
107107
log 'debug' 'TFENV_VERSION does not use "latest" keyword';
108+
109+
# Accept a v-prefixed version, but strip the v.
110+
if [[ "${TFENV_VERSION}" =~ ^v.*$ ]]; then
111+
log 'debug' "Version Requested is prefixed with a v. Stripping the v."
112+
TFENV_VERSION="${TFENV_VERSION#v*}";
113+
fi;
108114
fi;
109115

110116
[ -z "${TFENV_VERSION}" ] \

test/test_install_and_use.sh

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ tests__desc=(
9494
'0.11.15-oci'
9595
'latest version matching regex'
9696
'specific version'
97+
'specific version with v prefix'
9798
);
9899

99100
tests__kv=(
@@ -105,17 +106,19 @@ tests__kv=(
105106
"$(tfenv list-remote | grep '^0\.11\.' | head -n 1),latest:^0.11."
106107
'0.11.15-oci,0.11.15-oci'
107108
'0.8.8,latest:^0.8'
108-
"0.7.13,0.7.13"
109+
'0.7.13,0.7.13'
110+
'0.14.6,v0.14.6'
109111
);
110112

111113
tests_count=${#tests__desc[@]};
112114

113-
declare desc kv k v;
115+
declare desc kv k v test_num;
114116

115-
for ((test_num=0; test_num<${tests_count}; ++test_num )) ; do
117+
for ((test_iter=0; test_iter<${tests_count}; ++test_iter )) ; do
116118
cleanup || log 'error' 'Cleanup failed?!';
117-
desc=${tests__desc[${test_num}]};
118-
kv="${tests__kv[${test_num}]}";
119+
test_num=$((test_iter + 1));
120+
desc=${tests__desc[${test_iter}]};
121+
kv="${tests__kv[${test_iter}]}";
119122
v="${kv%,*}";
120123
k="${kv##*,}";
121124
log 'info' "## Param Test ${test_num}/${tests_count}: ${desc} ( ${k} / ${v} )";
@@ -124,10 +127,11 @@ for ((test_num=0; test_num<${tests_count}; ++test_num )) ; do
124127
|| error_and_proceed "## Param Test ${test_num}/${tests_count}: ${desc} ( ${k} / ${v} ) failed";
125128
done;
126129

127-
for ((test_num=0; test_num<${tests_count}; ++test_num )) ; do
130+
for ((test_iter=0; test_iter<${tests_count}; ++test_iter )) ; do
128131
cleanup || log 'error' 'Cleanup failed?!';
129-
desc=${tests__desc[${test_num}]};
130-
kv="${tests__kv[${test_num}]}";
132+
test_num=$((test_iter + 1));
133+
desc=${tests__desc[${test_iter}]};
134+
kv="${tests__kv[${test_iter}]}";
131135
v="${kv%,*}";
132136
k="${kv##*,}";
133137
log 'info' "## ./.terraform-version Test ${test_num}/${tests_count}: ${desc} ( ${k} / ${v} )";
@@ -138,10 +142,11 @@ for ((test_num=0; test_num<${tests_count}; ++test_num )) ; do
138142
|| error_and_proceed "## ./.terraform-version Test ${test_num}/${tests_count}: ${desc} ( ${k} / ${v} ) failed";
139143
done;
140144

141-
for ((test_num=0; test_num<${tests_count}; ++test_num )) ; do
145+
for ((test_iter=0; test_iter<${tests_count}; ++test_iter )) ; do
142146
cleanup || log 'error' 'Cleanup failed?!';
143-
desc=${tests__desc[${test_num}]};
144-
kv="${tests__kv[${test_num}]}";
147+
test_num=$((test_iter + 1));
148+
desc=${tests__desc[${test_iter}]};
149+
kv="${tests__kv[${test_iter}]}";
145150
v="${kv%,*}";
146151
k="${kv##*,}";
147152
log 'info' "## TFENV_TERRAFORM_VERSION Test ${test_num}/${tests_count}: ${desc} ( ${k} / ${v} )";
@@ -201,15 +206,16 @@ neg_tests__desc=(
201206

202207
neg_tests__kv=(
203208
'9.9.9'
204-
"latest:word"
209+
'latest:word'
205210
);
206211

207212
neg_tests_count=${#neg_tests__desc[@]};
208213

209-
for ((test_num=0; test_num<${neg_tests_count}; ++test_num )) ; do
214+
for ((test_iter=0; test_iter<${neg_tests_count}; ++test_iter )) ; do
210215
cleanup || log 'error' 'Cleanup failed?!';
211-
desc=${neg_tests__desc[${test_num}]}
212-
k="${neg_tests__kv[${test_num}]}";
216+
test_num=$((test_iter + 1));
217+
desc=${neg_tests__desc[${test_iter}]}
218+
k="${neg_tests__kv[${test_iter}]}";
213219
expected_error_message="No versions matching '${k}' found in remote";
214220
log 'info' "## Invalid Version Test ${test_num}/${neg_tests_count}: ${desc} ( ${k} )";
215221
[ -z "$(tfenv install "${k}" 2>&1 | grep "${expected_error_message}")" ] \

test/test_list.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ declare -a errors=();
5353
log 'info' '### List local versions';
5454
cleanup || log 'error' "Cleanup failed?!";
5555

56-
for v in 0.7.2 0.7.13 0.9.1 0.9.2 0.9.11; do
56+
for v in 0.7.2 0.7.13 0.9.1 0.9.2 v0.9.11 0.14.6; do
5757
log 'info' "## Installing version ${v} to construct list";
5858
tfenv install "${v}" \
5959
&& log 'debug' "Install of version ${v} succeeded" \
@@ -65,12 +65,13 @@ tfenv list \
6565
&& log 'debug' "List succeeded with no default set" \
6666
|| error_and_proceed "List failed with no default set";
6767

68-
tfenv use 0.9.11;
68+
tfenv use 0.14.6;
6969

7070
log 'info' '## Comparing "tfenv list" with default set';
7171
result="$(tfenv list)";
7272
expected="$(cat << EOS
73-
* 0.9.11 (set by $(tfenv version-file))
73+
* 0.14.6 (set by $(tfenv version-file))
74+
0.9.11
7475
0.9.2
7576
0.9.1
7677
0.7.13

test/test_uninstall.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,15 @@ tests__keywords=(
6767
'0.11.15-oci'
6868
'latest'
6969
'latest:^0.8'
70+
'v0.14.6'
7071
);
7172

7273
tests__versions=(
7374
'0.9.1'
7475
'0.11.15-oci'
7576
"$(tfenv list-remote | head -n1)"
7677
"$(tfenv list-remote | grep -e "^0.8" | head -n1)"
78+
'0.14.6'
7779
);
7880

7981
tests_count=${#tests__keywords[@]};

0 commit comments

Comments
 (0)