-
Notifications
You must be signed in to change notification settings - Fork 232
/
usage.go
62 lines (52 loc) · 1.3 KB
/
usage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package cmd
import (
"os"
"path"
"path/filepath"
"strings"
"github.com/CircleCI-Public/circleci-cli/md_docs"
"github.com/CircleCI-Public/circleci-cli/settings"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
type usageOptions struct {
cfg *settings.Config
args []string
}
func newUsageCommand(config *settings.Config) *cobra.Command {
opts := usageOptions{
cfg: config,
}
return &cobra.Command{
Use: "usage <path> (default is \"docs\")",
Short: "Generate usage documentation in markdown for the CLI.",
Hidden: true,
PreRun: func(cmd *cobra.Command, args []string) {
opts.args = args
},
RunE: func(_ *cobra.Command, _ []string) error {
return usage(opts)
},
Args: cobra.MaximumNArgs(1),
}
}
var defaultDocsPath = "docs"
func usage(opts usageOptions) error {
docsPath := defaultDocsPath
if len(opts.args) > 0 {
docsPath = opts.args[0]
}
if err := os.MkdirAll(docsPath, 0700); err != nil {
return errors.Wrap(err, "Could not create usage docs directory")
}
out, err := filepath.Abs(docsPath)
if err != nil {
return err
}
// generate markdown to out
emptyStr := func(s string) string { return "" }
return md_docs.GenMarkdownTreeCustom(rootCmd, out, emptyStr, func(name string) string {
base := strings.TrimSuffix(name, path.Ext(name))
return base + ".html"
})
}