37 lines
444 B
Go
37 lines
444 B
Go
|
package command
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
type node struct {
|
||
|
child, next *node
|
||
|
name, usage string
|
||
|
|
||
|
out io.Writer
|
||
|
logf LogFunc
|
||
|
|
||
|
f HandlerFunc
|
||
|
set *flag.FlagSet
|
||
|
}
|
||
|
|
||
|
func (n *node) adopt(v *node) bool {
|
||
|
if n.child != nil {
|
||
|
return n.child.append(v)
|
||
|
}
|
||
|
n.child = v
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func (n *node) append(v *node) bool {
|
||
|
if n.name == v.name {
|
||
|
return false
|
||
|
}
|
||
|
if n.next != nil {
|
||
|
return n.next.append(v)
|
||
|
}
|
||
|
n.next = v
|
||
|
return true
|
||
|
}
|