Skip to content

brandonkramer/svcroot

Repository files navigation

svcroot

Service instance roots, runtime file layout, project-root discovery, and known-instance registries for long-running local services.

Install

From pkg.go.dev:

go get github.com/brandonkramer/svcroot

Configure once with Service

svc := &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")

Legacy helpers

layout := &svcroot.DefaultLayout
socket := svcroot.Socket(root, layout)
lock := svcroot.Lock(root, layout)

Development

make check          # race tests + linux compile + golangci-lint
make install-hooks  # lefthook pre-commit/pre-push

About

Service instance roots, runtime file layout, project-root discovery, and known-instance registries.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors