package server import ( "strings" ) func varGet(r *request, name string) { if v, ok := r.c.s.env.Find(name); ok { r.Print(v) } else { r.Fatal("no such variable") } } func varSet(r *request, name string, args ...string) { value := strings.Join(args, " ") if err := r.c.s.env.Set(name, value); err != nil { r.Fatal(err) } } func varPush(r *request, name string, args ...string) { value := strings.Join(args, " ") if err := r.c.s.env.Push(name, value); err != nil { r.Fatal(err) } } func varUnset(r *request, name string) { if !r.c.s.env.Del(name) { r.Fatal("no such variable") } } func varShow(r *request) { r.c.s.env.Each(func(k string, v string) bool { r.Println(k, v) return true }) } func varClear(r *request) { r.c.s.env.Clear() } func init() { handle("get", varGet, "name") handle("set", varSet, "name value") handle("push", varPush, "name value") handle("unset", varUnset, "name") handle("env", varShow, "name") handle("clear", varClear, "") }