{
// system path
viper.SetConfigFile(CnfPathSystem)
err := viper.ReadInConfig()
if err != nil {
fmt.Fprintln(os.Stderr, "could not read config file in /usr", err)
}
// admin path
viper.SetConfigFile(CnfPathAdmin)
err = viper.MergeInConfig()
if err != nil {
fmt.Fprintln(os.Stderr, "could not read config file in /usr", err)
}
// dev paths
viper.SetConfigFile(CnfPathDev1)
viper.MergeInConfig()
viper.SetConfigFile(CnfPathDev2)
viper.MergeInConfig()
// VanillaOS specific defaults for backwards compatibility
viper.SetDefault("updateInitramfsCmd", "lpkg --unlock && /usr/sbin/update-initramfs -u && lpkg --lock")
viper.SetDefault("updateGrubCmd", "/usr/sbin/grub-mkconfig -o '%s'")
Cnf = &Config{
// Common
MaxParallelDownloads: viper.GetUint("maxParallelDownloads"),
// Registry
Registry: viper.GetString("registry"),
RegistryAPIVersion: viper.GetString("registryAPIVersion"),
RegistryService: viper.GetString("registryService"),
Name: viper.GetString("name"),
Tag: viper.GetString("tag"),
// Package manager
IPkgMngPre: viper.GetString("iPkgMngPre"),
IPkgMngPost: viper.GetString("iPkgMngPost"),
IPkgMngAdd: viper.GetString("iPkgMngAdd"),
IPkgMngRm: viper.GetString("iPkgMngRm"),
IPkgMngApi: viper.GetString("iPkgMngApi"),
IPkgMngStatus: viper.GetInt("iPkgMngStatus"),
// Boot configuration commands
UpdateInitramfsCmd: viper.GetString("updateInitramfsCmd"),
UpdateGrubCmd: viper.GetString("updateGrubCmd"),
// Package diff API (Differ)
DifferURL: viper.GetString("differURL"),
// Partitions
PartLabelVar: viper.GetString("partLabelVar"),
PartLabelA: viper.GetString("partLabelA"),
PartLabelB: viper.GetString("partLabelB"),
PartLabelBoot: viper.GetString("partLabelBoot"),
PartLabelEfi: viper.GetString("partLabelEfi"),
PartCryptVar: viper.GetString("PartCryptVar"),
// Structure
ThinProvisioning: viper.GetBool("thinProvisioning"),
ThinInitVolume: viper.GetString("thinInitVolume"),
}
}
{
return fmt.Sprintf("%s/%s", Cnf.Registry, Cnf.Name)
}
{
return fmt.Sprintf("%s:%s", GetFullImageName(), Cnf.Tag)
}
WriteConfigToFile writes the current configuration to a file
{
jsonOutput, err := json.MarshalIndent(Cnf, "", " ")
if err != nil {
return err
}
outputFile, err := os.OpenFile(file, os.O_WRONLY|os.O_TRUNC, 0o644)
if err != nil {
return err
}
_, err = outputFile.Write(jsonOutput)
return err
}
import "encoding/json"
import "fmt"
import "os"
import "path/filepath"
import "github.com/spf13/viper"