Skip to content

Commit

Permalink
feat: set default values for options and arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
steverusso committed Sep 30, 2024
1 parent cf26f85 commit 8e20c14
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
27 changes: 27 additions & 0 deletions generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,9 @@ func (g *generator) genCmdUsageFunc(c *command) error {
case "roomy":
content := " " + o.usgNameAndArg() + "\n"
content += " " + wrapBlurb(o.data.Blurb, 6, g.usgTextWidth)
if v, ok := o.data.getConfig("default"); ok {
content += "\n\n [default: " + v + "]"
}
if v, ok := o.data.getConfig("env"); ok {
content += "\n\n [env: " + v + "]"
}
Expand All @@ -193,6 +196,9 @@ func (g *generator) genCmdUsageFunc(c *command) error {
default:
paddedNameAndArg := fmt.Sprintf(" %-*s ", optNameColWidth, o.usgNameAndArg())
desc := o.data.Blurb
if v, ok := o.data.getConfig("default"); ok {
desc += " (default: " + v + ")"
}
if v, ok := o.data.getConfig("env"); ok {
desc += " [$" + v + "]"
}
Expand All @@ -214,6 +220,9 @@ func (g *generator) genCmdUsageFunc(c *command) error {
case "roomy":
content := " " + a.UsgName() + "\n"
content += " " + wrapBlurb(a.data.Blurb, 6, g.usgTextWidth)
if v, ok := a.data.getConfig("default"); ok {
content += "\n\n [default: " + v + "]"
}
if v, ok := a.data.getConfig("env"); ok {
content += "\n\n [env: " + v + "]"
}
Expand All @@ -224,6 +233,9 @@ func (g *generator) genCmdUsageFunc(c *command) error {
default:
paddedName := fmt.Sprintf(" %-*s ", argNameColWidth, a.UsgName())
desc := a.data.Blurb
if v, ok := a.data.getConfig("default"); ok {
desc += " (default: " + v + ")"
}
if v, ok := a.data.getConfig("env"); ok {
desc += " [$" + v + "]"
}
Expand Down Expand Up @@ -276,6 +288,21 @@ func (g *generator) genCmdParseFunc(c *command) error {
return nil
}

func (c *command) Defaults() string {
var s string
for _, o := range c.Opts {
if defVal, ok := o.data.getConfig("default"); ok {
s += fmt.Sprintf("\tc.%s = %s\n", o.FieldName, defVal)
}
}
for _, a := range c.Args {
if defVal, ok := a.data.getConfig("default"); ok {
s += fmt.Sprintf("\tc.%s = %s\n", a.FieldName, defVal)
}
}
return s
}

func (c *command) Parents() string {
s := ""
for i := range c.parentNames {
Expand Down
2 changes: 2 additions & 0 deletions tmpls/parsefunc.go.tmpl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

func (c *{{ .TypeName }}) Parse(args []string) {
{{- with .Defaults }}
{{ . }}{{ end }}
p := clapCommand{
usage: c.UsageHelp,

Expand Down

0 comments on commit 8e20c14

Please sign in to comment.