Skip to content

Commit d87ba91

Browse files
authored
Merge pull request #7 from maxatome/test
Fix specific version
2 parents 1e131c3 + 336e34c commit d87ba91

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

install-go.pl

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,37 +119,45 @@ sub resolve_target
119119
my($vreg, $last_minor);
120120
if ($target =~ /^\d+\.\d+(?:\.\d+)?\z/a)
121121
{
122-
$vreg = quotemeta $target;
122+
# exact match expected
123123
}
124124
elsif ($target =~ /^(\d+\.\d+)\.x\z/a)
125125
{
126126
$target = $1;
127+
127128
$vreg = quotemeta($target) . '(?:\.([0-9]+))?';
129+
$vreg = qr/^go$vreg\z/;
130+
128131
$last_minor = -1;
129132
}
130133
else
131134
{
132135
die "Bad target $target, should be 1.12 or 1.12.1 or 1.12.x\n"
133136
}
134-
$vreg = qr/^go$vreg\z/;
135137

136138
my $r = http_get('https://go.googlesource.com/go/+refs/tags?format=JSON');
137139
$r->{success} or die "Cannot retrieve tags: $r->{status} $r->{reason}\n$r->{content}\n";
138140

141+
my $versions = decode_json($r->{content} =~ s/^[^{]+//r);
142+
139143
my $found;
140-
foreach (keys %{decode_json($r->{content} =~ s/^[^{]+//r)})
144+
if (defined $vreg)
141145
{
142-
if (/$vreg/)
146+
foreach (keys %$versions)
143147
{
144-
$last_minor // return ($target, undef); # OK found
145-
146-
if ($last_minor < ($1 // 0))
148+
if (/$vreg/ and $last_minor < ($1 // 0))
147149
{
148150
$last_minor = $1;
149151
$found = 1;
150152
}
151153
}
152154
}
155+
else
156+
{
157+
# exact match expected
158+
$found = exists $versions->{"go$target"};
159+
}
160+
153161
$found or die "Version $target not found\n";
154162

155163
return ($target, $last_minor);

0 commit comments

Comments
 (0)