Service instance roots, runtime file layout, project-root discovery, and known-instance registries for long-running local services.
From pkg.go.dev:
go get github.com/brandonkramer/svcrootsvc := &svcroot.Service{
EnvVar: "MYAPP_HOME",
DefaultDir: ".myapp",
RegistryFile: "sessions/known-instances.json", // optional
Layout: svcroot.Layout{
SessionsDir: "sessions",
SocketName: "rpc.sock",
LockName: "service.lock",
},
}
root, err := svc.Resolve()
h := svc.Open(root)
socket := h.Socket()
lock := h.Lock()
tasksDir := h.Join("tasks")
registry := h.RuntimeJoin("state.json")layout := &svcroot.DefaultLayout
socket := svcroot.Socket(root, layout)
lock := svcroot.Lock(root, layout)make check # race tests + linux compile + golangci-lint
make install-hooks # lefthook pre-commit/pre-push