From 2fa2d826f5ba2e79cae46c63387bbf602acd7b9b Mon Sep 17 00:00:00 2001 From: abeizn Date: Tue, 13 Jun 2023 14:54:15 +0800 Subject: [PATCH] fix: remove write file config code --- backend/core/config/config_viper.go | 100 ----------------------- backend/core/config/config_viper_test.go | 81 +----------------- backend/test/helper/client.go | 24 ++---- 3 files changed, 10 insertions(+), 195 deletions(-) diff --git a/backend/core/config/config_viper.go b/backend/core/config/config_viper.go index dae4b5153d2..d718506e19a 100644 --- a/backend/core/config/config_viper.go +++ b/backend/core/config/config_viper.go @@ -21,15 +21,9 @@ import ( "fmt" "os" "path/filepath" - "regexp" - "strings" - "github.com/apache/incubator-devlake/core/errors" "github.com/sirupsen/logrus" - goerror "github.com/cockroachdb/errors" - - "github.com/spf13/afero" "github.com/spf13/viper" ) @@ -114,100 +108,6 @@ func setDefaultValue(v *viper.Viper) { v.SetDefault("SWAGGER_DOCS_DIR", "resources/swagger") } -// replaceNewEnvItemInOldContent replace old config to new config in env file content -func replaceNewEnvItemInOldContent(v *viper.Viper, envFileContent string) (string, errors.Error) { - // prepare reg exp - encodeEnvNameReg := regexp.MustCompile(`[^a-zA-Z0-9]`) - if encodeEnvNameReg == nil { - return ``, errors.Default.New("encodeEnvNameReg err") - } - - for _, key := range v.AllKeys() { - envName := strings.ToUpper(key) - val := v.Get(envName) - encodeEnvName := encodeEnvNameReg.ReplaceAllStringFunc(envName, func(s string) string { - return fmt.Sprintf(`\%v`, s) - }) - envItemReg, err := regexp.Compile(fmt.Sprintf(`(?im)^\s*%v\s*\=.*$`, encodeEnvName)) - if err != nil { - return ``, errors.Default.Wrap(err, "regexp Compile failed") - } - envFileContent = envItemReg.ReplaceAllStringFunc(envFileContent, func(s string) string { - switch ret := val.(type) { - case string: - ret = strings.Replace(ret, `\`, `\\`, -1) - //ret = strings.Replace(ret, `=`, `\=`, -1) - //ret = strings.Replace(ret, `'`, `\'`, -1) - ret = strings.Replace(ret, `"`, `\"`, -1) - return fmt.Sprintf(`%v="%v"`, envName, ret) - default: - if val == nil { - return fmt.Sprintf(`%v=`, envName) - } - return fmt.Sprintf(`%v="%v"`, envName, ret) - } - }) - } - return envFileContent, nil -} - -// WriteConfig save viper to .env file -func WriteConfig(v *viper.Viper) errors.Error { - envPath := getEnvPath() - fileName := getConfigName() - - if envPath != "" { - fileName = envPath + string(os.PathSeparator) + fileName - } - - return WriteConfigAs(v, fileName) -} - -// WriteConfigAs save viper to custom filename -func WriteConfigAs(v *viper.Viper, filename string) errors.Error { - aferoFile := afero.NewOsFs() - fmt.Println("Attempting to write configuration to .env file.") - var configType string - - ext := filepath.Ext(filename) - if ext != "" { - configType = ext[1:] - } - if configType != "env" && configType != "dotenv" { - return errors.Convert(v.WriteConfigAs(filename)) - } - - // FIXME viper just have setter and have no getter so create new configPermissions and file - flags := os.O_CREATE | os.O_TRUNC | os.O_WRONLY - configPermissions := os.FileMode(0644) - file, err := afero.ReadFile(aferoFile, filename) - if err != nil && !goerror.Is(err, os.ErrNotExist) { - return errors.Convert(err) - } - - envFileContent := string(file) - f, err := aferoFile.OpenFile(filename, flags, configPermissions) - if err != nil { - return errors.Convert(err) - } - defer f.Close() - - for _, key := range v.AllKeys() { - envName := strings.ToUpper(key) - if !strings.Contains(envFileContent, envName) { - envFileContent = fmt.Sprintf("%s\n%s=", envFileContent, envName) - } - } - envFileContent, err = replaceNewEnvItemInOldContent(v, envFileContent) - if err != nil { - return errors.Convert(err) - } - if _, err := f.WriteString(envFileContent); err != nil { - return errors.Convert(err) - } - return errors.Convert(f.Sync()) -} - func init() { // create the object and load the .env file v = viper.New() diff --git a/backend/core/config/config_viper_test.go b/backend/core/config/config_viper_test.go index a48a948990d..a6806ee7935 100644 --- a/backend/core/config/config_viper_test.go +++ b/backend/core/config/config_viper_test.go @@ -18,46 +18,12 @@ limitations under the License. package config import ( + "testing" + "github.com/sirupsen/logrus" - "github.com/spf13/afero" "github.com/stretchr/testify/assert" - "os" - "testing" ) -func TestWriteConfig(t *testing.T) { - filename := ".env" - cwd, _ := os.Getwd() - envFilePath := cwd + string(os.PathSeparator) - os.Setenv("ENV_PATH", envFilePath) - v := GetConfig() - newDbUrl := "mysql://merico:merico@mysql:3307/lake?charset=utf8mb4&parseTime=True" - v.Set("DB_URL", newDbUrl) - fs := afero.NewOsFs() - file, _ := fs.Create(filename) - defer file.Close() - _ = WriteConfig(v) - isEmpty, _ := afero.IsEmpty(fs, filename) - assert.False(t, isEmpty) - err := fs.Remove(filename) - assert.Equal(t, err == nil, true) -} - -func TestWriteConfigAs(t *testing.T) { - filename := ".env" - v := GetConfig() - newDbUrl := "mysql://merico:merico@mysql:3307/lake?charset=utf8mb4&parseTime=True" - v.Set("DB_URL", newDbUrl) - fs := afero.NewOsFs() - file, _ := fs.Create(filename) - defer file.Close() - _ = WriteConfigAs(v, filename) - isEmpty, _ := afero.IsEmpty(fs, filename) - assert.False(t, isEmpty) - err := fs.Remove(filename) - assert.Equal(t, err == nil, true) -} - func TestSetConfigVariate(t *testing.T) { v := GetConfig() newDbUrl := "mysql://merico:merico@mysql:3307/lake?charset=utf8mb4&parseTime=True" @@ -66,46 +32,3 @@ func TestSetConfigVariate(t *testing.T) { logrus.Infof("current db url: %s\n", currentDbUrl) assert.Equal(t, currentDbUrl == newDbUrl, true) } - -func TestReplaceNewEnvItemInOldContent(t *testing.T) { - v := GetConfig() - v.Set(`aa`, `aaaa`) - v.Set(`bb`, `1#1`) - v.Set(`cc`, `1"'1`) - v.Set(`dd`, `1\"1`) - v.Set(`ee`, `=`) - v.Set(`ff`, 1.01) - v.Set(`gGg`, `gggg`) - v.Set(`h.278`, 278) - s, err := replaceNewEnvItemInOldContent(v, ` -some unuseful message -# comment -a blank - AA =123 -bB= - cc = - dd = -# some comment -eE= -ff="some content" and some comment -Ggg=132 -h.278=1 -`) - if err != nil { - panic(err) - } - assert.Equal(t, ` -some unuseful message -# comment -a blank -AA="aaaa" -BB="1#1" -CC="1\"'1" -DD="1\\\"1" -# some comment -EE="=" -FF="1.01" -GGG="gggg" -H.278="278" -`, s) -} diff --git a/backend/test/helper/client.go b/backend/test/helper/client.go index 7c0f6a5ea2c..320dee298e3 100644 --- a/backend/test/helper/client.go +++ b/backend/test/helper/client.go @@ -23,11 +23,6 @@ import ( "encoding/json" goerror "errors" "fmt" - "github.com/apache/incubator-devlake/core/dal" - dora "github.com/apache/incubator-devlake/plugins/dora/impl" - org "github.com/apache/incubator-devlake/plugins/org/impl" - refdiff "github.com/apache/incubator-devlake/plugins/refdiff/impl" - remotePlugin "github.com/apache/incubator-devlake/server/services/remote/plugin" "io" "math" "net/http" @@ -37,6 +32,12 @@ import ( "testing" "time" + "github.com/apache/incubator-devlake/core/dal" + dora "github.com/apache/incubator-devlake/plugins/dora/impl" + org "github.com/apache/incubator-devlake/plugins/org/impl" + refdiff "github.com/apache/incubator-devlake/plugins/refdiff/impl" + remotePlugin "github.com/apache/incubator-devlake/server/services/remote/plugin" + "github.com/apache/incubator-devlake/core/config" corectx "github.com/apache/incubator-devlake/core/context" "github.com/apache/incubator-devlake/core/errors" @@ -219,17 +220,8 @@ func (d *DevlakeClient) configureEncryption() { encryptionSecret := v.GetString(plugin.EncodeKeyEnvStr) // only test environment should have this set if encryptionSecret == "" { - var err errors.Error - // Randomly generate a bunch of encryption keys and set them to config - encryptionSecret, err = plugin.RandomEncryptionSecret() - if err != nil { - panic(err) - } - v.Set(plugin.EncodeKeyEnvStr, encryptionSecret) - err = config.WriteConfig(v) - if err != nil { - panic(err) - } + // default value + v.Set(plugin.EncodeKeyEnvStr, "DFLFZLMBBFDDCYWRECDCIYUROPPAKQDFQMMJEFPIKVFVHZBRGAZIHKRJIJZMOHWEVRSCETAGGONPSULGOXITVXISVCQGPSFAOGRDLUANEYDQFBDKVMYYHUZFHYVYGPPT") } }