File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 );
You can’t perform that action at this time.
0 commit comments