From e504a1c6b50ad1aabfe48e0b393ff2c1d7ea66c5 Mon Sep 17 00:00:00 2001
From: Travis Ralston <travpc@gmail.com>
Date: Mon, 15 Jan 2018 22:29:56 -0700
Subject: [PATCH] Offer a command-line option to change the config path

Adds #43
---
 .gitignore                                                 | 2 +-
 .../turt2live/matrix-media-repo/cmd/media_repo/main.go     | 6 ++++++
 .../turt2live/matrix-media-repo/config/config.go           | 7 ++++---
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 57c87e13..04a48f5f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@
 /pkg
 /logs
 
-media-repo.yaml
+media-repo*.yaml
 homeserver.yaml
 
 vendor/pkg
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 a7b7c22e..bd55508b 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
@@ -2,6 +2,7 @@ package main
 
 import (
 	"encoding/json"
+	"flag"
 	"fmt"
 	"io"
 	"net/http"
@@ -43,6 +44,11 @@ type ApiRoute struct {
 type EmptyResponse struct{}
 
 func main() {
+	configPath := flag.String("config", "media-repo.yaml", "The path to the configuration")
+	flag.Parse()
+
+	config.Path = *configPath
+
 	rtr := mux.NewRouter()
 
 	err := logging.Setup(config.Get().General.LogDirectory)
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 2c7c9c5d..58c5e2cd 100644
--- a/src/github.com/turt2live/matrix-media-repo/config/config.go
+++ b/src/github.com/turt2live/matrix-media-repo/config/config.go
@@ -71,11 +71,12 @@ type MediaRepoConfig struct {
 
 var instance *MediaRepoConfig
 var singletonLock = &sync.Once{}
+var Path = "media-repo.yaml"
 
-func LoadConfig() (error) {
+func ReloadConfig() (error) {
 	c := &MediaRepoConfig{}
 
-	f, err := os.Open("media-repo.yaml")
+	f, err := os.Open(Path)
 	if err != nil {
 		return err
 	}
@@ -95,7 +96,7 @@ func LoadConfig() (error) {
 func Get() (*MediaRepoConfig) {
 	if instance == nil {
 		singletonLock.Do(func() {
-			err := LoadConfig()
+			err := ReloadConfig()
 			if err != nil {
 				panic(err)
 			}
-- 
GitLab