From cb11b18b6e9c211d0e9b6f088692c7c8cd7839a2 Mon Sep 17 00:00:00 2001 From: arekkas Date: Sun, 3 Jun 2018 14:42:34 +0200 Subject: [PATCH] cmd: Allows reading database from env in migrate sql Closes #896 --- cmd/cli/handler_migrate.go | 21 +++++++++++++++++---- cmd/migrate_sql.go | 6 ++++++ docker-compose.yml | 5 ++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/cmd/cli/handler_migrate.go b/cmd/cli/handler_migrate.go index 11443d17c13..d87c96b1183 100644 --- a/cmd/cli/handler_migrate.go +++ b/cmd/cli/handler_migrate.go @@ -36,6 +36,7 @@ import ( "github.com/ory/hydra/pkg" "github.com/pkg/errors" "github.com/spf13/cobra" + "github.com/spf13/viper" ) type MigrateHandler struct { @@ -78,12 +79,24 @@ func (h *MigrateHandler) connectToSql(dsn string) (*sqlx.DB, error) { } func (h *MigrateHandler) MigrateSQL(cmd *cobra.Command, args []string) { - if len(args) == 0 { - fmt.Println(cmd.UsageString()) - return + var dburl string + if readFromEnv, _ := cmd.Flags().GetBool("read-from-env"); readFromEnv { + if len(viper.GetString("DATABASE_URL")) == 0 { + fmt.Println(cmd.UsageString()) + fmt.Println("") + fmt.Println("When using flag -e, environment variable DATABASE_URL must be set") + return + } + dburl = viper.GetString("DATABASE_URL") + } else { + if len(args) != 1 { + fmt.Println(cmd.UsageString()) + return + } + dburl = args[0] } - db, err := h.connectToSql(args[0]) + db, err := h.connectToSql(dburl) if err != nil { fmt.Printf("An error occurred while connecting to SQL: %s", err) os.Exit(1) diff --git a/cmd/migrate_sql.go b/cmd/migrate_sql.go index 6a539079478..f092cad5a4f 100644 --- a/cmd/migrate_sql.go +++ b/cmd/migrate_sql.go @@ -32,6 +32,10 @@ upgrading Hydra 0.7.0 to 0.8.0 requires running this command. It is recommended to run this command close to the SQL instance (e.g. same subnet) instead of over the public internet. This decreases risk of failure and decreases time required. +You can read in the database URL using the -e flag, for example: + export DATABASE_URL=... + hydra migrate sql -e + ### WARNING ### Before running this command on an existing database, create a back up! @@ -41,4 +45,6 @@ Before running this command on an existing database, create a back up! func init() { migrateCmd.AddCommand(migrateSqlCmd) + + migrateSqlCmd.Flags().BoolP("read-from-env", "e", false, "If set, reads the database URL from the environment variable DATABASE_URL.") } diff --git a/docker-compose.yml b/docker-compose.yml index 5dc269b720a..f394e848051 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,8 +20,11 @@ services: dockerfile: Dockerfile links: - postgresd:postgresd + environment: +# - LOG_LEVEL=debug + - DATABASE_URL=postgres://hydra:secret@postgresd:5432/hydra?sslmode=disable command: - migrate sql postgres://hydra:secret@postgresd:5432/hydra?sslmode=disable + migrate sql -e restart: on-failure hydra: