github.com/GetStream/moq@v0.0.0-20181113105103-b721cd3f6524/main.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "flag" 6 "fmt" 7 "io" 8 "io/ioutil" 9 "os" 10 "errors" 11 12 "github.com/matryer/moq/pkg/moq" 13 ) 14 15 func main() { 16 var err error 17 defer func() { 18 if err != nil { 19 fmt.Fprintln(os.Stderr, err) 20 flag.Usage() 21 os.Exit(1) 22 23 } 24 }() 25 var ( 26 outFile = flag.String("out", "", "output file (default stdout)") 27 pkgName = flag.String("pkg", "", "package name (default will infer)") 28 ) 29 flag.Usage = func() { 30 fmt.Println(`moq [flags] destination interface [interface2 [interface3 [...]]]`) 31 flag.PrintDefaults() 32 } 33 flag.Parse() 34 args := flag.Args() 35 if len(args) < 2 { 36 err = errors.New("not enough arguments") 37 return 38 } 39 destination := args[0] 40 args = args[1:] 41 var buf bytes.Buffer 42 var out io.Writer 43 out = os.Stdout 44 if len(*outFile) > 0 { 45 out = &buf 46 } 47 m, err := moq.New(destination, *pkgName) 48 if err != nil { 49 return 50 } 51 err = m.Mock(out, args...) 52 if err != nil { 53 return 54 } 55 // create the file 56 if len(*outFile) > 0 { 57 err = ioutil.WriteFile(*outFile, buf.Bytes(), 0644) 58 } 59 }