-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.go
71 lines (62 loc) · 1.45 KB
/
options.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
package main
import (
"fmt"
"github.com/hlhv/scribe"
"os"
// TODO: write custom implementation
"github.com/akamensky/argparse"
)
var options struct {
logLevel scribe.LogLevel
confPath string
logDirectory string
}
func ParseArgs() {
parser := argparse.NewParser("", "HLHV queen cell server")
logLevel := parser.Selector("l", "log-level", []string{
"debug",
"normal",
"error",
"none",
}, &argparse.Options{
Required: false,
Default: "normal",
Help: "The amount of logs to produce. Debug prints " +
"everything, and none prints nothing",
})
logDirectory := parser.String("L", "log-directory", &argparse.Options{
Required: false,
Help: "The directory in which to store log files. If " +
"unspecified, logs will be written to stdout",
})
confPath := parser.String("", "conf-path", &argparse.Options{
Required: false,
Default: "/etc/hlhv/hlhv.conf",
Help: "Path to the config file",
})
err := parser.Parse(os.Args)
if err != nil {
fmt.Print(parser.Usage(err))
os.Exit(1)
}
switch *logLevel {
case "debug":
options.logLevel = scribe.LogLevelDebug
break
default:
case "normal":
options.logLevel = scribe.LogLevelNormal
break
case "error":
options.logLevel = scribe.LogLevelError
break
case "none":
options.logLevel = scribe.LogLevelNone
break
}
options.confPath = *confPath
options.logDirectory = *logDirectory
if options.logDirectory != "" {
scribe.SetLogDirectory(options.logDirectory)
}
}