config.go 2.9 KB
Newer Older
m0_58228130's avatar
m0_58228130 已提交
1 2 3
package commandConfig

import (
m0_58228130's avatar
m0_58228130 已提交
4
	"bytes"
m0_58228130's avatar
m0_58228130 已提交
5
	"fmt"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
6 7 8
	commConsts "github.com/easysoft/zentaoatf/internal/pkg/consts"
	configHelper "github.com/easysoft/zentaoatf/internal/pkg/helper/config"
	langHelper "github.com/easysoft/zentaoatf/internal/pkg/helper/lang"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9
	serverConfig "github.com/easysoft/zentaoatf/internal/server/config"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10 11 12 13 14 15 16
	"github.com/easysoft/zentaoatf/pkg/consts"
	commonUtils "github.com/easysoft/zentaoatf/pkg/lib/common"
	"github.com/easysoft/zentaoatf/pkg/lib/display"
	fileUtils "github.com/easysoft/zentaoatf/pkg/lib/file"
	i118Utils "github.com/easysoft/zentaoatf/pkg/lib/i118"
	logUtils "github.com/easysoft/zentaoatf/pkg/lib/log"
	resUtils "github.com/easysoft/zentaoatf/pkg/lib/res"
m0_58228130's avatar
m0_58228130 已提交
17
	"github.com/fatih/color"
m0_58228130's avatar
m0_58228130 已提交
18
	"github.com/spf13/viper"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
19
	"log"
m0_58228130's avatar
m0_58228130 已提交
20 21
	"os"
	"path/filepath"
m0_58228130's avatar
m0_58228130 已提交
22 23 24
	"reflect"
)

m0_58228130's avatar
m0_58228130 已提交
25 26
func InitConfig() {
	commConsts.IsRelease = commonUtils.IsRelease()
m0_58228130's avatar
m0_58228130 已提交
27

m0_58228130's avatar
m0_58228130 已提交
28
	commConsts.WorkDir = fileUtils.GetWorkDir()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
29
	commConsts.ZtfDir = fileUtils.GetZTFDir()
m0_58228130's avatar
m0_58228130 已提交
30

31
	if !commConsts.IsRelease {
32 33 34
		log.Println("WorkDir=" + commConsts.WorkDir)
		log.Println("ZtfDir=" + commConsts.ZtfDir)
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
35

aaronchen2k2k's avatar
aaronchen2k2k 已提交
36
	commConsts.ConfigPath = filepath.Join(commConsts.WorkDir, commConsts.ConfigDir, commConsts.ConfigFile)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
37
	if commConsts.IsRelease {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
38
		commConsts.ConfigPath = filepath.Join(commConsts.ZtfDir, commConsts.ConfigDir, commConsts.ConfigFile)
m0_58228130's avatar
m0_58228130 已提交
39
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
40

aaronchen2k2k's avatar
aaronchen2k2k 已提交
41
	config := configHelper.LoadByConfigPath(commConsts.ConfigPath)
aaronchen2k2k's avatar
package  
aaronchen2k2k 已提交
42 43 44
	if config.Language != "" {
		commConsts.Language = config.Language
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
45

m0_58228130's avatar
m0_58228130 已提交
46 47 48 49 50 51 52 53 54 55 56 57 58 59
	v := viper.New()
	serverConfig.VIPER = v
	serverConfig.VIPER.SetConfigType("yaml")

	configRes := filepath.Join("res", commConsts.AppServer+".yaml")
	yamlDefault, _ := resUtils.ReadRes(configRes)

	if err := serverConfig.VIPER.ReadConfig(bytes.NewBuffer(yamlDefault)); err != nil {
		panic(fmt.Errorf("读取默认配置文件错误: %w ", err))
	}

	if err := serverConfig.VIPER.Unmarshal(&serverConfig.CONFIG); err != nil {
		panic(fmt.Errorf("同步配置文件错误: %w ", err))
	}
m0_58228130's avatar
m0_58228130 已提交
60

m0_58228130's avatar
m0_58228130 已提交
61 62 63 64 65 66 67
	return
}

func Init() {
	InitConfig()
	serverConfig.InitLog()

m0_58228130's avatar
m0_58228130 已提交
68
	CheckConfigPermission()
m0_58228130's avatar
m0_58228130 已提交
69 70 71 72 73

	InitScreenSize()

	i118Utils.Init(commConsts.Language, commConsts.AppServer)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
74
	langHelper.GetExtToNameMap()
m0_58228130's avatar
m0_58228130 已提交
75

aaronchen2k2k's avatar
aaronchen2k2k 已提交
76
	commConsts.ExecFrom = commConsts.FromCmd
m0_58228130's avatar
m0_58228130 已提交
77 78
	return
}
m0_58228130's avatar
m0_58228130 已提交
79 80 81 82 83 84 85 86 87

func CheckConfigPermission() {
	err := fileUtils.MkDirIfNeeded(commConsts.WorkDir + "conf")
	if err != nil {
		msg := i118Utils.Sprintf("perm_deny", commConsts.WorkDir)
		logUtils.ExecConsolef(color.FgRed, msg)
		os.Exit(0)
	}
}
m0_58228130's avatar
m0_58228130 已提交
88 89
func InitScreenSize() {
	w, h := display.GetScreenSize()
m0_58228130's avatar
m0_58228130 已提交
90 91
	consts.ScreenWidth = w
	consts.ScreenHeight = h
m0_58228130's avatar
m0_58228130 已提交
92 93 94
}

func PrintCurrConfig() {
m0_58228130's avatar
m0_58228130 已提交
95
	logUtils.ExecConsole(color.FgCyan, "\n"+i118Utils.Sprintf("current_config"))
aaronchen2k2k's avatar
aaronchen2k2k 已提交
96
	conf := configHelper.LoadByWorkspacePath(commConsts.ZtfDir)
m0_58228130's avatar
m0_58228130 已提交
97
	val := reflect.ValueOf(conf)
m0_58228130's avatar
m0_58228130 已提交
98
	typeOfS := val.Type()
m0_58228130's avatar
m0_58228130 已提交
99
	for i := 0; i < reflect.ValueOf(conf).NumField(); i++ {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
100
		if !commonUtils.IsWin() && i >= 4 {
m0_58228130's avatar
m0_58228130 已提交
101 102 103 104 105 106 107 108 109
			break
		}

		val := val.Field(i)
		name := typeOfS.Field(i).Name

		fmt.Printf("  %s: %v \n", name, val.Interface())
	}
}