41 lines
		
	
	
		
			497 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			497 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package command
 | 
						|
 | 
						|
import (
 | 
						|
	"flag"
 | 
						|
	"io"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
type node struct {
 | 
						|
	child, next *node
 | 
						|
	name, usage string
 | 
						|
 | 
						|
	out  io.Writer
 | 
						|
	logf LogFunc
 | 
						|
 | 
						|
	prefix []string
 | 
						|
	suffix strings.Builder
 | 
						|
 | 
						|
	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
 | 
						|
}
 |