diff --git a/cli/commands/migrate_apply.go b/cli/commands/migrate_apply.go index 8600e051..011c9cdf 100644 --- a/cli/commands/migrate_apply.go +++ b/cli/commands/migrate_apply.go @@ -25,7 +25,14 @@ func newMigrateApplyCmd(ec *cli.ExecutionContext) *cobra.Command { return ec.Validate() }, RunE: func(cmd *cobra.Command, args []string) error { - return opts.run() + opts.EC.Spin("Applying migrations...") + err := opts.run() + opts.EC.Spinner.Stop() + if err != nil { + return err + } + opts.EC.Logger.Info("migrations applied") + return nil }, } f := migrateApplyCmd.Flags() @@ -85,7 +92,6 @@ func (o *migrateApplyOptions) run() error { } return errors.Wrap(err, "apply failed") } - o.EC.Logger.Info("migrations applied") return nil } diff --git a/cli/commands/migrate_apply_test.go b/cli/commands/migrate_apply_test.go index a8b23203..4d6d6e82 100644 --- a/cli/commands/migrate_apply_test.go +++ b/cli/commands/migrate_apply_test.go @@ -13,11 +13,10 @@ import ( "github.com/hasura/graphql-engine/cli" "github.com/hasura/graphql-engine/cli/version" "github.com/sirupsen/logrus/hooks/test" - "github.com/stretchr/testify/assert" ) func testMigrateApply(t *testing.T, endpoint *url.URL, migrationsDir string, up string, down string, v string, vType string) { - logger, hook := test.NewNullLogger() + logger, _ := test.NewNullLogger() opts := &migrateApplyOptions{ EC: &cli.ExecutionContext{ Logger: logger, @@ -46,8 +45,6 @@ func testMigrateApply(t *testing.T, endpoint *url.URL, migrationsDir string, up if err != nil { t.Fatalf("failed applying migration: %v", err) } - - assert.Equal(t, "migrations applied", hook.LastEntry().Message) } func TestMigrateApplyWithInvalidEndpoint(t *testing.T) { diff --git a/cli/commands/migrate_create.go b/cli/commands/migrate_create.go index 73c92ef1..3ca694e0 100644 --- a/cli/commands/migrate_create.go +++ b/cli/commands/migrate_create.go @@ -33,7 +33,17 @@ func newMigrateCreateCmd(ec *cli.ExecutionContext) *cobra.Command { }, RunE: func(cmd *cobra.Command, args []string) error { opts.name = args[0] - return opts.run() + opts.EC.Spin("Creating migration files...") + version, err := opts.run() + opts.EC.Spinner.Stop() + if err != nil { + return err + } + opts.EC.Logger.WithFields(log.Fields{ + "version": version, + "name": opts.name, + }).Info("Migrations files created") + return nil }, } f := migrateCreateCmd.Flags() @@ -68,7 +78,7 @@ type migrateCreateOptions struct { metaDataServer bool } -func (o *migrateCreateOptions) run() (err error) { +func (o *migrateCreateOptions) run() (version int64, err error) { timestamp := getTime() createOptions := mig.New(timestamp, o.name, o.EC.MigrationDir) @@ -76,19 +86,19 @@ func (o *migrateCreateOptions) run() (err error) { // sql-file flag is set err := createOptions.SetSQLUpFromFile(o.sqlFile) if err != nil { - return errors.Wrap(err, "cannot set sql file") + return 0, errors.Wrap(err, "cannot set sql file") } } if o.flags.Changed("metadata-from-file") && o.metaDataServer { - return errors.New("only one metadata type can be set") + return 0, errors.New("only one metadata type can be set") } if o.flags.Changed("metadata-from-file") { // metadata-file flag is set err := createOptions.SetMetaUpFromFile(o.metaDataFile) if err != nil { - return errors.Wrap(err, "cannot set metadata file") + return 0, errors.Wrap(err, "cannot set metadata file") } } @@ -96,35 +106,35 @@ func (o *migrateCreateOptions) run() (err error) { // create new migrate instance migrateDrv, err := newMigrate(o.EC.MigrationDir, o.EC.ServerConfig.ParsedEndpoint, o.EC.ServerConfig.AdminSecret, o.EC.Logger, o.EC.Version) if err != nil { - return errors.Wrap(err, "cannot create migrate instance") + return 0, errors.Wrap(err, "cannot create migrate instance") } // fetch metadata from server metaData, err := migrateDrv.ExportMetadata() if err != nil { - return errors.Wrap(err, "cannot fetch metadata from server") + return 0, errors.Wrap(err, "cannot fetch metadata from server") } tmpfile, err := ioutil.TempFile("", "metadata") if err != nil { - return errors.Wrap(err, "cannot create tempfile") + return 0, errors.Wrap(err, "cannot create tempfile") } defer os.Remove(tmpfile.Name()) t, err := yaml.Marshal(metaData) if err != nil { - return errors.Wrap(err, "cannot marshal metadata") + return 0, errors.Wrap(err, "cannot marshal metadata") } if _, err := tmpfile.Write(t); err != nil { - return errors.Wrap(err, "cannot write to temp file") + return 0, errors.Wrap(err, "cannot write to temp file") } if err := tmpfile.Close(); err != nil { - return errors.Wrap(err, "cannot close tmp file") + return 0, errors.Wrap(err, "cannot close tmp file") } err = createOptions.SetMetaUpFromFile(tmpfile.Name()) if err != nil { - return errors.Wrap(err, "cannot parse metadata from the server") + return 0, errors.Wrap(err, "cannot parse metadata from the server") } } @@ -141,13 +151,9 @@ func (o *migrateCreateOptions) run() (err error) { }() err = createOptions.Create() if err != nil { - return errors.Wrap(err, "error creating migration files") + return 0, errors.Wrap(err, "error creating migration files") } - o.EC.Logger.WithFields(log.Fields{ - "version": timestamp, - "name": o.name, - }).Info("Migrations files created") - return nil + return 0, nil } func getTime() int64 { diff --git a/cli/commands/migrate_create_test.go b/cli/commands/migrate_create_test.go index 43d92426..105b96cb 100644 --- a/cli/commands/migrate_create_test.go +++ b/cli/commands/migrate_create_test.go @@ -26,7 +26,7 @@ func TestMigrateCreateCmd(t *testing.T) { flags: pflag.NewFlagSet("migrate-create-test", pflag.ContinueOnError), } - err := opts.run() + _, err := opts.run() if err != nil { t.Fatalf("failed creating migration: %v", err) } diff --git a/cli/commands/migrate_status.go b/cli/commands/migrate_status.go index 270cff29..ee6b5bad 100644 --- a/cli/commands/migrate_status.go +++ b/cli/commands/migrate_status.go @@ -27,7 +27,9 @@ func newMigrateStatusCmd(ec *cli.ExecutionContext) *cobra.Command { return ec.Validate() }, RunE: func(cmd *cobra.Command, args []string) error { + opts.EC.Spin("Fetching migration status...") status, err := opts.run() + opts.EC.Spinner.Stop() if err != nil { return err }