From e1322051e1f09bac536417d25f0fdfc276603443 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 2 Mar 2025 19:57:39 -0500 Subject: [PATCH] Swap to unmarshalling the JSON. --- main.go | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/main.go b/main.go index 3978e8b..50ee892 100644 --- a/main.go +++ b/main.go @@ -5,40 +5,53 @@ import ( "os" "os/exec" - "github.com/bitly/go-simplejson" + "github.com/hjson/hjson-go/v4" ) +type Config struct { + System SystemConfig + Networking NetworkingConfig + Services map[string]ServiceConfig +} + +type SystemConfig struct { + Packages []string +} + +type NetworkingConfig struct { +} + +type ServiceConfig struct { + Enable string + Provider string + Src string + Ports []string + Volumes []string +} + func main() { var err error + var config Config - fd, err := os.Open("goolinux.json") - defer fd.Close() + file, err := os.ReadFile("goolinux.json") if err != nil { fmt.Println(err) return } - userJSON, err := simplejson.NewFromReader(fd) + err = hjson.Unmarshal(file, &config) if err != nil { fmt.Println(err) return } // Parse services - services := userJSON.Get("services").MustMap() - for service, _ := range services { - s := userJSON.Get("services").Get(service).MustMap() - if s["enable"] == "false" { continue } - - fmt.Printf("Service: %s\n", service) - for key, value := range s { - fmt.Printf(" %s: %s\n", key, value) - } + for name, service := range config.Services { + fmt.Printf("Service: %s\n", name) + fmt.Printf(" %v\n", service) } // Parse package list - packages := userJSON.Get("system").Get("packages").MustStringArray() - fmt.Println(packages) // Add extra packages needed // ... @@ -48,7 +61,7 @@ func main() { var testArgs, args []string var out []byte testArgs = append(installString, "-s") - testArgs = append(testArgs, packages...) + testArgs = append(testArgs, config.System.Packages...) out, err = exec.Command("/sbin/apk", testArgs...).CombinedOutput() if err != nil { fmt.Println("===") @@ -59,7 +72,7 @@ func main() { return } - args = append(installString, packages...) + args = append(installString, config.System.Packages...) out, err = exec.Command("/sbin/apk", args...).CombinedOutput() if err != nil { fmt.Println("===")