-
Notifications
You must be signed in to change notification settings - Fork 2
/
config.go
98 lines (81 loc) · 1.87 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package config
import (
"github.com/go-well/spider/internal/args"
"gopkg.in/yaml.v3"
"log"
"os"
)
func Existing() bool {
return existing
}
var existing = false
//Configure 配置
type Configure struct {
Node string `yaml:"node" json:"node"`
Data string `yaml:"data" json:"data"`
Addr string `yaml:"addr" json:"addr"`
DefaultPassword string `yaml:"default_password" json:"default_password"`
Web Web `yaml:"web" json:"web"`
Database Database `yaml:"database" json:"database"`
Log Log `yaml:"log" json:"log"`
//Serials []string `yaml:"serials" json:"serials"`
}
//Config 全局配置
var Config = Configure{
Node: "root",
Data: "data",
Addr: ":1206",
DefaultPassword: "123456",
Web: WebDefault,
Database: DatabaseDefault,
Log: LogDefault,
}
func init() {
Config.Node, _ = os.Hostname()
}
//Load 加载
func Load() error {
//log.Println("加载配置")
//从参数中读取配置文件名
filename := args.ConfigPath
// 如果没有文件,则使用默认信息创建
if _, err := os.Stat(filename); os.IsNotExist(err) {
//return Store()
return nil
} else {
y, err := os.Open(filename)
if err != nil {
log.Fatal(err)
return err
}
defer y.Close()
d := yaml.NewDecoder(y)
err = d.Decode(&Config)
if err != nil {
log.Fatal(err)
return err
}
existing = true
return nil
}
}
func Store() error {
//log.Println("保存配置")
//从参数中读取配置文件名
filename := args.ConfigPath
y, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0755) //os.Create(filename)
if err != nil {
log.Fatal(err)
return err
}
defer y.Close()
e := yaml.NewEncoder(y)
defer e.Close()
err = e.Encode(&Config)
if err != nil {
log.Fatal(err)
return err
}
existing = true
return nil
}