src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/mods/daemon/daemon.go (about) 1 // Package daemon implements the builtin daemon: module. 2 package daemon 3 4 import ( 5 "strconv" 6 7 "src.elv.sh/pkg/daemon/daemondefs" 8 "src.elv.sh/pkg/eval" 9 "src.elv.sh/pkg/eval/vars" 10 ) 11 12 // Ns makes the daemon: namespace. 13 func Ns(d daemondefs.Client) *eval.Ns { 14 getPid := func() (string, error) { 15 pid, err := d.Pid() 16 return string(strconv.Itoa(pid)), err 17 } 18 19 // TODO: Deprecate the variable in favor of the function. 20 getPidVar := func() any { 21 pid, err := getPid() 22 if err != nil { 23 return "-1" 24 } 25 return pid 26 } 27 28 return eval.BuildNsNamed("daemon"). 29 AddVars(map[string]vars.Var{ 30 "pid": vars.FromGet(getPidVar), 31 "sock": vars.NewReadOnly(string(d.SockPath())), 32 }). 33 AddGoFns(map[string]any{ 34 "pid": getPid, 35 }).Ns() 36 }