github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/drivers/driver_main.go (about) 1 package drivers 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "os" 8 ) 9 10 // DriverMain helps dry up the implementation of main.go for drivers 11 func DriverMain(driver Interface) { 12 method := os.Args[1] 13 var config Config 14 15 switch method { 16 case "assemble": 17 b, err := io.ReadAll(os.Stdin) 18 if err != nil { 19 fmt.Fprintln(os.Stderr, "failed to read from stdin") 20 os.Exit(1) 21 } 22 23 err = json.Unmarshal(b, &config) 24 if err != nil { 25 fmt.Fprintf(os.Stderr, "failed to parse json from stdin: %v\n%s\n", err, b) 26 os.Exit(1) 27 } 28 case "templates": 29 // No input for this method 30 case "imports": 31 // No input for this method 32 } 33 34 var output interface{} 35 switch method { 36 case "assemble": 37 dinfo, err := driver.Assemble(config) 38 if err != nil { 39 fmt.Fprintln(os.Stderr, err) 40 os.Exit(1) 41 } 42 output = dinfo 43 case "templates": 44 templates, err := driver.Templates() 45 if err != nil { 46 fmt.Fprintln(os.Stderr, err) 47 os.Exit(1) 48 } 49 output = templates 50 case "imports": 51 collection, err := driver.Imports() 52 if err != nil { 53 fmt.Fprintln(os.Stderr, err) 54 os.Exit(1) 55 } 56 output = collection 57 } 58 59 b, err := json.Marshal(output) 60 if err != nil { 61 fmt.Fprintln(os.Stderr, "failed to marshal json:", err) 62 os.Exit(1) 63 } 64 65 os.Stdout.Write(b) 66 }