73 lines
1.5 KiB
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
|
|
}
|
|
}
|