diff --git a/migrate.go b/migrate.go index 314007d5..22320b0a 100644 --- a/migrate.go +++ b/migrate.go @@ -6,6 +6,8 @@ import ( "errors" "fmt" "io" + "io/ioutil" + "log" "net/http" "os" "path" @@ -37,9 +39,16 @@ type MigrationSet struct { // // This should be used sparingly as it is removing a safety check. IgnoreUnknown bool + Log *log.Logger } -var migSet = MigrationSet{} +var migSet = MigrationSet{ + Log: log.New(ioutil.Discard, "SQL: ", log.Llongfile), +} + +func SetLogger(log *log.Logger) { + migSet.Log = log +} // NewMigrationSet returns a parametrized Migration object func (ms MigrationSet) getTableName() string { diff --git a/sql-migrate/command_common.go b/sql-migrate/command_common.go index e5949c6a..4caecf42 100644 --- a/sql-migrate/command_common.go +++ b/sql-migrate/command_common.go @@ -2,11 +2,13 @@ package main import ( "fmt" + "log" + "os" "github.com/rubenv/sql-migrate" ) -func ApplyMigrations(dir migrate.MigrationDirection, dryrun bool, limit int) error { +func ApplyMigrations(dir migrate.MigrationDirection, dryrun bool, limit int, verbose bool) error { env, err := GetEnvironment() if err != nil { return fmt.Errorf("Could not parse config: %s", err) @@ -21,6 +23,9 @@ func ApplyMigrations(dir migrate.MigrationDirection, dryrun bool, limit int) err Dir: env.Dir, } + if verbose { + migrate.SetLogger(log.New(os.Stdout, "SQL: ", log.Llongfile)) + } if dryrun { migrations, _, err := migrate.PlanMigration(db, dialect, source, dir, limit) if err != nil { diff --git a/sql-migrate/command_down.go b/sql-migrate/command_down.go index 232eac40..a224b81a 100644 --- a/sql-migrate/command_down.go +++ b/sql-migrate/command_down.go @@ -34,18 +34,20 @@ func (c *DownCommand) Synopsis() string { func (c *DownCommand) Run(args []string) int { var limit int var dryrun bool + var verbose bool cmdFlags := flag.NewFlagSet("down", flag.ContinueOnError) cmdFlags.Usage = func() { ui.Output(c.Help()) } cmdFlags.IntVar(&limit, "limit", 1, "Max number of migrations to apply.") cmdFlags.BoolVar(&dryrun, "dryrun", false, "Don't apply migrations, just print them.") + cmdFlags.BoolVar(&verbose, "verbose", false, "Show queries at console") ConfigFlags(cmdFlags) if err := cmdFlags.Parse(args); err != nil { return 1 } - err := ApplyMigrations(migrate.Down, dryrun, limit) + err := ApplyMigrations(migrate.Down, dryrun, limit, verbose) if err != nil { ui.Error(err.Error()) return 1 diff --git a/sql-migrate/command_up.go b/sql-migrate/command_up.go index 9e5a291f..e93af4fc 100644 --- a/sql-migrate/command_up.go +++ b/sql-migrate/command_up.go @@ -34,18 +34,20 @@ func (c *UpCommand) Synopsis() string { func (c *UpCommand) Run(args []string) int { var limit int var dryrun bool + var verbose bool cmdFlags := flag.NewFlagSet("up", flag.ContinueOnError) cmdFlags.Usage = func() { ui.Output(c.Help()) } cmdFlags.IntVar(&limit, "limit", 0, "Max number of migrations to apply.") cmdFlags.BoolVar(&dryrun, "dryrun", false, "Don't apply migrations, just print them.") + cmdFlags.BoolVar(&verbose, "verbose", false, "Show queries at console") ConfigFlags(cmdFlags) if err := cmdFlags.Parse(args); err != nil { return 1 } - err := ApplyMigrations(migrate.Up, dryrun, limit) + err := ApplyMigrations(migrate.Up, dryrun, limit, verbose) if err != nil { ui.Error(err.Error()) return 1