aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2026-02-02 23:11:46 +0700
committerShulhan <ms@kilabit.info>2026-02-04 04:46:49 +0700
commit4040e757445faee58544bf65bc5fa65458b56f9d (patch)
treef970e8717cfdf60afbb4d19127ef8693cbda83d0 /internal
parente7e5f54ce3175c6c8ba326c0cc97a13cc9d8fe49 (diff)
downloadgorankusu-dev.tar.xz
cmd/gorankusu: implement socket based activation with systemdHEADmaindev
The internal/cmd/gorankusu now can run using systemd.socket(5).
Diffstat (limited to 'internal')
-rw-r--r--internal/cmd/gorankusu/main.go25
1 files changed, 22 insertions, 3 deletions
diff --git a/internal/cmd/gorankusu/main.go b/internal/cmd/gorankusu/main.go
index 1ede9d4..a55a518 100644
--- a/internal/cmd/gorankusu/main.go
+++ b/internal/cmd/gorankusu/main.go
@@ -7,6 +7,7 @@ package main
import (
"flag"
"log"
+ "net"
"os"
"os/signal"
"path/filepath"
@@ -17,6 +18,7 @@ import (
"git.sr.ht/~shulhan/pakakeh.go/lib/memfs"
"git.sr.ht/~shulhan/pakakeh.go/lib/mlog"
"git.sr.ht/~shulhan/pakakeh.go/lib/os/exec"
+ "git.sr.ht/~shulhan/pakakeh.go/lib/systemd"
"git.sr.ht/~shulhan/pakakeh.go/lib/watchfs/v2"
"git.sr.ht/~shulhan/ciigo"
@@ -54,11 +56,28 @@ func main() {
}
var (
- ex *gorankusu.Example
- err error
+ listener net.Listener
+ ex *gorankusu.Example
+ err error
)
- ex, err = gorankusu.NewExample(listenAddress, isDev)
+ listeners, err := systemd.Listeners(true)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if len(listeners) > 1 {
+ log.Fatal(`too many listeners received for activation`)
+ }
+ if len(listeners) == 1 {
+ listener = listeners[0]
+ gotAddr := listener.Addr().String()
+ if gotAddr != listenAddress {
+ log.Fatalf(`invalid Listener address, got %s, want %s`,
+ gotAddr, listenAddress)
+ }
+ }
+
+ ex, err = gorankusu.NewExample(listener, listenAddress, isDev)
if err != nil {
mlog.Fatalf(`%s`, err)
}