-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
66 lines (63 loc) · 1.25 KB
/
main.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
package main
import (
"flag"
"fmt"
"log"
"os"
"runtime"
"github.com/powerpuffpenguin/streamf/config"
"github.com/powerpuffpenguin/streamf/forwarding"
ver "github.com/powerpuffpenguin/streamf/version"
)
func main() {
var (
conf string
version, help, print bool
logLevel string
)
flag.StringVar(&conf, "conf", "", "Load config file path")
flag.StringVar(&logLevel, "log", "", "Log level [debug info warn error]")
flag.BoolVar(&version, "version", false, "Show version")
flag.BoolVar(&help, "help", false, "Show help")
flag.BoolVar(&print, "print", false, "Print config to json")
flag.Parse()
if version {
fmt.Printf(`streamf-%s
%s/%s, %s, %s, %s
`,
ver.Version,
runtime.GOOS, runtime.GOARCH,
runtime.Version(),
ver.Date, ver.Commit,
)
return
} else if help {
flag.PrintDefaults()
return
} else if conf == `` {
flag.PrintDefaults()
os.Exit(1)
}
log.SetFlags(log.Lshortfile | log.LstdFlags)
var c config.Config
if print {
e := c.Print(conf)
if e != nil {
log.Fatalln(e)
}
return
} else {
e := c.Load(conf)
if e != nil {
log.Fatalln(e)
}
}
if logLevel != `` {
c.Logger.Level = logLevel
}
app, e := forwarding.NewApplication(&c)
if e != nil {
return
}
app.Serve()
}