-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconfig.go
82 lines (74 loc) · 1.53 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
package main
import (
"encoding/json"
"flag"
"log"
"os"
)
type Config struct {
Url string
Username string
Password string
Cams []Cam
}
type Cam struct {
Ip string
Username string
Password string
Name string
W uint
H uint
Interval uint
}
var configFlag = flag.String("c", "hikmqtt.json", "config file")
var urlFlag = flag.String("s", "", "MQTT server url")
var usernameFlag = flag.String("u", "", "MQTT username")
var passwordFlag = flag.String("p", "", "MQTT password")
var camipFlag = flag.String("ci", "", "Camera ip")
var camuserFlag = flag.String("cu", "", "Camera username")
var campassFlag = flag.String("cp", "", "Camera password")
var helpFlag = flag.Bool("h", false, "Help")
var cfg Config
func config() int {
flag.Parse()
if *helpFlag {
flag.PrintDefaults()
return -1
}
bt, err := os.ReadFile(*configFlag)
if err == nil {
err = json.Unmarshal(bt, &cfg)
if err != nil {
log.Printf("Error parsing config: %s\n", err)
return -2
}
} else {
log.Println("Config not found.")
}
// cfg = Config{
// Url: *urlFlag,
// Username: *usernameFlag,
// Password: *passwordFlag,
// }
if *urlFlag != "" {
cfg.Url = *urlFlag
}
if *usernameFlag != "" {
cfg.Username = *usernameFlag
}
if *passwordFlag != "" {
cfg.Password = *passwordFlag
}
if *camipFlag != "" {
cfg.Cams = append(cfg.Cams, Cam{
Ip: *camipFlag,
Username: *camuserFlag,
Password: *campassFlag,
})
}
if len(cfg.Cams) == 0 {
log.Println("Cam not defined.")
return -3
}
return 0
}