package main

import (
	"fmt"
	"os"
	"text/template"
)

// unitSystemd adalah templat berkas unit systemd untuk layanan sapa.
const unitSystemd = `[Unit]
Description={{ .Deskripsi }}
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User={{ .Pengguna }}
WorkingDirectory={{ .Direktori }}
ExecStart={{ .Direktori }}/sapa-server
Restart=always
RestartSec=2
Environment=APP_PORT=8080
EnvironmentFile=-/etc/sapa/env
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
`

// konfigurasi menyimpan nilai yang diisikan ke templat unit.
type konfigurasi struct {
	Deskripsi string
	Pengguna  string
	Direktori string
}

func main() {
	kfg := konfigurasi{
		Deskripsi: "Layanan API sapa",
		Pengguna:  "sapa",
		Direktori: "/opt/sapa",
	}
	tmpl := template.Must(template.New("unit").Parse(unitSystemd))
	if err := tmpl.Execute(os.Stdout, kfg); err != nil {
		fmt.Println("gagal mengeksekusi templat:", err)
		os.Exit(1)
	}
}
