Skip to content

Commit f138db5

Browse files
Ivan De Marinodetro
Ivan De Marino
authored andcommitted
Implemented usage (i.e. --help) output for generate and validate commands
1 parent 65804a6 commit f138db5

File tree

2 files changed

+72
-2
lines changed

2 files changed

+72
-2
lines changed

internal/cmd/generate.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cmd
33
import (
44
"flag"
55
"fmt"
6+
"strings"
67

78
"github.com/hashicorp/terraform-plugin-docs/internal/provider"
89
)
@@ -27,7 +28,41 @@ func (cmd *generateCmd) Synopsis() string {
2728
}
2829

2930
func (cmd *generateCmd) Help() string {
30-
return `Usage: tfplugindocs generate`
31+
strBuilder := &strings.Builder{}
32+
33+
longestName := 0
34+
longestUsage := 0
35+
cmd.Flags().VisitAll(func(f *flag.Flag) {
36+
if len(f.Name) > longestName {
37+
longestName = len(f.Name)
38+
}
39+
if len(f.Usage) > longestUsage {
40+
longestUsage = len(f.Usage)
41+
}
42+
})
43+
44+
strBuilder.WriteString(fmt.Sprintf("\nUsage: tfplugindocs generate [<args>]\n\n"))
45+
cmd.Flags().VisitAll(func(f *flag.Flag) {
46+
if f.DefValue != "" {
47+
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s (default: %q)\n",
48+
f.Name,
49+
strings.Repeat(" ", longestName-len(f.Name)+2),
50+
f.Usage,
51+
strings.Repeat(" ", longestUsage-len(f.Usage)+2),
52+
f.DefValue,
53+
))
54+
} else {
55+
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s\n",
56+
f.Name,
57+
strings.Repeat(" ", longestName-len(f.Name)+2),
58+
f.Usage,
59+
strings.Repeat(" ", longestUsage-len(f.Usage)+2),
60+
))
61+
}
62+
})
63+
strBuilder.WriteString("\n")
64+
65+
return strBuilder.String()
3166
}
3267

3368
func (cmd *generateCmd) Flags() *flag.FlagSet {

internal/cmd/validate.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cmd
33
import (
44
"flag"
55
"fmt"
6+
"strings"
67

78
"github.com/hashicorp/terraform-plugin-docs/internal/provider"
89
)
@@ -16,7 +17,41 @@ func (cmd *validateCmd) Synopsis() string {
1617
}
1718

1819
func (cmd *validateCmd) Help() string {
19-
return `Usage: tfplugindocs validate`
20+
strBuilder := &strings.Builder{}
21+
22+
longestName := 0
23+
longestUsage := 0
24+
cmd.Flags().VisitAll(func(f *flag.Flag) {
25+
if len(f.Name) > longestName {
26+
longestName = len(f.Name)
27+
}
28+
if len(f.Usage) > longestUsage {
29+
longestUsage = len(f.Usage)
30+
}
31+
})
32+
33+
strBuilder.WriteString(fmt.Sprintf("\nUsage: tfplugindocs validate [<args>]\n\n"))
34+
cmd.Flags().VisitAll(func(f *flag.Flag) {
35+
if f.DefValue != "" {
36+
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s (default: %q)\n",
37+
f.Name,
38+
strings.Repeat(" ", longestName-len(f.Name)+2),
39+
f.Usage,
40+
strings.Repeat(" ", longestUsage-len(f.Usage)+2),
41+
f.DefValue,
42+
))
43+
} else {
44+
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s\n",
45+
f.Name,
46+
strings.Repeat(" ", longestName-len(f.Name)+2),
47+
f.Usage,
48+
strings.Repeat(" ", longestUsage-len(f.Usage)+2),
49+
))
50+
}
51+
})
52+
strBuilder.WriteString("\n")
53+
54+
return strBuilder.String()
2055
}
2156

2257
func (cmd *validateCmd) Flags() *flag.FlagSet {

0 commit comments

Comments
 (0)