Skip to content

Commit

Permalink
feat: add example usage mode flag + generator config
Browse files Browse the repository at this point in the history
Signed-off-by: Matthew Rose <[email protected]>
matty-rose committed Nov 27, 2021

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
1 parent 5e20787 commit fd0f058
Showing 6 changed files with 134 additions and 9 deletions.
15 changes: 14 additions & 1 deletion cmd/generate.go
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ package cmd
import (
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/thediveo/enumflag"

"github.com/matty-rose/gha-docs/pkg/generator"
"github.com/matty-rose/gha-docs/pkg/parser"
@@ -39,6 +40,9 @@ var outputFile string
// Inject flag
var inject bool

// Usage mode flag
var usageMode generator.UsageMode = generator.Remote

// generateCmd represents the generate command
var generateCmd = &cobra.Command{
Use: "generate [PATH]",
@@ -51,7 +55,10 @@ var generateCmd = &cobra.Command{
}

var g generator.Generator
g, err = generator.New(format)
g, err = generator.New(generator.Config{
Format: format,
ExampleUsageMode: &usageMode,
})
if err != nil {
return errors.Wrap(err, "couldn't construct the generator")
}
@@ -89,5 +96,11 @@ func init() {
false,
"Set flag to inject generated documentation between markers. Ignored if not writing to a file. Defaults to false.",
)
generateCmd.PersistentFlags().VarP(
enumflag.New(&usageMode, "mode", generator.UsageModeIDs, enumflag.EnumCaseInsensitive),
"usage-mode",
"u",
"Sets the usage mode when generating example usage block. Must be one of 'remote' or 'local'.",
)
rootCmd.AddCommand(generateCmd)
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/thediveo/enumflag v0.10.1 // indirect
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf // indirect
golang.org/x/text v0.3.6 // indirect
gopkg.in/ini.v1 v1.63.2 // indirect
88 changes: 88 additions & 0 deletions go.sum

Large diffs are not rendered by default.

23 changes: 21 additions & 2 deletions pkg/generator/generator.go
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ package generator

import (
"github.com/pkg/errors"
"github.com/thediveo/enumflag"

"github.com/matty-rose/gha-docs/pkg/types"
)
@@ -31,8 +32,26 @@ type Generator interface {
Generate(action *types.CompositeAction) string
}

func New(format string) (Generator, error) {
switch format {
type UsageMode enumflag.Flag

const (
Remote UsageMode = iota
Local
)

var UsageModeIDs = map[UsageMode][]string{
Remote: {"remote"},
Local: {"local"},
}

type Config struct {
Format string

ExampleUsageMode *UsageMode
}

func New(config Config) (Generator, error) {
switch config.Format {
case "markdown":
return markdownGenerator{}, nil
}
2 changes: 1 addition & 1 deletion pkg/generator/generator_test.go
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ import (
func TestInvalidFormat(t *testing.T) {
t.Parallel()

g, err := generator.New("invalid")
g, err := generator.New(generator.Config{Format: "invalid"})

assert.Nil(t, g)
assert.Error(t, err)
14 changes: 9 additions & 5 deletions pkg/generator/markdown_test.go
Original file line number Diff line number Diff line change
@@ -30,8 +30,12 @@ import (
"github.com/matty-rose/gha-docs/pkg/types"
)

func newMarkdownConfig() generator.Config {
return generator.Config{Format: "markdown"}
}

func TestGenerateMarkdownNameDescription(t *testing.T) {
g, err := generator.New("markdown")
g, err := generator.New(newMarkdownConfig())
if err != nil {
t.Fatal(err)
}
@@ -46,7 +50,7 @@ func TestGenerateMarkdownNameDescription(t *testing.T) {
}

func TestGenerateMarkdownInputs(t *testing.T) {
g, err := generator.New("markdown")
g, err := generator.New(newMarkdownConfig())
if err != nil {
t.Fatal(err)
}
@@ -77,7 +81,7 @@ func TestGenerateMarkdownInputs(t *testing.T) {
}

func TestGenerateMarkdownOutputs(t *testing.T) {
g, err := generator.New("markdown")
g, err := generator.New(newMarkdownConfig())
if err != nil {
t.Fatal(err)
}
@@ -107,7 +111,7 @@ func TestGenerateMarkdownOutputs(t *testing.T) {
}

func TestGenerateMarkdownExternal(t *testing.T) {
g, err := generator.New("markdown")
g, err := generator.New(newMarkdownConfig())
if err != nil {
t.Fatal(err)
}
@@ -138,7 +142,7 @@ func TestGenerateMarkdownExternal(t *testing.T) {
}

func TestGenerateMarkdownFull(t *testing.T) {
g, err := generator.New("markdown")
g, err := generator.New(newMarkdownConfig())
if err != nil {
t.Fatal(err)
}

0 comments on commit fd0f058

Please sign in to comment.