Skip to content

Commit 42e3e46

Browse files
author
sleygin
committed
bool flag for go run
1 parent d4c2d21 commit 42e3e46

File tree

4 files changed

+17
-48
lines changed

4 files changed

+17
-48
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ generate:
2222
go run ./cmd/minimock/minimock.go -i ./tests.actor -o ./tests/actor_mock.go
2323
go run ./cmd/minimock/minimock.go -i ./tests.formatterAlias -o ./tests/formatter_alias_mock.go
2424
go run ./cmd/minimock/minimock.go -i ./tests.formatterType -o ./tests/formatter_type_mock.go
25-
go run ./cmd/minimock/minimock.go -i ./tests.reader -o ./tests/reader_mock.go
25+
go run ./cmd/minimock/minimock.go -i ./tests.reader -o ./tests/reader_mock.go -gr
2626

2727
./bin:
2828
mkdir ./bin

cmd/minimock/minimock.go

Lines changed: 13 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,22 @@ import (
88
"go/token"
99
"io"
1010
"io/ioutil"
11-
"log"
1211
"os"
1312
"path/filepath"
1413
"runtime/debug"
1514
"strings"
1615
"text/template"
1716
"time"
1817

19-
minimock "github.com/gojuno/minimock/v3"
18+
"github.com/gojuno/minimock/v3"
2019
"github.com/gojuno/minimock/v3/internal/types"
2120
"github.com/hexdigest/gowrap/generator"
2221
"github.com/hexdigest/gowrap/pkg"
2322
"github.com/pkg/errors"
2423
"golang.org/x/tools/go/packages"
2524
)
2625

27-
const (
28-
devVersion = "dev"
29-
runMode = "go-run"
30-
directMode = "direct"
31-
)
26+
const devVersion = "dev"
3227

