github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/mods/daemon/daemon.go (about) 1 // Package daemon implements the builtin daemon: module. 2 package daemon 3 4 import ( 5 "strconv" 6 7 "github.com/markusbkk/elvish/pkg/daemon/daemondefs" 8 "github.com/markusbkk/elvish/pkg/eval" 9 "github.com/markusbkk/elvish/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() interface{} { 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]interface{}{ 34 "pid": getPid, 35 }).Ns() 36 }