From dba032bc3b527cf9f16f9c9c2f3b68c42bf1d76c Mon Sep 17 00:00:00 2001 From: "D.Q.Don" Date: Sat, 17 Jun 2023 21:00:17 +0300 Subject: [PATCH] improve init command to create v2/v1 yaml file `sqlc init` now would generate v2 format yaml file by default, user also can use `--v1` to generate v1 format if needed. --- internal/cmd/cmd.go | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 64ae1bc984..e08ecd7393 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -26,6 +26,9 @@ import ( func init() { uploadCmd.Flags().BoolP("dry-run", "", false, "dump upload request (default: false)") + initCmd.Flags().BoolP("v1", "", false, "generate v1 config yaml file") + initCmd.Flags().BoolP("v2", "", true, "generate v2 config yaml file") + initCmd.MarkFlagsMutuallyExclusive("v1", "v2") } // Do runs the command logic. @@ -88,6 +91,17 @@ var initCmd = &cobra.Command{ Use: "init", Short: "Create an empty sqlc.yaml settings file", RunE: func(cmd *cobra.Command, args []string) error { + useV1, err := cmd.Flags().GetBool("v1") + if err != nil { + return err + } + var yamlConfig interface{} + if useV1 { + yamlConfig = config.V1GenerateSettings{Version: "1"} + } else { + yamlConfig = config.Config{Version: "2"} + } + defer trace.StartRegion(cmd.Context(), "init").End() file := "sqlc.yaml" if f := cmd.Flag("file"); f != nil && f.Changed { @@ -97,13 +111,24 @@ var initCmd = &cobra.Command{ } } if _, err := os.Stat(file); !os.IsNotExist(err) { + fmt.Printf("%s is already created\n", file) return nil } - blob, err := yaml.Marshal(config.V1GenerateSettings{Version: "1"}) + blob, err := yaml.Marshal(yamlConfig) if err != nil { return err } - return os.WriteFile(file, blob, 0644) + err = os.WriteFile(file, blob, 0644) + if err != nil { + return err + } + configDoc := "https://docs.sqlc.dev/en/stable/reference/config.html" + fmt.Printf( + "%s is added. Please visit %s to learn more about configuration\n", + file, + configDoc, + ) + return nil }, }