Reduce required args to new parser

urfave-cli-integration
Dan Buch 2 years ago
parent e3872e316d
commit d0c96803c8
Signed by: meatballhat
GPG Key ID: A12F782281063434

5
.gitignore vendored

@ -0,0 +1,5 @@
*.a
*.exe
*.o
*.out
*.so

@ -15,16 +15,16 @@ func main() {
log.SetFlags(0) log.SetFlags(0)
pt, err := argh.ParseArgs(os.Args, argh.NewParserConfig( pCfg := argh.NewParserConfig()
&argh.CommandConfig{ pCfg.Prog = argh.CommandConfig{
NValue: argh.OneOrMoreValue, NValue: argh.OneOrMoreValue,
ValueNames: []string{"topping"}, ValueNames: []string{"topping"},
Flags: &argh.Flags{ Flags: &argh.Flags{
Automatic: true, Automatic: true,
},
}, },
nil, }
))
pt, err := argh.ParseArgs(os.Args, pCfg)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

@ -7,10 +7,7 @@ const (
) )
var ( var (
POSIXyParserConfig = NewParserConfig( POSIXyParserConfig = NewParserConfig()
nil,
POSIXyScannerConfig,
)
) )
type NValue int type NValue int
@ -35,20 +32,24 @@ type ParserConfig struct {
ScannerConfig *ScannerConfig ScannerConfig *ScannerConfig
} }
func NewParserConfig(prog *CommandConfig, sCfg *ScannerConfig) *ParserConfig { type ParserOption func(*ParserConfig)
if sCfg == nil {
sCfg = POSIXyScannerConfig func NewParserConfig(opts ...ParserOption) *ParserConfig {
} pCfg := &ParserConfig{}
if prog == nil { for _, opt := range opts {
prog = &CommandConfig{} if opt != nil {
opt(pCfg)
}
} }
prog.init() if pCfg.Prog.IsZero() {
pCfg.Prog = CommandConfig{}
pCfg.Prog.init()
}
pCfg := &ParserConfig{ if pCfg.ScannerConfig == nil {
Prog: *prog, pCfg.ScannerConfig = POSIXyScannerConfig
ScannerConfig: sCfg,
} }
return pCfg return pCfg
@ -61,6 +62,13 @@ type CommandConfig struct {
Commands *Commands Commands *Commands
} }
func (cCfg *CommandConfig) IsZero() bool {
return cCfg.NValue == NValue(0) &&
cCfg.ValueNames == nil &&
cCfg.Flags == nil &&
cCfg.Commands == nil
}
func (cCfg *CommandConfig) init() { func (cCfg *CommandConfig) init() {
if cCfg.ValueNames == nil { if cCfg.ValueNames == nil {
cCfg.ValueNames = []string{} cCfg.ValueNames = []string{}

Loading…
Cancel
Save