forked from hidu/hsync
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhsync.go
More file actions
115 lines (101 loc) · 2.57 KB
/
hsync.go
File metadata and controls
115 lines (101 loc) · 2.57 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/**
* sync dir
* author: hidu <duv123+git@gmail.com>
* https://github.com/hidu/hsync
*/
package main
import (
"flag"
"fmt"
"os"
"github.com/golang/glog"
hsync "github.com/ketor/hsync/internal"
)
var d = flag.Bool("d", false, "run model,defaul is client")
var host = flag.String("h", "", "sync host name")
var ve = flag.Bool("version", false, "show version:"+hsync.GetVersion())
var demoConf = flag.String("demo_conf", "", "show default conf [client|server]")
var deployOnly = flag.Bool("deploy", false, "deploy all files for server.")
//add by ketor
var s = flag.String("s", "", "run simple server on addr:port")
var c = flag.String("c", "", "run simple client to addr:port")
func init() {
flag.Lookup("alsologtostderr").DefValue = "true"
flag.Set("alsologtostderr", "true")
df := flag.Usage
flag.Usage = func() {
df()
fmt.Fprintln(os.Stderr, "\n sync dir, https://github.com/ketor/hsync/")
fmt.Fprintln(os.Stderr, " as client:", os.Args[0], " [hsync.json]")
fmt.Fprintln(os.Stderr, " as server:", os.Args[0], "-d [hsyncd.json]")
fmt.Fprintln(os.Stderr, "\nSimple Usage:")
fmt.Fprintln(os.Stderr, " Simple Client: hsync -c 127.0.0.1:8700")
fmt.Fprintln(os.Stderr, " Simple Server: hsync -s :8700")
}
}
func main() {
flag.Parse()
if *ve {
fmt.Fprintln(os.Stderr, "version:", hsync.GetVersion())
os.Exit(0)
}
if *demoConf != "" {
fmt.Println(hsync.DemoConf(*demoConf))
os.Exit(0)
}
if *deployOnly {
*d = true
}
confName := flag.Arg(0)
if confName == "" {
if *d {
confName = "hsyncd.json"
} else {
confName = "hsync.json"
}
}
//run simple server
if *s != "" {
glog.Info("New simple server start")
server, err := hsync.NewSimpleHsyncServer(*s)
if err != nil {
glog.Exitln("start simple server failed:", err)
}
if *deployOnly {
server.DeployAll()
return
}
server.Start()
} else if *c != "" {
glog.Info("New simple client start")
client, err := hsync.NewSimpleHsyncClient(*c)
if err != nil {
glog.Exitln("start hsync client failed:", err)
}
client.Connect()
client.Watch()
} else {
confInfo, err := os.Stat(confName)
if err != nil || confInfo.IsDir() {
glog.Exitf("hsync conf [%s] not exists!", confName)
}
if *d {
server, err := hsync.NewHsyncServer(confName)
if err != nil {
glog.Exitln("start server failed:", err)
}
if *deployOnly {
server.DeployAll()
return
}
server.Start()
} else {
client, err := hsync.NewHsyncClient(confName, *host)
if err != nil {
glog.Exitln("start hsync client failed:", err)
}
client.Connect()
client.Watch()
}
}
}