package main import ( "fmt" "os" "os/exec" "github.com/bitly/go-simplejson" ) func main() { var err error fd, err := os.Open("goolinux.json") defer fd.Close() if err != nil { fmt.Println(err) return } userJSON, err := simplejson.NewFromReader(fd) 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) } } // Parse package list packages := userJSON.Get("system").Get("packages").MustStringArray() fmt.Println(packages) // Add extra packages needed // ... // Install packages var installString = []string{"add", "--no-interactive", "--no-progress"} var testArgs, args []string var out []byte testArgs = append(installString, "-s") testArgs = append(testArgs, packages...) out, err = exec.Command("/sbin/apk", testArgs...).CombinedOutput() if err != nil { fmt.Println("===") fmt.Println(err) fmt.Println(string(out)) fmt.Println("===") fmt.Println("Error preparing packages") return } args = append(installString, packages...) out, err = exec.Command("/sbin/apk", args...).CombinedOutput() if err != nil { fmt.Println("===") fmt.Println(err) fmt.Println(string(out)) fmt.Println("===") fmt.Println("Error installing packages") return } }