mirror of https://github.com/pressly/goose.git
50 lines
898 B
Go
50 lines
898 B
Go
// This is custom goose binary with sqlite3 support only.
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/pressly/goose/v3"
|
|
_ "modernc.org/sqlite"
|
|
)
|
|
|
|
var (
|
|
flags = flag.NewFlagSet("goose", flag.ExitOnError)
|
|
dir = flags.String("dir", ".", "directory with migration files")
|
|
)
|
|
|
|
func main() {
|
|
flags.Parse(os.Args[1:])
|
|
args := flags.Args()
|
|
|
|
if len(args) < 3 {
|
|
flags.Usage()
|
|
return
|
|
}
|
|
|
|
dbstring, command := args[1], args[2]
|
|
|
|
db, err := goose.OpenDBWithDriver("sqlite", dbstring)
|
|
if err != nil {
|
|
log.Fatalf("goose: failed to open DB: %v\n", err)
|
|
}
|
|
|
|
defer func() {
|
|
if err := db.Close(); err != nil {
|
|
log.Fatalf("goose: failed to close DB: %v\n", err)
|
|
}
|
|
}()
|
|
|
|
arguments := []string{}
|
|
if len(args) > 3 {
|
|
arguments = append(arguments, args[3:]...)
|
|
}
|
|
|
|
if err := goose.Run(command, db, *dir, arguments...); err != nil {
|
|
log.Fatalf("goose %v: %v", command, err)
|
|
}
|
|
}
|