github.com/benma/gogen@v0.0.0-20160826115606-cf49914b915a/cmd/goexportdefault/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "os" 8 "regexp" 9 10 "github.com/ernesto-jimenez/gogen/exportdefault" 11 "github.com/ernesto-jimenez/gogen/strconv" 12 ) 13 14 var ( 15 out = flag.String("o", "", "specify the name of the generated code. Default value is by generated based on the name of the variable, e.g.: DefaultClient -> default_client_funcs.go (use \"-\" to print to stdout)") 16 pref = flag.String("prefix", "", "prefix for the exported function names") 17 include = flag.String("include", "", "export only those methods that match this regexp") 18 exclude = flag.String("exclude", "", "exclude those methods that match this regexp") 19 ) 20 21 func main() { 22 flag.Parse() 23 log.SetFlags(0) 24 25 // Variable whose methods we want to wrap 26 v := flag.Arg(0) 27 28 gen, err := exportdefault.New(".", v) 29 if err != nil { 30 log.Fatal(err) 31 } 32 33 gen.FuncNamePrefix = *pref 34 35 if expr, err := regexp.Compile(*include); *include != "" && err == nil { 36 gen.Include = expr 37 } else if *include != "" { 38 log.Fatalf("-include contains a invalid regular expression: %s", err.Error()) 39 } 40 41 if expr, err := regexp.Compile(*include); *exclude != "" && err == nil { 42 gen.Exclude = expr 43 } else if *exclude != "" { 44 log.Fatalf("-exclude contains a invalid regular expression: %s", err.Error()) 45 } 46 47 w := os.Stdout 48 if *out == "" { 49 *out = fmt.Sprintf("%s_funcs.go", v) 50 } 51 if *out != "-" { 52 log.Printf("Generating funcs for %s", v) 53 *out = strconv.SnakeCase(*out) 54 w, err = os.OpenFile(*out, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0666) 55 if err != nil { 56 log.Fatal(err) 57 } 58 } 59 60 err = gen.Write(w) 61 if err != nil { 62 log.Fatal(err) 63 } 64 }