cmd/stepd: Write PID file

Closes #9
This commit is contained in:
Sasha Koshka 2024-12-08 19:45:14 -05:00
parent deb3d7e935
commit d06b03bbfe

View File

@ -17,19 +17,26 @@ import "git.tebibyte.media/sashakoshka/go-service/routines"
func main () {
// parse command line arguments
flagPidFile := cli.NewInputFlag (
'p', "pid-file",
"Write the PID to the specified file",
"", cli.ValString)
flagAddress := cli.NewInputFlag (
'a', "address",
"The address to host the server on",
":8080", cli.ValString)
// TODO have in conf, override here
flagErrorDocument := cli.NewInputFlag (
0, "error-document",
"The document to use for displaying errors",
"", cli.ValString)
// TODO have in conf, override here
flagDirectories := cli.NewFlag (
'd', "directories",
"Serve the contents of directories")
cmd := cli.New (
"Run an HTTP server that automaticaly executes STEP files",
flagPidFile,
flagAddress,
flagErrorDocument,
flagDirectories,
@ -75,8 +82,18 @@ func main () {
log.Println(`.// initialized.`)
// be a daemon
ctx, done := context.WithCancel(context.Background())
daemon.OnSigint(done)
pidfile := daemon.PidFile(flagPidFile.Value)
if !pidfile.Empty() {
err := pidfile.Start()
if err != nil { log.Println("!!! could not write pid:", err) }
defer func () {
err := pidfile.Close()
if err != nil { log.Println("!!! could not delete pidfile:", err) }
} ()
}
log.Printf("(i) listening on %s\n", httpServer.Addr)
if err := manager.Run(ctx); err != nil && !errors.Is(err, context.Canceled) {