func list(level int, prefix string, anchor client.Anchor, recurse bool) { if anchor == nil { return } //println(fmt.Sprintf("prefix=%v a=%v/%T r=%v", prefix, anchor, anchor, recurse)) var c children for n, a := range anchor.View() { e := &entry{n: n, a: a} v := a.Get() switch v.(type) { case client.Chan: e.k = "chan" case client.Proc: e.k = "proc" default: if level == 0 { e.k = "----" } } c = append(c, e) } sort.Sort(c) for _, e := range c { if e.k != "" { fmt.Printf("%4s %s%s\n", e.k, prefix, e.n) } if recurse { list(level+1, prefix+e.n+"/", e.a, true) } } }
func list(level int, prefix string, anchor client.Anchor, recurse, long, depth bool) { if anchor == nil { return } // println(fmt.Sprintf("prefix=%v a=%v/%T r=%v", prefix, anchor, anchor, recurse)) var c children for n, a := range anchor.View() { e := &entry{n: n, a: a} v := a.Get() switch t := v.(type) { case client.Server: e.k = "server" case client.Chan: e.k = "chan" case client.Proc: e.k = "proc" // if t.GetCmd().Scrub { // e.k = "proc-autoscrub" // } else { // e.k = "proc" // } case client.Nameserver: e.k = "dns" case docker.Container: e.k = "docker" case client.Subscription: e.k = "@" + t.Peek().Source default: e.k = "·" } c = append(c, e) } sort.Sort(c) for _, e := range c { if recurse && depth { list(level+1, prefix+e.n+"/", e.a, true, long, depth) } if long { fmt.Printf("%-15s %s%s\n", e.k, prefix, e.n) } else { fmt.Printf("%s%s\n", prefix, e.n) } if recurse && !depth { list(level+1, prefix+e.n+"/", e.a, true, long, depth) } } }