From ef38be6da3ff4d23d109a875df40c5f110734a79 Mon Sep 17 00:00:00 2001 From: Vitalii Solodilov Date: Mon, 5 Dec 2022 15:30:12 +0700 Subject: [PATCH] tools: regenerate scripts skips dirs that contains diff exec command --- scripts/regenerate/main.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/scripts/regenerate/main.go b/scripts/regenerate/main.go index 357db07c80..4c4174b0ec 100644 --- a/scripts/regenerate/main.go +++ b/scripts/regenerate/main.go @@ -1,6 +1,7 @@ package main import ( + "encoding/json" "fmt" "log" "os" @@ -9,6 +10,27 @@ import ( "strings" ) +func parseExecCommand(path string) (string, error) { + var exec = struct { + Command string `json:"command"` + }{ + Command: "generate", + } + + execJsonPath := filepath.Join(path, "exec.json") + if _, err := os.Stat(execJsonPath); !os.IsNotExist(err) { + blob, err := os.ReadFile(execJsonPath) + if err != nil { + return "", err + } + if err := json.Unmarshal(blob, &exec); err != nil { + return "", err + } + } + + return exec.Command, nil +} + func regenerate(dir string) error { return filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { if err != nil { @@ -19,6 +41,15 @@ func regenerate(dir string) error { } if strings.HasSuffix(path, "sqlc.json") || strings.HasSuffix(path, "sqlc.yaml") { cwd := filepath.Dir(path) + command, err := parseExecCommand(cwd) + if err != nil { + return fmt.Errorf("failed to parse exec.json: %w", err) + } + + if command != "generate" { + return nil + } + cmd := exec.Command("sqlc-dev", "generate", "--experimental") cmd.Dir = cwd out, failed := cmd.CombinedOutput()