Set service path to services/name/provider.

This commit is contained in:
root 2025-03-04 20:59:47 -05:00
parent 63d53f5727
commit 44f3ab6f2f
8 changed files with 40 additions and 16 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.swp

48
main.go
View file

@ -4,6 +4,7 @@ import (
"fmt"
"os"
"os/exec"
"strings"
"text/template"
"github.com/hjson/hjson-go/v4"
@ -25,11 +26,14 @@ type NetworkingConfig struct {
type ServiceConfig struct {
Enable string
Provider string
Packages []string
Src string
Ports []string
Volumes []string
Provider string
Packages []string
ConfigFiles []string
}
func main() {
@ -50,23 +54,19 @@ func main() {
// Parse services
for name, service := range config.Services {
var b strings.Builder
var s ServiceConfig
fmt.Printf("Service: %s\n", name)
// Read service config file
c, err := os.ReadFile("services/" + name + ".json")
if service.Provider == "" { service.Provider = "system" }
fmt.Fprintf(&b, "services/%s/%s.json", name, service.Provider)
c, err := os.ReadFile(b.String())
if err != nil {
fmt.Println("Unknown service: ", err)
return
}
// Read service template file
t, err := os.ReadFile("services/" + name + ".template")
if err != nil {
fmt.Println("No template for service: ", err)
return
}
// Parse service config
err = hjson.Unmarshal(c, &s)
if err != nil {
@ -77,12 +77,30 @@ func main() {
config.Services[name] = s
fmt.Printf(" %v\n", s)
tmpl, err := template.New(name).Parse(string(t))
if err != nil {
fmt.Println(err)
return
// Add service packages to the global list
config.System.Packages = append(config.System.Packages, s.Packages...)
// Generate a config file
for _, f := range s.ConfigFiles {
var b strings.Builder
f := strings.Split(f, ":")
// Read service template file
fmt.Fprintf(&b, "services/%s/%s", name, f[0])
t, err := os.ReadFile(b.String())
if err != nil {
fmt.Println("No template for service: ", err)
return
}
tmpl, err := template.New(name).Parse(string(t))
if err != nil {
fmt.Println(err)
return
}
fmt.Printf(" Installing %s to %s\n", f[0], f[1])
err = tmpl.Execute(os.Stdout, s)
}
err = tmpl.Execute(os.Stdout, s)
}
// Parse package list

View file

@ -1,6 +1,11 @@
{
enable: "true",
ports: [ "22" ],
provider: "system",
packages: [ "openssh-server" ],
ports: [ "22" ],
configFiles: [
"sshd.template:/etc/ssh/sshd_config",
]
}