From f089aaf1b66309756d3ee0e44cab30e17139b71a Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Tue, 7 Aug 2018 23:27:22 +0100 Subject: Add a tool to create empty migrations --- generate/migration/migration.go | 53 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 generate/migration/migration.go (limited to 'generate/migration') diff --git a/generate/migration/migration.go b/generate/migration/migration.go new file mode 100644 index 0000000..37515bf --- /dev/null +++ b/generate/migration/migration.go @@ -0,0 +1,53 @@ +package main + +import ( + "flag" + "fmt" + "io/ioutil" + "log" + "os/exec" + "path" + "strings" + "time" +) + +const ( + dateFormat = "20060102150405" + migrationsPath = "server/store/migrations" +) + +var ( + contents = []byte(`-- +migrate Up + + +-- +migrate Down`) +) + +func main() { + flag.Usage = func() { + fmt.Println("Usage: migration ") + } + flag.Parse() + if len(flag.Args()) != 1 { + flag.Usage() + } + name := fmt.Sprintf("%s_%s.sql", time.Now().UTC().Format(dateFormat), flag.Arg(0)) + gitRoot, err := exec.Command("git", "rev-parse", "--show-toplevel").Output() + if err != nil { + log.Fatal(err) + } + root := strings.TrimSpace(string(gitRoot)) + ents, err := ioutil.ReadDir(path.Join(root, migrationsPath)) + if err != nil { + log.Fatal(err) + } + for _, e := range ents { + if e.IsDir() { + filename := path.Join(migrationsPath, e.Name(), name) + fmt.Printf("Wrote empty migration file: %s\n", filename) + if err := ioutil.WriteFile(filename, contents, 0644); err != nil { + log.Fatal(err) + } + } + } +} -- cgit v1.2.3