github.com/roryq/sesame@v0.0.3-devel/cmd/sesame/main.go (about)

     1  // package main is an executable command for sasame(https://github.com/yuin/sesame),
     2  // an object to object mapper for Go.
     3  package main
     4  
     5  import (
     6  	"encoding/json"
     7  	"flag"
     8  	"fmt"
     9  	"os"
    10  
    11  	"github.com/carlmjohnson/versioninfo"
    12  
    13  	"github.com/roryq/sesame"
    14  )
    15  
    16  func main() {
    17  	if len(os.Getenv("DEBUG")) != 0 {
    18  		sesame.LogEnabledFor = sesame.LogLevelDebug
    19  	}
    20  
    21  	generateCmd := flag.NewFlagSet("generate", flag.ExitOnError)
    22  	generateConfig := generateCmd.String("c", "sesame.yml", "config file path")
    23  	generateHelp := generateCmd.Bool("h", false, "show this help")
    24  	generateQuiet := generateCmd.Bool("q", false, "suppress messages")
    25  	versioninfo.AddFlag(generateCmd)
    26  
    27  	cmdName := "generate"
    28  	args := []string{}
    29  	if len(os.Args) > 1 {
    30  		cmdName = os.Args[1]
    31  		args = os.Args[2:]
    32  	}
    33  redo:
    34  
    35  	switch cmdName {
    36  	case "generate":
    37  		err := generateCmd.Parse(args)
    38  		if err != nil {
    39  			sesame.LogFunc(sesame.LogLevelError, err.Error())
    40  			os.Exit(1)
    41  		}
    42  		if *generateHelp {
    43  			generateCmd.Usage()
    44  			os.Exit(1)
    45  		}
    46  		if *generateQuiet {
    47  			sesame.LogEnabledFor = sesame.LogLevelError
    48  		}
    49  		var config sesame.Generation
    50  		if err := sesame.LoadConfig(&config, *generateConfig); err != nil {
    51  			sesame.LogFunc(sesame.LogLevelError, err.Error())
    52  			os.Exit(1)
    53  		}
    54  		if sesame.LogEnabledFor >= sesame.LogLevelDebug {
    55  			b, _ := json.Marshal(&config)
    56  			sesame.LogFunc(sesame.LogLevelDebug, string(b))
    57  		}
    58  		generator := sesame.NewGenerator(&config)
    59  		if err := generator.Generate(); err != nil {
    60  			sesame.LogFunc(sesame.LogLevelError, err.Error())
    61  			os.Exit(1)
    62  		}
    63  	case "-h":
    64  		fmt.Fprint(os.Stderr, `sesame [COMMAND|-h]
    65    COMMANDS:
    66      generate: generates mappers(default)
    67    OPTIONS:
    68      -h: show this help
    69  `)
    70  		os.Exit(1)
    71  	default:
    72  		cmdName = "generate"
    73  		args = os.Args[1:]
    74  		goto redo
    75  	}
    76  }