11package cmd
22
33import (
4+ "bytes"
45 "encoding/json"
56 "fmt"
67 "io"
@@ -74,14 +75,29 @@ var initCmd = &cobra.Command{
7475 if _ , err := os .Stat ("sqlc.json" ); ! os .IsNotExist (err ) {
7576 return nil
7677 }
77- blob , err := json .MarshalIndent (dinosql.GenerateSettings {}, " " , "" )
78+ blob , err := json .MarshalIndent (dinosql.GenerateSettings {Version : "1" }, "" , " " )
7879 if err != nil {
7980 return err
8081 }
8182 return ioutil .WriteFile ("sqlc.json" , blob , 0644 )
8283 },
8384}
8485
86+ const errMessageNoVersion = `The configuration file must have a version number.
87+ Set the version to 1 at the top of sqlc.json:
88+
89+ {
90+ "version": "1"
91+ ...
92+ }
93+ `
94+
95+ const errMessageUnknownVersion = `The configuration file has an invalid version number.
96+ The only supported version is "1".
97+ `
98+
99+ const errMessageNoPackages = `No packages are configured`
100+
85101var genCmd = & cobra.Command {
86102 Use : "generate" ,
87103 Short : "Generate Go code from SQL" ,
@@ -92,19 +108,17 @@ var genCmd = &cobra.Command{
92108 os .Exit (1 )
93109 }
94110
95- var settings dinosql.GenerateSettings
96- if err := json .Unmarshal (blob , & settings ); err != nil {
97- switch err .(type ) {
98- // TODO: Provide better error messages for sqlc.json parsing
99- // case *json.SyntaxError:
100- // case *json.InvalidUnmarshalError:
101- // case *json.UnmarshalFieldError:
102- // case *json.UnmarshalTypeError:
103- // case *json.UnsupportedTypeError:
104- // case *json.UnsupportedValueError:
105- default :
106- fmt .Fprintf (os .Stderr , "error parsing sqlc.json: %s\n " , err )
111+ settings , err := dinosql .ParseConfig (bytes .NewReader (blob ))
112+ if err != nil {
113+ switch err {
114+ case dinosql .ErrMissingVersion :
115+ fmt .Fprintf (os .Stderr , errMessageNoVersion )
116+ case dinosql .ErrUnknownVersion :
117+ fmt .Fprintf (os .Stderr , errMessageUnknownVersion )
118+ case dinosql .ErrNoPackages :
119+ fmt .Fprintf (os .Stderr , errMessageNoPackages )
107120 }
121+ fmt .Fprintf (os .Stderr , "error parsing sqlc.json: %s\n " , err )
108122 os .Exit (1 )
109123 }
110124
0 commit comments