func main() { flag.Usage = usage flag.Parse() var pkg *model.Package var err error if *source != "" { pkg, err = ParseFile(*source) } else { if flag.NArg() != 2 { log.Fatal("Expected exactly two arguments") } pkg, err = Reflect(flag.Arg(0), strings.Split(flag.Arg(1), ",")) } if err != nil { log.Fatalf("Loading input failed: %v", err) } if *debugParser { pkg.Print(os.Stdout) return } dst := os.Stdout if len(*destination) > 0 { f, err := os.Create(*destination) if err != nil { log.Fatalf("Failed opening destination file: %v", err) } defer f.Close() dst = f } packageName := *packageOut if packageName == "" { // pkg.Name in reflect mode is the base name of the import path, // which might have characters that are illegal to have in package names. packageName = "mock_" + sanitize(pkg.Name) } g := generator{ w: dst, } if *source != "" { g.filename = *source } else { g.srcPackage = flag.Arg(0) g.srcInterfaces = flag.Arg(1) } if err := g.Generate(pkg, packageName); err != nil { log.Fatalf("Failed generating mock: %v", err) } }