From ceee1db8b9ecf1035ffd876ab2677528e9b108d9 Mon Sep 17 00:00:00 2001
From: Travis Ralston <travpc@gmail.com>
Date: Mon, 15 Jan 2018 22:38:50 -0700
Subject: [PATCH] Add a command line flag for using an alternative migrations
 directory

Adds a feature described in #43
---
 .../turt2live/matrix-media-repo/cmd/media_repo/main.go       | 2 ++
 src/github.com/turt2live/matrix-media-repo/config/config.go  | 5 +++++
 .../turt2live/matrix-media-repo/storage/storage.go           | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
index bd55508b..a4f8f568 100644
--- a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
+++ b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
@@ -45,9 +45,11 @@ type EmptyResponse struct{}
 
 func main() {
 	configPath := flag.String("config", "media-repo.yaml", "The path to the configuration")
+	migrationsPath := flag.String("migrations", "./migrations", "The absolute path the migrations folder")
 	flag.Parse()
 
 	config.Path = *configPath
+	config.Runtime.MigrationsPath = *migrationsPath
 
 	rtr := mux.NewRouter()
 
diff --git a/src/github.com/turt2live/matrix-media-repo/config/config.go b/src/github.com/turt2live/matrix-media-repo/config/config.go
index 58c5e2cd..ce2bc541 100644
--- a/src/github.com/turt2live/matrix-media-repo/config/config.go
+++ b/src/github.com/turt2live/matrix-media-repo/config/config.go
@@ -14,6 +14,11 @@ type HomeserverConfig struct {
 	ClientServerApi      string `yaml:"csApi"`
 }
 
+type runtimeConfig struct {
+	MigrationsPath string
+}
+var Runtime = &runtimeConfig{}
+
 type MediaRepoConfig struct {
 	General struct {
 		BindAddress  string `yaml:"bindAddress"`
diff --git a/src/github.com/turt2live/matrix-media-repo/storage/storage.go b/src/github.com/turt2live/matrix-media-repo/storage/storage.go
index 0973752b..99f36621 100644
--- a/src/github.com/turt2live/matrix-media-repo/storage/storage.go
+++ b/src/github.com/turt2live/matrix-media-repo/storage/storage.go
@@ -58,7 +58,7 @@ func OpenDatabase(connectionString string) (error) {
 	}
 
 	// Make sure the database is how we want it
-	migrator, err := gomigrate.NewMigratorWithLogger(d.db, gomigrate.Postgres{}, "./migrations", logrus.StandardLogger())
+	migrator, err := gomigrate.NewMigratorWithLogger(d.db, gomigrate.Postgres{}, config.Runtime.MigrationsPath, logrus.StandardLogger())
 	if err != nil {
 		return err
 	}
-- 
GitLab