aboutsummaryrefslogtreecommitdiff
path: root/generate/migration
diff options
context:
space:
mode:
authorNiall Sheridan <nsheridan@gmail.com>2018-08-07 23:27:22 +0100
committerNiall Sheridan <nsheridan@gmail.com>2018-08-07 23:27:22 +0100
commitf089aaf1b66309756d3ee0e44cab30e17139b71a (patch)
treeb9c85d7efab539505faa6847fa5bfd0229ad2217 /generate/migration
parentb79648e0304dc5eb49b2f6f007e7ef750d729390 (diff)
Add a tool to create empty migrations
Diffstat (limited to 'generate/migration')
-rw-r--r--generate/migration/migration.go53
1 files changed, 53 insertions, 0 deletions
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 <migration name>")
+ }
+ 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)
+ }
+ }
+ }
+}