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 }