mirror of https://github.com/pressly/goose.git
parent
5cd6f8c9d0
commit
64cf477c97
|
@ -1,3 +1,5 @@
|
|||
// This is custom goose binary with sqlite3 support only.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
|
@ -7,11 +9,7 @@ import (
|
|||
|
||||
"github.com/pressly/goose"
|
||||
|
||||
// Init DB drivers.
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
_ "github.com/lib/pq"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
_ "github.com/ziutek/mymysql/godrv"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -20,49 +18,19 @@ var (
|
|||
)
|
||||
|
||||
func main() {
|
||||
flags.Usage = usage
|
||||
flags.Parse(os.Args[1:])
|
||||
|
||||
args := flags.Args()
|
||||
if len(args) == 0 || args[0] == "-h" || args[0] == "--help" {
|
||||
|
||||
if len(args) < 2 {
|
||||
flags.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
switch args[0] {
|
||||
case "create":
|
||||
if err := goose.Run("create", nil, *dir, args[1:]...); err != nil {
|
||||
log.Fatalf("goose run: %v", err)
|
||||
}
|
||||
return
|
||||
case "fix":
|
||||
if err := goose.Run("fix", nil, *dir); err != nil {
|
||||
log.Fatalf("goose run: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
dbstring, command := args[1], args[2]
|
||||
|
||||
if len(args) < 3 {
|
||||
flags.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
if args[0] == "-h" || args[0] == "--help" {
|
||||
flags.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
driver, dbstring, command := args[0], args[1], args[2]
|
||||
|
||||
switch dbstring {
|
||||
case "":
|
||||
log.Fatalf("-dbstring=%q not supported\n", dbstring)
|
||||
default:
|
||||
}
|
||||
|
||||
db, err := goose.OpenDBWithDriver(driver, dbstring)
|
||||
db, err := goose.OpenDBWithDriver("sqlite3", dbstring)
|
||||
if err != nil {
|
||||
log.Fatalf("goose run: %v\n", err)
|
||||
log.Fatalf("goose: failed to open DB: %v\n", err)
|
||||
}
|
||||
|
||||
arguments := []string{}
|
||||
|
@ -71,49 +39,6 @@ func main() {
|
|||
}
|
||||
|
||||
if err := goose.Run(command, db, *dir, arguments...); err != nil {
|
||||
log.Fatalf("goose run: %v", err)
|
||||
log.Fatalf("goose %v: %v", command, err)
|
||||
}
|
||||
}
|
||||
|
||||
func usage() {
|
||||
log.Print(usagePrefix)
|
||||
flags.PrintDefaults()
|
||||
log.Print(usageCommands)
|
||||
}
|
||||
|
||||
var (
|
||||
usagePrefix = `Usage: goose [OPTIONS] DRIVER DBSTRING COMMAND
|
||||
|
||||
Drivers:
|
||||
postgres
|
||||
mysql
|
||||
sqlite3
|
||||
redshift
|
||||
|
||||
Examples:
|
||||
goose sqlite3 ./foo.db status
|
||||
goose sqlite3 ./foo.db create init sql
|
||||
goose sqlite3 ./foo.db create add_some_column sql
|
||||
goose sqlite3 ./foo.db create fetch_user_data go
|
||||
goose sqlite3 ./foo.db up
|
||||
|
||||
goose postgres "user=postgres dbname=postgres sslmode=disable" status
|
||||
goose mysql "user:password@/dbname?parseTime=true" status
|
||||
goose redshift "postgres://user:password@qwerty.us-east-1.redshift.amazonaws.com:5439/db" status
|
||||
|
||||
Options:
|
||||
`
|
||||
|
||||
usageCommands = `
|
||||
Commands:
|
||||
up Migrate the DB to the most recent version available
|
||||
up-to VERSION Migrate the DB to a specific VERSION
|
||||
down Roll back the version by 1
|
||||
down-to VERSION Roll back to a specific VERSION
|
||||
redo Re-run the latest migration
|
||||
status Dump the migration status for the current DB
|
||||
version Print the current version of the database
|
||||
create NAME [sql|go] Creates new migration file with the current timestamp
|
||||
fix Apply sequential ordering to migrations
|
||||
`
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue