From 0c9d2bd9e6ae0a312ed46b441f00d93b93b79a24 Mon Sep 17 00:00:00 2001 From: Mauro Morales Date: Fri, 14 Apr 2023 11:40:28 +0200 Subject: [PATCH] :seedling: Read os-release attributes using kairos prefix (#12) * Read os-release attributes using kairos prefix Signed-off-by: Mauro Morales * Refactor other functions to use OSRelease Signed-off-by: Mauro Morales * Misc refactoring Signed-off-by: Mauro Morales --------- Signed-off-by: Mauro Morales --- state/state.go | 6 ++---- utils/utils.go | 35 +++++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/state/state.go b/state/state.go index a58f931..2bd28f5 100644 --- a/state/state.go +++ b/state/state.go @@ -154,10 +154,8 @@ func detectSystem(r *Runtime) { func detectKairos(r *Runtime) { k := &Kairos{} - flavor, err := utils.OSRelease("FLAVOR") - if err == nil { - k.Flavor = flavor - } + k.Flavor = utils.Flavor() + v, err := utils.OSRelease("VERSION") if err == nil { k.Version = v diff --git a/utils/utils.go b/utils/utils.go index 5163d97..fbfe522 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -55,9 +55,14 @@ func OSRelease(key string) (string, error) { if err != nil { return "", err } - v, exists := release[key] + kairosKey := "KAIROS_" + key + v, exists := release[kairosKey] if !exists { - return "", fmt.Errorf("key not found") + // We try with the old naming without the prefix in case the key wasn't found + v, exists = release[key] + if !exists { + return "", fmt.Errorf("key not found") + } } return v, nil } @@ -96,14 +101,26 @@ func WriteEnv(envFile string, config map[string]string) error { } func Flavor() string { - release, _ := godotenv.Read("/etc/os-release") - v := release["NAME"] + v, err := OSRelease("FLAVOR") + if err != nil { + return "" + } + + return v +} + +func Name() string { + v, err := OSRelease("NAME") + if err != nil { + return "" + } + return strings.ReplaceAll(v, "kairos-", "") } func IsOpenRCBased() bool { - f := Flavor() - return strings.Contains(f, "alpine") + n := Name() + return strings.Contains(n, "alpine") } func ShellSTDIN(s, c string) (string, error) { @@ -180,8 +197,10 @@ func PowerOFF() { } func Version() string { - release, _ := godotenv.Read("/etc/os-release") - v := release["VERSION"] + v, err := OSRelease("VERSION") + if err != nil { + return "" + } v = strings.ReplaceAll(v, "+k3s1-Kairos", "-") v = strings.ReplaceAll(v, "+k3s-Kairos", "-") return strings.ReplaceAll(v, "Kairos", "")