forked from baetyl/baetyl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
71 lines (64 loc) · 1.53 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
67
68
69
70
71
package main
import (
"flag"
"fmt"
"os"
"os/signal"
"path"
"path/filepath"
"syscall"
openedge "github.com/baidu/openedge/api/go"
"github.com/baidu/openedge/master"
_ "github.com/baidu/openedge/master/engine/docker"
_ "github.com/baidu/openedge/master/engine/native"
)
// compile variables
var (
Version string
BuildTime string
GoVersion string
)
const defaultConfig = "etc/openedge/openedge.yml"
func main() {
exe, err := os.Executable()
if err != nil {
openedge.Fatalln("get executable path fail:", err.Error())
}
exe, err = filepath.EvalSymlinks(exe)
if err != nil {
openedge.Fatalln("get realpath of executable fail:", err.Error())
}
workdir := path.Dir(path.Dir(exe))
var flagW = flag.String("w", workdir, "working directory")
var flagC = flag.String("c", defaultConfig, "config file path")
var flagH = flag.Bool("h", false, "show this help")
flag.Parse()
if *flagH {
fmt.Fprintf(
flag.CommandLine.Output(),
"OpenEdge version %s\nbuild time %s\n%s\n\n",
Version,
BuildTime,
GoVersion,
)
flag.Usage()
return
}
workdir, err = filepath.Abs(*flagW)
if err != nil {
openedge.Fatalln("get absolute path of workdir fail:", err.Error())
}
err = os.Chdir(workdir)
if err != nil {
openedge.Fatalln("change dir to workdir fail:", err.Error())
}
m, err := master.New(workdir, *flagC)
if err != nil {
openedge.Fatalln("failed to create master:", err.Error())
}
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGTERM, syscall.SIGINT)
signal.Ignore(syscall.SIGPIPE)
<-sig
m.Close()
}