package config

import (
	"fmt"
	"github.com/spf13/cast"
	"os"
	"sync"
	"time"

	"github.com/joho/godotenv"
	"github.com/sirupsen/logrus"
)

var initOnce sync.Once
var SystemId int64

func Init(cfgfile string) {
	initOnce.Do(func() {

		envFilename := cfgfile
		// if SysType == "windows" {
		// 	envFilename = "local.env"
		// 	// go run main.go -c local67.env
		// 	flag.StringVar(&envFilename, "c", "local.env", "配置环境")
		// 	flag.Parse()
		// }

		fmt.Printf("当前运行环境为：%v, 加载的环境变量路径为：%v, 运行路径为：%v \r\n", SysType, envFilename, RootPtah)

		if err := godotenv.Load(envFilename); err != nil {
			logrus.Panic("本地环境加载失败", err)
			return
		}

		// 全局修改为上海时区
		time.Local, _ = time.LoadLocation("Asia/Shanghai")

		// 读取翻译文件
		if err := LoadLocales("manifest/locales/zh-cn.yaml"); err != nil {
			logrus.Panic("翻译文件加载失败", err)
		}

		BuildLogger()
		InitDatabase()
		InitRedis()
		InitCache()
		InitNats()
		InitEtcd()
		//InitElastic()
		//InitCOSClient()
		InitEntranceIamClient()

		// 初始化系统id
		SystemId = cast.ToInt64(os.Getenv("SYSTEM_ID"))
	})
}
