feat: rewrite config file when install config

This commit is contained in:
LinkinStar 2022-11-04 11:30:53 +08:00
parent 914defc446
commit 23b4a44ce3
4 changed files with 55 additions and 26 deletions

View File

@ -9,7 +9,9 @@ import (
"github.com/answerdev/answer/internal/cli"
"github.com/answerdev/answer/internal/router"
"github.com/answerdev/answer/internal/service/service_config"
"github.com/answerdev/answer/pkg/writer"
"github.com/segmentfault/pacman/contrib/conf/viper"
"sigs.k8s.io/yaml"
)
// AllConfig all config
@ -48,3 +50,12 @@ func ReadConfig(configFilePath string) (c *AllConfig, err error) {
}
return c, nil
}
// RewriteConfig rewrite config file path
func RewriteConfig(configFilePath string, allConfig *AllConfig) error {
content, err := yaml.Marshal(allConfig)
if err != nil {
return err
}
return writer.ReplaceFile(configFilePath, string(content))
}

View File

@ -1,14 +1,13 @@
package cli
import (
"bufio"
"fmt"
"os"
"path/filepath"
"github.com/answerdev/answer/configs"
"github.com/answerdev/answer/i18n"
"github.com/answerdev/answer/pkg/dir"
"github.com/answerdev/answer/pkg/writer"
)
const (
@ -50,7 +49,7 @@ func InstallConfigFile(configFilePath string) error {
}
fmt.Printf("[config-file] create directory success, config file is %s\n", configFilePath)
if err := writerFile(configFilePath, string(configs.Config)); err != nil {
if err := writer.WriteFile(configFilePath, string(configs.Config)); err != nil {
fmt.Printf("[config-file] install fail %s\n", err.Error())
return fmt.Errorf("write file failed %s", err)
}
@ -87,7 +86,7 @@ func installI18nBundle() {
continue
}
fmt.Printf("[i18n] install %s bundle...\n", item.Name())
err = writerFile(path, string(content))
err = writer.WriteFile(path, string(content))
if err != nil {
fmt.Printf("[i18n] install %s bundle fail: %s\n", item.Name(), err.Error())
} else {
@ -95,21 +94,3 @@ func installI18nBundle() {
}
}
}
func writerFile(filePath, content string) error {
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0o666)
if err != nil {
return err
}
defer func() {
_ = file.Close()
}()
writer := bufio.NewWriter(file)
if _, err := writer.WriteString(content); err != nil {
return err
}
if err := writer.Flush(); err != nil {
return err
}
return nil
}

View File

@ -98,8 +98,7 @@ func InitEnvironment(ctx *gin.Context) {
return
}
err := cli.InstallConfigFile(confPath)
if err != nil {
if err := cli.InstallConfigFile(confPath); err != nil {
handler.HandleResponse(ctx, errors.BadRequest(reason.InstallConfigFailed), &InitEnvironmentResp{
Success: false,
CreateConfigFailed: true,
@ -112,8 +111,15 @@ func InitEnvironment(ctx *gin.Context) {
c, err := conf.ReadConfig(confPath)
if err != nil {
log.Errorf("read config failed %s", err)
err = errors.BadRequest(reason.ReadConfigFailed)
handler.HandleResponse(ctx, err, nil)
handler.HandleResponse(ctx, errors.BadRequest(reason.ReadConfigFailed), nil)
return
}
c.Data.Database.Driver = req.DbType
c.Data.Database.Connection = req.GetConnection()
if err := conf.RewriteConfig(confPath, c); err != nil {
log.Errorf("rewrite config failed %s", err)
handler.HandleResponse(ctx, errors.BadRequest(reason.ReadConfigFailed), nil)
return
}

31
pkg/writer/writer.go Normal file
View File

@ -0,0 +1,31 @@
package writer
import (
"bufio"
"os"
)
// ReplaceFile remove old file and write new file
func ReplaceFile(filePath, content string) error {
_ = os.Remove(filePath)
return WriteFile(filePath, content)
}
// WriteFile write file to path
func WriteFile(filePath, content string) error {
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0o666)
if err != nil {
return err
}
defer func() {
_ = file.Close()
}()
writer := bufio.NewWriter(file)
if _, err := writer.WriteString(content); err != nil {
return err
}
if err := writer.Flush(); err != nil {
return err
}
return nil
}