You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/06/08 07:01:57 UTC

[incubator-devlake] 04/04: update write config function

This is an automated email from the ASF dual-hosted git repository.

warren pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit 10bf1f962b00aa608d8b9c781b1e3130a5cb892b
Author: Mr.An <42...@users.noreply.github.com>
AuthorDate: Wed Jun 8 13:45:46 2022 +0800

    update write config function
---
 config/config.go      | 18 +++++++++++++++---
 config/config_test.go | 12 ++----------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/config/config.go b/config/config.go
index 78f11c23..9e57cf96 100644
--- a/config/config.go
+++ b/config/config.go
@@ -43,7 +43,7 @@ func GetConfig() *viper.Viper {
 func initConfig(v *viper.Viper) {
 	v.SetConfigName(getConfigName())
 	v.SetConfigType("env")
-	envPath := os.Getenv("ENV_PATH")
+	envPath := getEnvPath()
 	// AddConfigPath adds a path for Viper to search for the config file in.
 	if envPath == "" {
 		v.AddConfigPath("$PWD/../..")
@@ -58,6 +58,12 @@ func getConfigName() string {
 	return CONFIG_NAME
 }
 
+// return the env path
+func getEnvPath() string {
+	envPath := os.Getenv("ENV_PATH")
+	return filepath.Dir(envPath)
+}
+
 // Set default value for no .env or .env not set it
 func setDefaultValue(v *viper.Viper) {
 	v.SetDefault("DB_URL", "mysql://merico:merico@mysql:3306/lake?charset=utf8mb4&parseTime=True")
@@ -107,8 +113,14 @@ func replaceNewEnvItemInOldContent(v *viper.Viper, envFileContent string) (error
 
 // WriteConfig save viper to .env file
 func WriteConfig(v *viper.Viper) error {
-	initConfig(v)
-	return WriteConfigAs(v, getConfigName())
+	envPath := getEnvPath()
+	fileName := getConfigName()
+
+	if envPath != "" {
+		fileName = envPath + string(os.PathSeparator) + fileName
+	}
+
+	return WriteConfigAs(v, fileName)
 }
 
 // WriteConfigAs save viper to custom filename
diff --git a/config/config_test.go b/config/config_test.go
index 9928a7f1..43b0eb84 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -20,7 +20,6 @@ package config
 import (
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/afero"
-	"github.com/spf13/viper"
 	"github.com/stretchr/testify/assert"
 	"os"
 	"testing"
@@ -37,7 +36,7 @@ func TestReadConfig(t *testing.T) {
 func TestWriteConfig(t *testing.T) {
 	filename := ".env"
 	cwd, _ := os.Getwd()
-	envFilePath := cwd + string(os.PathSeparator) + filename
+	envFilePath := cwd + string(os.PathSeparator)
 	os.Setenv("ENV_PATH", envFilePath)
 	v := GetConfig()
 	newDbUrl := "mysql://merico:merico@mysql:3307/lake?charset=utf8mb4&parseTime=True"
@@ -48,14 +47,7 @@ func TestWriteConfig(t *testing.T) {
 	_ = WriteConfig(v)
 	isEmpty, _ := afero.IsEmpty(fs, filename)
 	assert.False(t, isEmpty)
-	configNew := viper.New()
-	configNew.SetConfigFile(envFilePath)
-	err := configNew.ReadInConfig()
-	assert.Equal(t, nil, err)
-
-	bar := configNew.GetString("DB_URL")
-	assert.Equal(t, newDbUrl, bar)
-	err = fs.Remove(filename)
+	err := fs.Remove(filename)
 	assert.Equal(t, err == nil, true)
 }