ソースを参照

chore: moved config ceremony functions into separate file

Fela Maslen 5 年 前
コミット
859b2ed8ba
2 ファイル変更104 行追加101 行削除
  1. 103 0
      music-player/pkg/config/config.go
  2. 1 101
      music-player/pkg/config/main.go

+ 103 - 0
music-player/pkg/config/config.go

@@ -0,0 +1,103 @@
+package config
+
+import (
+	"fmt"
+	"log"
+	"os"
+	"path/filepath"
+	"strconv"
+
+	"github.com/joho/godotenv"
+
+	"github.com/felamaslen/go-music-player/pkg/logger"
+)
+
+var envLoaded = false
+
+func getEnvFile() (string, bool) {
+  goEnv, _ := os.LookupEnv("GO_ENV")
+
+  switch goEnv {
+  case "test":
+    return "test.env", true
+  case "development":
+    return ".env", true
+  default:
+    return "", false
+  }
+}
+
+func loadEnv() {
+  envFileBase, loadEnvFile := getEnvFile()
+  cwd, _ := os.Getwd()
+  envFile := filepath.Join(cwd, envFileBase)
+  if loadEnvFile {
+    err := godotenv.Load(envFile)
+    if err != nil {
+      log.Printf("Error loading dotenv file: %v\n", err)
+    } else {
+      envLoaded = true
+    }
+  }
+}
+
+func getDatabaseUrl() string {
+  host, hasHost := os.LookupEnv("POSTGRES_HOST")
+  if !hasHost {
+    log.Fatal("Must set POSTGRES_HOST")
+  }
+
+  user := os.Getenv("POSTGRES_USER")
+  password := os.Getenv("POSTGRES_PASSWORD")
+  port, hasPort := os.LookupEnv("POSTGRES_PORT")
+  if !hasPort {
+    port = "5432"
+  }
+  portNumeric, err := strconv.Atoi(port)
+  if err != nil {
+    log.Fatal("POSTGRES_PORT must be numeric")
+  }
+
+  database, hasDatabase := os.LookupEnv("POSTGRES_DATABASE")
+  if !hasDatabase {
+    log.Fatal("Must set POSTGRES_DATABASE")
+  }
+
+  databaseUrl := fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=disable", user, password, host, portNumeric, database)
+
+  return databaseUrl
+}
+
+const defaultLogLevel = logger.LevelInfo
+
+func getLogLevel() logger.LogLevel {
+  level, hasLevel := os.LookupEnv("LOG_LEVEL")
+  if !hasLevel {
+    return defaultLogLevel
+  }
+  levelInt, err := strconv.Atoi(level)
+  if err != nil {
+    return defaultLogLevel
+  }
+  switch levelInt {
+  case 0:
+    return logger.LevelNone
+  case 1:
+    return logger.LevelError
+  case 2:
+    return logger.LevelWarn
+  case 3:
+    return logger.LevelInfo
+  case 4:
+    return logger.LevelVerbose
+  case 5:
+    return logger.LevelDebug
+  }
+  return defaultLogLevel
+}
+
+type config struct {
+  DatabaseUrl string
+  LogLevel logger.LogLevel
+  LibraryDirectory string
+}

+ 1 - 101
music-player/pkg/config/main.go

@@ -1,106 +1,6 @@
 package config
 
-import (
-	"fmt"
-	"log"
-	"os"
-	"path/filepath"
-	"strconv"
-
-	"github.com/joho/godotenv"
-
-	"github.com/felamaslen/go-music-player/pkg/logger"
-)
-
-func getEnvFile() (string, bool) {
-  goEnv, _ := os.LookupEnv("GO_ENV")
-
-  switch goEnv {
-  case "test":
-    return "test.env", true
-  case "development":
-    return ".env", true
-  default:
-    return "", false
-  }
-}
-
-var envLoaded = false
-
-func loadEnv() {
-  envFileBase, loadEnvFile := getEnvFile()
-  cwd, _ := os.Getwd()
-  envFile := filepath.Join(cwd, envFileBase)
-  if loadEnvFile {
-    err := godotenv.Load(envFile)
-    if err != nil {
-      log.Printf("Error loading dotenv file: %v\n", err)
-    } else {
-      envLoaded = true
-    }
-  }
-}
-
-func getDatabaseUrl() string {
-  host, hasHost := os.LookupEnv("POSTGRES_HOST")
-  if !hasHost {
-    log.Fatal("Must set POSTGRES_HOST")
-  }
-
-  user := os.Getenv("POSTGRES_USER")
-  password := os.Getenv("POSTGRES_PASSWORD")
-  port, hasPort := os.LookupEnv("POSTGRES_PORT")
-  if !hasPort {
-    port = "5432"
-  }
-  portNumeric, err := strconv.Atoi(port)
-  if err != nil {
-    log.Fatal("POSTGRES_PORT must be numeric")
-  }
-
-  database, hasDatabase := os.LookupEnv("POSTGRES_DATABASE")
-  if !hasDatabase {
-    log.Fatal("Must set POSTGRES_DATABASE")
-  }
-
-  databaseUrl := fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=disable", user, password, host, portNumeric, database)
-
-  return databaseUrl
-}
-
-const defaultLogLevel = logger.LevelInfo
-
-func getLogLevel() logger.LogLevel {
-  level, hasLevel := os.LookupEnv("LOG_LEVEL")
-  if !hasLevel {
-    return defaultLogLevel
-  }
-  levelInt, err := strconv.Atoi(level)
-  if err != nil {
-    return defaultLogLevel
-  }
-  switch levelInt {
-  case 0:
-    return logger.LevelNone
-  case 1:
-    return logger.LevelError
-  case 2:
-    return logger.LevelWarn
-  case 3:
-    return logger.LevelInfo
-  case 4:
-    return logger.LevelVerbose
-  case 5:
-    return logger.LevelDebug
-  }
-  return defaultLogLevel
-}
-
-type config struct {
-  DatabaseUrl string
-  LogLevel logger.LogLevel
-  LibraryDirectory string
-}
+import "os"
 
 func GetConfig() config {
   if !envLoaded {