mirror of
https://github.com/kairos-io/provider-kairos.git
synced 2025-08-15 22:23:10 +00:00
because all our versions are considered pre-releases in standard semantic versioning. E.g. v1.0.0-k3sv1.23.9-k3s1 this also has a "pre-release" part (everything after the `-`). Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
48 lines
899 B
Go
48 lines
899 B
Go
package provider
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
|
|
"github.com/google/go-containerregistry/pkg/crane"
|
|
"github.com/kairos-io/kairos/pkg/utils"
|
|
"github.com/mudler/go-pluggable"
|
|
"golang.org/x/mod/semver"
|
|
)
|
|
|
|
func eventError(err error) pluggable.EventResponse {
|
|
return pluggable.EventResponse{Error: err.Error()}
|
|
}
|
|
|
|
func ListVersions(e *pluggable.Event) pluggable.EventResponse {
|
|
registry, err := utils.OSRelease("IMAGE_REPO")
|
|
if err != nil {
|
|
return eventError(err)
|
|
}
|
|
tags, err := crane.ListTags(registry)
|
|
if err != nil {
|
|
return eventError(err)
|
|
}
|
|
|
|
displayTags := []string{}
|
|
|
|
for _, t := range tags {
|
|
if strings.Contains(t, "k3s") {
|
|
displayTags = append(displayTags, t)
|
|
}
|
|
}
|
|
|
|
semver.Sort(displayTags)
|
|
|
|
versions, err := json.Marshal(displayTags)
|
|
resp := &pluggable.EventResponse{
|
|
Data: string(versions),
|
|
}
|
|
|
|
if err != nil {
|
|
resp.Error = err.Error()
|
|
}
|
|
|
|
return *resp
|
|
}
|