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  }