package conf
|
|
import (
|
"apsClient/pkg/convertx"
|
"apsClient/pkg/logx"
|
"apsClient/pkg/sqlitex"
|
"github.com/spf13/viper"
|
"log"
|
)
|
|
var (
|
// config file name
|
configName = "apsClient"
|
// config file paths
|
configPaths = []string{
|
"./",
|
"../",
|
"./conf",
|
"../conf",
|
}
|
)
|
|
type (
|
System struct {
|
Env string // 环境值 develop test public
|
Port int // 端口
|
DeviceId string //设备id
|
NetSetShellPath string //网络设置脚本路径
|
NetUpShellName string //网络停用脚本
|
NetDownShellName string //网络开启脚本
|
}
|
|
Etcd struct {
|
Endpoints []string // etcd地址
|
DialTimeout int // etcd超时时间
|
KeyPrefix string // etcd key前缀
|
Tls Tls // etcd tls配置
|
}
|
|
Tls struct {
|
CertFile string // 证书文件
|
KeyFile string // 私钥文件
|
CaFile string // ca文件
|
}
|
|
Rancher struct {
|
Url string // rancher地址
|
Token string // rancher token
|
}
|
|
K8s struct {
|
Image string // k8s deployment 镜像
|
DBHost string // db host
|
ALHost string // al host
|
Host string // host
|
IP string // tmp ip
|
}
|
|
Services struct {
|
ApsServer string
|
}
|
|
nsqConf struct {
|
NodeId string
|
NsqdAddr string
|
NsqlookupdAddr string
|
}
|
|
PLCAddressItem struct {
|
FieldName string
|
Address int
|
}
|
|
config struct {
|
// 系统配置
|
System System
|
|
// 日志
|
Log logx.Conf
|
|
// mysql配置
|
Sqlite sqlitex.Conf
|
|
//Services Address
|
Services Services
|
|
//NsqConf
|
NsqConf nsqConf
|
|
//PLC write address
|
PLCAddresses []PLCAddressItem
|
}
|
)
|
|
var (
|
Conf config
|
Viper *viper.Viper
|
)
|
|
func init() {
|
Viper = viper.New()
|
Viper.SetConfigName(configName)
|
for _, path := range configPaths {
|
Viper.AddConfigPath(path)
|
}
|
|
if err := Viper.ReadInConfig(); err != nil {
|
log.Fatalf("ReadInConfig err:%v", err)
|
}
|
|
if err := Viper.Unmarshal(&Conf); err != nil {
|
log.Fatalf("Unmarshal err:%v", err)
|
}
|
ShowConfig()
|
}
|
|
// WriteConfig 回写配置
|
func (c *config) WriteConfig() error {
|
cs := convertx.StructToMap(Conf)
|
for k, v := range cs {
|
Viper.Set(k, v)
|
}
|
return Viper.WriteConfig()
|
}
|
|
func ShowConfig() {
|
log.Println("......................................................")
|
log.Printf(" System: %+v", Conf.System)
|
log.Printf(" Log: %+v", Conf.Log)
|
log.Printf(" plc address: %+v", Conf.PLCAddresses)
|
log.Println("......................................................")
|
}
|