Skip to content

Commit

Permalink
Add -rm flag to remove target output file (#151)
Browse files Browse the repository at this point in the history
File is removed before mock generation, if it exists. This is useful
when the mock generation is likely to fail due to some reason, for 
example, package load failure due to change in the interface being
mocked (the existing mock is no longer valid and cannot be compiled). In
such cases, the -rm flag can be used instead of manually removing the
file (which could have fixed the issue).
  • Loading branch information
soniah authored Jul 11, 2021
1 parent b4465d5 commit ab5b7bc
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type userFlags struct {
formatter string
stubImpl bool
skipEnsure bool
remove bool
args []string
}

Expand All @@ -35,6 +36,7 @@ func main() {
printVersion := flag.Bool("version", false, "show the version for moq")
flag.BoolVar(&flags.skipEnsure, "skip-ensure", false,
"suppress mock implementation check, avoid import cycle if mocks generated outside of the tested package")
flag.BoolVar(&flags.remove, "rm", false, "first remove output file, if it exists")

flag.Usage = func() {
fmt.Println(`moq [flags] source-dir interface [interface2 [interface3 [...]]]`)
Expand Down Expand Up @@ -63,6 +65,14 @@ func run(flags userFlags) error {
return errors.New("not enough arguments")
}

if flags.remove && flags.outFile != "" {
if err := os.Remove(flags.outFile); err != nil {
if !errors.Is(err, os.ErrNotExist) {
return err
}
}
}

var buf bytes.Buffer
var out io.Writer = os.Stdout
if flags.outFile != "" {
Expand Down

0 comments on commit ab5b7bc

Please sign in to comment.