goo/main.go

73 lines
1.5 KiB
Go

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
}
}