Merge "playground: Change "profiles" directory to "runtime""
diff --git a/go/src/v.io/x/playground/pgadmin/main.go b/go/src/v.io/x/playground/pgadmin/main.go
index cbbdaf2..aa010ea 100644
--- a/go/src/v.io/x/playground/pgadmin/main.go
+++ b/go/src/v.io/x/playground/pgadmin/main.go
@@ -8,17 +8,16 @@
import (
"flag"
- "os"
- "v.io/x/lib/cmdline"
+ "v.io/x/lib/cmdline2"
"v.io/x/lib/dbutil"
)
func main() {
- os.Exit(cmdPGAdmin.Main())
+ cmdline2.Main(cmdPGAdmin)
}
-var cmdPGAdmin = &cmdline.Command{
+var cmdPGAdmin = &cmdline2.Command{
Name: "pgadmin",
Short: "Playground database management tool",
Long: `
@@ -26,7 +25,7 @@
Supports database schema migration.
TODO(ivanpi): bundle bootstrap
`,
- Children: []*cmdline.Command{cmdMigrate},
+ Children: []*cmdline2.Command{cmdMigrate},
}
var (
diff --git a/go/src/v.io/x/playground/pgadmin/migrate.go b/go/src/v.io/x/playground/pgadmin/migrate.go
index fcb2b25..2897726 100644
--- a/go/src/v.io/x/playground/pgadmin/migrate.go
+++ b/go/src/v.io/x/playground/pgadmin/migrate.go
@@ -19,7 +19,7 @@
"github.com/rubenv/sql-migrate"
- "v.io/x/lib/cmdline"
+ "v.io/x/lib/cmdline2"
"v.io/x/lib/dbutil"
)
@@ -32,28 +32,28 @@
// TODO(ivanpi): Add status command and sanity checks (e.g. "skipped" migrations are incorrectly applied by rubenv/sql-migrate).
// TODO(ivanpi): Guard against version skew corrupting data (e.g. add version check to client).
-var cmdMigrate = &cmdline.Command{
+var cmdMigrate = &cmdline2.Command{
Name: "migrate",
Short: "Database schema migrations",
Long: `
See github.com/rubenv/sql-migrate
` + mysqlWarning,
- Children: []*cmdline.Command{cmdMigrateUp, cmdMigrateDown},
+ Children: []*cmdline2.Command{cmdMigrateUp, cmdMigrateDown},
}
-var cmdMigrateUp = &cmdline.Command{
- Run: runWithDBConn(runMigrate(migrate.Up)),
- Name: "up",
- Short: "Apply new database schema migrations",
+var cmdMigrateUp = &cmdline2.Command{
+ Runner: runWithDBConn(runMigrate(migrate.Up, &flagMigrationsLimitUp)),
+ Name: "up",
+ Short: "Apply new database schema migrations",
Long: `
See github.com/rubenv/sql-migrate
` + mysqlWarning,
}
-var cmdMigrateDown = &cmdline.Command{
- Run: runWithDBConn(runMigrate(migrate.Down)),
- Name: "down",
- Short: "Roll back database schema migrations",
+var cmdMigrateDown = &cmdline2.Command{
+ Runner: runWithDBConn(runMigrate(migrate.Down, &flagMigrationsLimitDown)),
+ Name: "down",
+ Short: "Roll back database schema migrations",
Long: `
See github.com/rubenv/sql-migrate
` + mysqlWarning,
@@ -66,19 +66,20 @@
)
var (
- flagMigrationsDir string
- flagMigrationsLimit int
+ flagMigrationsDir string
+ flagMigrationsLimitUp int
+ flagMigrationsLimitDown int
)
func init() {
cmdMigrate.Flags.StringVar(&flagMigrationsDir, "dir", pgMigrationsDir, "Path to directory containing migrations.")
- cmdMigrateUp.Flags.IntVar(&flagMigrationsLimit, "limit", 0, "Maximum number of up migrations to apply. 0 for unlimited.")
- cmdMigrateDown.Flags.IntVar(&flagMigrationsLimit, "limit", 1, "Maximum number of down migrations to apply. 0 for unlimited.")
+ cmdMigrateUp.Flags.IntVar(&flagMigrationsLimitUp, "limit", 0, "Maximum number of up migrations to apply. 0 for unlimited.")
+ cmdMigrateDown.Flags.IntVar(&flagMigrationsLimitDown, "limit", 1, "Maximum number of down migrations to apply. 0 for unlimited.")
}
// Returns a DBCommand for applying migrations in the provided direction.
-func runMigrate(direction migrate.MigrationDirection) DBCommand {
- return func(db *sql.DB, cmd *cmdline.Command, args []string) error {
+func runMigrate(direction migrate.MigrationDirection, limit *int) DBCommand {
+ return func(db *sql.DB, env *cmdline2.Env, args []string) error {
migrate.SetTable(migrationsTable)
source := migrate.FileMigrationSource{
@@ -86,37 +87,37 @@
}
if *flagDryRun {
- planned, _, err := migrate.PlanMigration(db, sqlDialect, source, direction, flagMigrationsLimit)
+ planned, _, err := migrate.PlanMigration(db, sqlDialect, source, direction, *limit)
if err != nil {
return fmt.Errorf("Failed getting migrations to apply: %v", err)
}
for i, m := range planned {
- fmt.Fprintf(cmd.Stdout(), "#%d: %q\n", i, m.Migration.Id)
+ fmt.Fprintf(env.Stdout, "#%d: %q\n", i, m.Migration.Id)
for _, q := range m.Queries {
- fmt.Fprint(cmd.Stdout(), q)
+ fmt.Fprint(env.Stdout, q)
}
}
return nil
} else {
- amount, err := migrate.ExecMax(db, sqlDialect, source, direction, flagMigrationsLimit)
+ amount, err := migrate.ExecMax(db, sqlDialect, source, direction, *limit)
if err != nil {
return fmt.Errorf("Migration FAILED (applied %d migrations): %v", amount, err)
}
- fmt.Fprintf(cmd.Stdout(), "Successfully applied %d migrations\n", amount)
+ fmt.Fprintf(env.Stdout, "Successfully applied %d migrations\n", amount)
return nil
}
}
}
// Command to be wrapped with runWithDBConn().
-type DBCommand func(db *sql.DB, cmd *cmdline.Command, args []string) error
+type DBCommand func(db *sql.DB, env *cmdline2.Env, args []string) error
// runWithDBConn is a wrapper method that handles opening and closing the
// database connection.
-func runWithDBConn(fx DBCommand) cmdline.Runner {
- return func(cmd *cmdline.Command, args []string) (rerr error) {
+func runWithDBConn(fx DBCommand) cmdline2.RunnerFunc {
+ return func(env *cmdline2.Env, args []string) (rerr error) {
if *flagSQLConf == "" {
- return cmd.UsageErrorf("SQL configuration file (-sqlconf) must be provided")
+ return env.UsageErrorf("SQL configuration file (-sqlconf) must be provided")
}
// Open database connection from config,
@@ -142,6 +143,6 @@
}
// Run wrapped function.
- return fx(db, cmd, args)
+ return fx(db, env, args)
}
}