Add docs, improve README
All checks were successful
Build and Publish / release (push) Successful in 1m22s
All checks were successful
Build and Publish / release (push) Successful in 1m22s
This commit is contained in:
58
cmd/eia-client/cmd/docs/docs.go
Normal file
58
cmd/eia-client/cmd/docs/docs.go
Normal file
@ -0,0 +1,58 @@
|
||||
package docs
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client/internal/util"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/cobra/doc"
|
||||
)
|
||||
|
||||
var DocsCmd = &cobra.Command{
|
||||
Use: "docs",
|
||||
Aliases: []string{"documentation"},
|
||||
Short: "Generate documentation for eia-client",
|
||||
Args: cobra.RangeArgs(1, 1),
|
||||
ValidArgs: []string{"md", "man", "yaml"},
|
||||
Run: runDocsCmd,
|
||||
}
|
||||
|
||||
func runDocsCmd(cmd *cobra.Command, args []string) {
|
||||
outDir, err := cmd.Flags().GetString(util.FLAG_OUTPUT_DIR)
|
||||
if err != nil {
|
||||
util.Logger(cmd).Fatal().Err(err).Send()
|
||||
}
|
||||
|
||||
prepareDocsDir(cmd, outDir)
|
||||
|
||||
switch args[0] {
|
||||
case "md":
|
||||
err = doc.GenMarkdownTree(cmd.Root(), outDir)
|
||||
case "man":
|
||||
err = doc.GenManTree(cmd.Root(), &doc.GenManHeader{
|
||||
Title: "EIA Client",
|
||||
Section: "1",
|
||||
}, outDir)
|
||||
case "yaml":
|
||||
err = doc.GenYamlTree(cmd.Root(), outDir)
|
||||
default:
|
||||
util.Logger(cmd).Fatal().Str("docType", args[0]).Msg("invalid doc type given")
|
||||
}
|
||||
|
||||
util.Logger(cmd).Info().Err(err).Msg("doc generation complete")
|
||||
}
|
||||
|
||||
func prepareDocsDir(cmd *cobra.Command, outDir string) {
|
||||
_, err := os.Stat(outDir)
|
||||
if err != nil {
|
||||
err = os.Mkdir(outDir, 0o755)
|
||||
if err != nil {
|
||||
util.Logger(cmd).Fatal().Err(err).Str("outdir", outDir).
|
||||
Msg("unable to prepare output directory")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
DocsCmd.PersistentFlags().StringP(util.FLAG_OUTPUT_DIR, "o", "./docs", "specify output directory for documentation")
|
||||
}
|
@ -31,6 +31,7 @@ import (
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client/cmd/docs"
|
||||
"gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client/cmd/get"
|
||||
"gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client/cmd/list"
|
||||
"gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client/internal/util"
|
||||
@ -98,4 +99,5 @@ func init() {
|
||||
// Subcommands
|
||||
rootCmd.AddCommand(list.ListCmd)
|
||||
rootCmd.AddCommand(get.GetCmd)
|
||||
rootCmd.AddCommand(docs.DocsCmd)
|
||||
}
|
||||
|
@ -15,6 +15,8 @@ const (
|
||||
|
||||
FLAG_LOG_LEVEL = "logLevel"
|
||||
ENV_LOG_LEVEL = "LOG_LEVEL"
|
||||
|
||||
FLAG_OUTPUT_DIR = "outdir"
|
||||
)
|
||||
|
||||
// Type for context data
|
||||
|
Reference in New Issue
Block a user