command: declare command interface
Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
a9986aab6a
commit
b5eaeac11a
34
command/command.go
Normal file
34
command/command.go
Normal file
@ -0,0 +1,34 @@
|
||||
// Package command implements generic nested command parsing.
|
||||
package command
|
||||
|
||||
import "flag"
|
||||
|
||||
type (
|
||||
// HandlerFunc is called when matching a directly handled subcommand tree.
|
||||
HandlerFunc = func(args []string) error
|
||||
|
||||
// LogFunc is the function signature of a printf function.
|
||||
LogFunc = func(format string, a ...any)
|
||||
|
||||
// FlagDefiner is a deferred flag definer value, usually encapsulating the default value.
|
||||
FlagDefiner interface {
|
||||
// Define defines the flag in set.
|
||||
Define(set *flag.FlagSet, p any, name, usage string)
|
||||
}
|
||||
|
||||
Command interface {
|
||||
Parse(arguments []string) error
|
||||
baseNode[Command]
|
||||
}
|
||||
Node baseNode[Node]
|
||||
|
||||
baseNode[T any] interface {
|
||||
// Command appends a subcommand with direct command handling.
|
||||
Command(name, usage string, f HandlerFunc) T
|
||||
// Flag defines a generic flag type in Node's flag set.
|
||||
Flag(p any, name string, value FlagDefiner, usage string) T
|
||||
|
||||
// New returns a new subcommand tree.
|
||||
New(name, usage string) (sub Node)
|
||||
}
|
||||
)
|
Loading…
Reference in New Issue
Block a user