3328
var (
3429
//do not modify the following vars
@@ -56,12 +51,12 @@ var helpers = template.FuncMap{
5651

5752
type (
5853
options struct {
59-
interfaces []interfaceInfo
60-
noGenerate bool
61-
suffix string
62-
mockNames []string
63-
packageNames []string
64-
goGenerateMode string
54+
interfaces []interfaceInfo
55+
noGenerate bool
56+
suffix string
57+
mockNames []string
58+
packageNames []string
59+
goGenerateGoRun bool
6560
}
6661

6762
interfaceInfo struct {
@@ -115,7 +110,7 @@ func getVersion(version string, buildInfo *debug.BuildInfo) string {
115110
}
116111

117112
func main() {
118-
opts, err := processArgs(os.Args[0], os.Args[1:], os.Stdout, os.Stderr)
113+
opts, err := processArgs(os.Args[1:], os.Stdout, os.Stderr)
119114
if err != nil {
120115
if err == errInvalidArguments {
121116
os.Exit(2)
@@ -168,7 +163,7 @@ func run(opts *options) (err error) {
168163
"GenerateInstruction": !opts.noGenerate,
169164
"Version": version,
170165
"PackageName": packageName,
171-
"GoGenerateMode": opts.goGenerateMode,
166+
"GenerateGoRun": opts.goGenerateGoRun,
172167
},
173168
Vars: map[string]interface{}{},
174169
Funcs: helpers,
@@ -381,32 +376,16 @@ func processNames(names string, interfacesNum int, isInterfaceWildeCarded bool)
381376
return namesSplitted, nil
382377
}
383378

384-
func processGoGenerateMode(cmd string, args []string, goGenerateMode string) (string, error) {
385-
log.Println(cmd)
386-
log.Println(args)
387-
log.Println(goGenerateMode)
388-
if goGenerateMode != "" && goGenerateMode != directMode && goGenerateMode != runMode {
389-
return "", fmt.Errorf("wrong mode value")
390-
}
391-
392-
if goGenerateMode != "" {
393-
return goGenerateMode, nil
394-
}
395-
if cmd == "go" && len(args) > 0 && args[0] == "run" {
396-
return runMode, nil
397-
}
398-
399-
return directMode, nil
400-
}
401-
402379
var errInvalidArguments = errors.New("invalid arguments")
403380

404-
func processArgs(cmd string, args []string, stdout, stderr io.Writer) (*options, error) {
381+
func processArgs(args []string, stdout, stderr io.Writer) (*options, error) {
405382
var opts options
406383

407384
fs := flag.NewFlagSet("", flag.ContinueOnError)
408385

409386
fs.BoolVar(&opts.noGenerate, "g", false, "don't put go:generate instruction into the generated code")
387+
fs.BoolVar(&opts.goGenerateGoRun, "gr", false, `changes go:generate line from "//go:generate minimock args..." to "//go:generate go run github.com/gojuno/minimock/v3/cmd/minimock",
388+
useful while controlling minimock version with go mod`)
410389
fs.StringVar(&opts.suffix, "s", "_mock_test.go", "mock file suffix")
411390

412391
input := fs.String("i", "*", "comma-separated names of the interfaces to mock, i.e fmt.Stringer,io.Reader\nuse io.* notation to generate mocks for all interfaces in the \"io\" package")
@@ -415,10 +394,6 @@ func processArgs(cmd string, args []string, stdout, stderr io.Writer) (*options,
415394
packageNames := fs.String("p", "", "comma-separated package names,\nby default the generated package names are taken from the destination directory names")
416395
help := fs.Bool("h", false, "show this help message")
417396
version := fs.Bool("version", false, "display version information and exit")
418-
goGenerateMode := fs.String("go-generate-mode", "", `changes go:generate command mode: direct/go-run.
419-
By default puts "go:generate minimock args..." instruction into generated code if mock was generated with minimock command.
420-
If mock was generated with go run github.com/gojuno/minimock/v3/cmd/minimock then it puts "go:generate go run github.com/gojuno/minimock/v3/cmd/minimock args...".
421-
This behaviour can be rewritten by explicitly specifying mode with flag.`)
422397

423398
fs.Usage = func() { usage(fs, stderr) }
424399

@@ -436,12 +411,6 @@ This behaviour can be rewritten by explicitly specifying mode with flag.`)
436411
return nil, nil
437412
}
438413

439-
cmdMode, err := processGoGenerateMode(cmd, args, *goGenerateMode)
440-
if err != nil {
441-
return nil, fmt.Errorf("processing -go-generate-mode flag arguments: %w", err)
442-
}
443-
opts.goGenerateMode = cmdMode
444-
445414
interfaces := strings.Split(*input, ",")
446415
interfacesLen := len(interfaces)
447416
isWildecarded := strings.Contains(*input, "*")

internal/templates/header.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
package {{$packageName}}
99

1010
{{if $.Options.HeaderVars.GenerateInstruction}}
11-
{{if eq $.Options.HeaderVars.GoGenerateMode "go-run"}}
12-
//go:generate go run github.com/gojuno/minimock/v3/cmd/minimock -i {{$.SourcePackage.PkgPath}}.{{$.Options.InterfaceName}} -o {{$.Options.HeaderVars.OutputFile}} -n {{(title (index $.Vars "MockName"))}} -p {{ $packageName }}
11+
{{if $.Options.HeaderVars.GenerateGoRun}}
12+
//go:generate go run github.com/gojuno/minimock/v3/cmd/minimock -i {{$.SourcePackage.PkgPath}}.{{$.Options.InterfaceName}} -o {{$.Options.HeaderVars.OutputFile}} -n {{(title (index $.Vars "MockName"))}} -p {{ $packageName }} -gr
1313
{{else}}
1414
//go:generate minimock -i {{$.SourcePackage.PkgPath}}.{{$.Options.InterfaceName}} -o {{$.Options.HeaderVars.OutputFile}} -n {{(title (index $.Vars "MockName"))}} -p {{ $packageName }}
1515
{{end}}

tests/reader_mock.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)