mirror of
https://github.com/rancher/rke.git
synced 2025-04-28 11:36:27 +00:00
72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/coreos/go-semver/semver"
|
|
"github.com/rancher/rke/metadata"
|
|
)
|
|
|
|
const (
|
|
defaultDevURL = "https://releases.rancher.com/kontainer-driver-metadata/dev-v2.10/data.json"
|
|
defaultReleaseURL = "https://releases.rancher.com/kontainer-driver-metadata/release-v2.10/data.json"
|
|
dataFile = "data/data.json"
|
|
)
|
|
|
|
// Codegen fetch data.json from defaultURL or defaultReleaseURL and generates bindata
|
|
func main() {
|
|
u := getURL()
|
|
fmt.Printf("Reading data from %s \n", u)
|
|
data, err := http.Get(u)
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to fetch data.json from kontainer-driver-metadata repository"))
|
|
}
|
|
defer data.Body.Close()
|
|
|
|
b, err := io.ReadAll(data.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
var jsonData map[string]interface{}
|
|
err = json.Unmarshal(b, &jsonData)
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to parse JSON: %v", err))
|
|
}
|
|
// rke doesn't need info about rke2 and k3s versions
|
|
delete(jsonData, "rke2")
|
|
delete(jsonData, "k3s")
|
|
|
|
b, err = json.Marshal(jsonData)
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to marshal json data: %v", err))
|
|
}
|
|
|
|
fmt.Println("Writing data")
|
|
if err := os.WriteFile(dataFile, b, 0755); err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
func getURL() string {
|
|
u := os.Getenv(metadata.RancherMetadataURLEnv)
|
|
if u == "" {
|
|
u = defaultDevURL
|
|
tag := os.Getenv("TAG")
|
|
if strings.HasPrefix(tag, "v") {
|
|
tag = tag[1:]
|
|
}
|
|
if v, err := semver.NewVersion(tag); err == nil {
|
|
if v.PreRelease == "" && v.String() != "" {
|
|
u = defaultReleaseURL
|
|
}
|
|
}
|
|
}
|
|
return u
|
|
}
|