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  }