🌱 Read os-release attributes using kairos prefix (#12)

* Read os-release attributes using kairos prefix

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Refactor other functions to use OSRelease

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Misc refactoring

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
This commit is contained in:
Mauro Morales
2023-04-14 11:40:28 +02:00
committed by GitHub
parent 77ed7ba298
commit 0c9d2bd9e6
2 changed files with 29 additions and 12 deletions

View File

@@ -154,10 +154,8 @@ func detectSystem(r *Runtime) {
func detectKairos(r *Runtime) { func detectKairos(r *Runtime) {
k := &Kairos{} k := &Kairos{}
flavor, err := utils.OSRelease("FLAVOR") k.Flavor = utils.Flavor()
if err == nil {
k.Flavor = flavor
}
v, err := utils.OSRelease("VERSION") v, err := utils.OSRelease("VERSION")
if err == nil { if err == nil {
k.Version = v k.Version = v

View File

@@ -55,10 +55,15 @@ func OSRelease(key string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
v, exists := release[key] kairosKey := "KAIROS_" + key
v, exists := release[kairosKey]
if !exists {
// We try with the old naming without the prefix in case the key wasn't found
v, exists = release[key]
if !exists { if !exists {
return "", fmt.Errorf("key not found") return "", fmt.Errorf("key not found")
} }
}
return v, nil return v, nil
} }
@@ -96,14 +101,26 @@ func WriteEnv(envFile string, config map[string]string) error {
} }
func Flavor() string { func Flavor() string {
release, _ := godotenv.Read("/etc/os-release") v, err := OSRelease("FLAVOR")
v := release["NAME"] if err != nil {
return ""
}
return v
}
func Name() string {
v, err := OSRelease("NAME")
if err != nil {
return ""
}
return strings.ReplaceAll(v, "kairos-", "") return strings.ReplaceAll(v, "kairos-", "")
} }
func IsOpenRCBased() bool { func IsOpenRCBased() bool {
f := Flavor() n := Name()
return strings.Contains(f, "alpine") return strings.Contains(n, "alpine")
} }
func ShellSTDIN(s, c string) (string, error) { func ShellSTDIN(s, c string) (string, error) {
@@ -180,8 +197,10 @@ func PowerOFF() {
} }
func Version() string { func Version() string {
release, _ := godotenv.Read("/etc/os-release") v, err := OSRelease("VERSION")
v := release["VERSION"] if err != nil {
return ""
}
v = strings.ReplaceAll(v, "+k3s1-Kairos", "-") v = strings.ReplaceAll(v, "+k3s1-Kairos", "-")
v = strings.ReplaceAll(v, "+k3s-Kairos", "-") v = strings.ReplaceAll(v, "+k3s-Kairos", "-")
return strings.ReplaceAll(v, "Kairos", "") return strings.ReplaceAll(v, "Kairos", "")