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 --- Makefile | 6 ++++- generate/migration/migration.go | 53 +++++++++++++++++++++++++++++++++++++++++ generate/static.go | 24 ------------------- generate/static/static.go | 24 +++++++++++++++++++ 4 files changed, 82 insertions(+), 25 deletions(-) create mode 100644 generate/migration/migration.go delete mode 100644 generate/static.go create mode 100644 generate/static/static.go diff --git a/Makefile b/Makefile index 5c41cdd..d78efbd 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,12 @@ cashierd: generate clean: rm -f cashier cashierd +# usage: make migration name=whatever +migration: + go run ./generate/migration/migration.go $(name) + dep: go get -u github.com/golang/lint/golint go get -u golang.org/x/tools/cmd/goimports -.PHONY: all build dep generate test cashier cashierd clean +.PHONY: all build dep generate test cashier cashierd clean 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) + } + } + } +} diff --git a/generate/static.go b/generate/static.go deleted file mode 100644 index c8e7f43..0000000 --- a/generate/static.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -//go:generate go run static.go - -import ( - "context" - "log" - "os/exec" - "strings" - - "github.com/gobuffalo/packr/builder" -) - -func main() { - root, err := exec.Command("git", "rev-parse", "--show-toplevel").Output() - if err != nil { - log.Fatal(err) - } - b := builder.New(context.Background(), strings.TrimSpace(string(root))) - b.Compress = true - if err := b.Run(); err != nil { - log.Fatal(err) - } -} diff --git a/generate/static/static.go b/generate/static/static.go new file mode 100644 index 0000000..c8e7f43 --- /dev/null +++ b/generate/static/static.go @@ -0,0 +1,24 @@ +package main + +//go:generate go run static.go + +import ( + "context" + "log" + "os/exec" + "strings" + + "github.com/gobuffalo/packr/builder" +) + +func main() { + root, err := exec.Command("git", "rev-parse", "--show-toplevel").Output() + if err != nil { + log.Fatal(err) + } + b := builder.New(context.Background(), strings.TrimSpace(string(root))) + b.Compress = true + if err := b.Run(); err != nil { + log.Fatal(err) + } +} -- cgit v1.2.3