@@ -226,22 +226,31 @@ func fetchDigest(repo, chart, version, token string) (string, error) {
226226}
227227
228228func getOCIStrictVersion (repo , chart , version string ) (string , error ) {
229- token , err := authorizeOCITags (repo , chart )
229+ allTags , err := GetOCIChartTags (repo , chart )
230230 if err != nil {
231231 return "" , err
232232 }
233233
234+ return resolveSemver (version , allTags )
235+ }
236+
237+ func GetOCIChartTags (repo , chart string ) ([]string , error ) {
238+ token , err := authorizeOCITags (repo , chart )
239+ if err != nil {
240+ return nil , err
241+ }
242+
234243 tURL , err := tagsURL (repo , chart )
235244 if err != nil {
236- return "" , err
245+ return nil , err
237246 }
238247
239248 client := & http.Client {}
240249 var allTags []string
241250 for {
242251 req , err := http .NewRequest (http .MethodGet , tURL .String (), nil )
243252 if err != nil {
244- return "" , err
253+ return nil , err
245254 }
246255
247256 req .Header .Set ("User-Agent" , "Helm/3.13.3" )
@@ -251,21 +260,21 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
251260
252261 resp , err := client .Do (req )
253262 if err != nil {
254- return "" , err
263+ return nil , err
255264 }
256265 defer resp .Body .Close ()
257266
258267 responseBody , err := ioutil .ReadAll (resp .Body )
259268 if err != nil {
260- return "" , err
269+ return nil , err
261270 }
262271
263272 var tagsResp struct {
264273 Tags []string `json:"tags"`
265274 }
266275
267276 if err := json .Unmarshal (responseBody , & tagsResp ); err != nil {
268- return "" , err
277+ return nil , err
269278 }
270279
271280 allTags = append (allTags , tagsResp .Tags ... )
@@ -278,7 +287,7 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
278287
279288 nextURL , err := parseNextLink (linkHeader )
280289 if err != nil {
281- return "" , err
290+ return nil , err
282291 }
283292
284293 if nextURL == "" {
@@ -287,11 +296,11 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
287296
288297 tURL , err = resolveRelativeURL (tURL , nextURL )
289298 if err != nil {
290- return "" , err
299+ return nil , err
291300 }
292301 }
293302
294- return resolveSemver ( version , allTags )
303+ return allTags , err
295304}
296305
297306func authorizeOCI (repo , chart , version string ) (string , error ) {
0 commit comments