// 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) } }