github.com/benma/gogen@v0.0.0-20160826115606-cf49914b915a/cmd/gounmarshalmap/main.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "flag" 6 "fmt" 7 "io/ioutil" 8 "log" 9 "strings" 10 11 "github.com/ernesto-jimenez/gogen/unmarshalmap" 12 ) 13 14 var ( 15 out = flag.String("o", "", "what file to write") 16 tOut = flag.String("o-test", "", "what file to write the test to") 17 pkg = flag.String("pkg", ".", "what package to get the interface from") 18 ) 19 20 func main() { 21 flag.Parse() 22 log.SetFlags(0) 23 24 st := flag.Arg(0) 25 26 if st == "" { 27 log.Fatal("need to specify a struct name") 28 } 29 30 gen, err := unmarshalmap.NewGenerator(*pkg, st) 31 if err != nil { 32 log.Fatal(err) 33 } 34 35 var buf bytes.Buffer 36 37 log.Printf("Generating func (*%s) UnmarshalMap(map[string]interface{}) error", st) 38 err = gen.Write(&buf) 39 if err != nil { 40 log.Fatal(err) 41 } 42 43 if *out != "" { 44 err := ioutil.WriteFile(*out, buf.Bytes(), 0666) 45 if err != nil { 46 log.Fatal(err) 47 } 48 if *tOut == "" { 49 *tOut = fmt.Sprintf("%s_test.go", strings.TrimRight(*out, ".go")) 50 } 51 } else { 52 fmt.Println(buf.String()) 53 } 54 55 buf.Reset() 56 57 err = gen.WriteTest(&buf) 58 if err != nil { 59 log.Fatal(err) 60 } 61 62 if *tOut != "" { 63 err := ioutil.WriteFile(*tOut, buf.Bytes(), 0666) 64 if err != nil { 65 log.Fatal(err) 66 } 67 } else { 68 fmt.Println(buf.String()) 69 } 70 }