Ejemplo n.º 1
0
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)
		}
	}
}
Ejemplo n.º 2
0
Archivo: ls.go Proyecto: keryoo/circuit
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)
		}
	}
}