mirror of https://gitee.com/answerdev/answer.git
feat: rewrite config file when install config
This commit is contained in:
parent
914defc446
commit
23b4a44ce3
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue