Move some code under conditionals for better error handling.
This commit is contained in:
parent
a5573f7097
commit
e8b30a1b0f
25
main.go
25
main.go
|
@ -45,9 +45,9 @@ type ServiceConfig struct {
|
||||||
func main() {
|
func main() {
|
||||||
var err error
|
var err error
|
||||||
var config Config
|
var config Config
|
||||||
var systemConfig Config
|
|
||||||
|
|
||||||
// Read user config file
|
// Read user config file
|
||||||
|
{
|
||||||
file, err := os.ReadFile("goolinux.json")
|
file, err := os.ReadFile("goolinux.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Cannot read user config file")
|
fmt.Println("Cannot read user config file")
|
||||||
|
@ -60,11 +60,14 @@ func main() {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Read system "base" config file if it exists
|
// Read system "base" config file if it exists
|
||||||
if config.System.Base != "" {
|
if config.System.Base != "" {
|
||||||
|
var systemConfig Config
|
||||||
path := "services/" + config.System.Base + ".json"
|
path := "services/" + config.System.Base + ".json"
|
||||||
file, err = os.ReadFile(path)
|
|
||||||
|
file, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Cannot read system base config file")
|
fmt.Println("Cannot read system base config file")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
@ -85,17 +88,24 @@ func main() {
|
||||||
for name, service := range config.Services {
|
for name, service := range config.Services {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
var s ServiceConfig
|
var s ServiceConfig
|
||||||
fmt.Printf("Service: %s\n", name)
|
|
||||||
|
// If no provider specified, try system
|
||||||
|
if service.Provider == "" { service.Provider = "system" }
|
||||||
|
|
||||||
// Read service config file
|
// Read service config file
|
||||||
if service.Provider == "" { service.Provider = "system" }
|
|
||||||
fmt.Fprintf(&b, "services/%s/%s.json", name, service.Provider)
|
fmt.Fprintf(&b, "services/%s/%s.json", name, service.Provider)
|
||||||
c, err := os.ReadFile(b.String())
|
c, err := os.ReadFile(b.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Unknown service: ", err)
|
switch err := err.(type) {
|
||||||
|
case *os.PathError:
|
||||||
|
// No system config to merge
|
||||||
|
// Rely solely on the user config
|
||||||
|
fmt.Println(" Warning: No system config for service" + name)
|
||||||
|
default:
|
||||||
|
fmt.Println("Error reading service config: ", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
// Parse service config
|
// Parse service config
|
||||||
err = hjson.Unmarshal(c, &s)
|
err = hjson.Unmarshal(c, &s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -106,10 +116,9 @@ func main() {
|
||||||
mergo.Merge(&s, service, mergo.WithOverride)
|
mergo.Merge(&s, service, mergo.WithOverride)
|
||||||
config.Services[name] = s
|
config.Services[name] = s
|
||||||
|
|
||||||
fmt.Printf(" %v\n", s)
|
|
||||||
|
|
||||||
// Add service packages to the global list
|
// Add service packages to the global list
|
||||||
config.System.Packages = append(config.System.Packages, s.Packages...)
|
config.System.Packages = append(config.System.Packages, s.Packages...)
|
||||||
|
}
|
||||||
|
|
||||||
// Generate a config file
|
// Generate a config file
|
||||||
for _, f := range s.ConfigFiles {
|
for _, f := range s.ConfigFiles {
|
||||||
|
|
Loading…
Reference in a new issue