forked from benjaminbollen/mintnet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mintnet.go
227 lines (211 loc) · 4.53 KB
/
mintnet.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
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
package main
import (
"os"
"github.com/codegangsta/cli"
)
const ValSetAnon = "anon"
var (
machFlag = cli.StringFlag{
Name: "machines",
Value: "mach[1-4]",
Usage: "Comma separated list of machine names",
}
)
func main() {
app := cli.NewApp()
app.Name = "mintnet"
app.Usage = "mintnet [command] [args...]"
app.Version = "0.0.2"
app.Commands = []cli.Command{
{
Name: "info",
Usage: "Information about running containers",
ArgsUsage: "[appName]",
Action: func(c *cli.Context) error {
cmdInfo(c)
return nil
},
Flags: []cli.Flag{machFlag},
Subcommands: []cli.Command{
{
Name: "port",
Usage: "Print container port mapping",
ArgsUsage: "[appName]",
Action: func(c *cli.Context) error {
cmdPorts(c)
return nil
},
},
},
},
{
Name: "init",
Usage: "Initialize node configuration directories",
ArgsUsage: "[baseDir]",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdInit(c)
return nil
},
Subcommands: []cli.Command{
{
Name: "chain",
Usage: "Initialize a new blockchain",
ArgsUsage: "[baseDir]",
Action: func(c *cli.Context) error {
cmdChainInit(c)
return nil
},
Flags: []cli.Flag{
cli.StringFlag{
Name: "validator-set",
Value: "",
Usage: "Specify a path to the validator set for the new chain",
},
cli.StringFlag{
Name: "app",
Value: "",
Usage: "Specify an init.sh file for the app to run",
},
cli.StringFlag{
Name: "app-hash",
Value: "",
Usage: "Specify the app's initial hash. Prefix with 0x if it's hex",
},
},
},
{
Name: "validator-set",
Usage: "Initialize a new validator set",
ArgsUsage: "[baseDir]",
Action: func(c *cli.Context) error {
cmdValidatorsInit(c)
return nil
},
Flags: []cli.Flag{
cli.IntFlag{
Name: "N",
Value: 4,
Usage: "Size of the validator set",
},
},
},
},
},
{
Name: "create",
Usage: "Create a new Tendermint network with newly provisioned machines. Use -- to pass args through to docker-machine",
ArgsUsage: "",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdCreate(c)
return nil
},
},
{
Name: "provision",
Usage: "Provision already created machines (useful if the create failed)",
ArgsUsage: "",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdProvision(c)
return nil
},
},
{
Name: "destroy",
Usage: "Destroy a Tendermint network",
ArgsUsage: "",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdDestroy(c)
return nil
},
},
{
Name: "start",
Usage: "Start blockchain application",
ArgsUsage: "[appName] [baseDir]",
Flags: []cli.Flag{
cli.StringFlag{
Name: "seeds",
Value: "",
Usage: "Comma separated list of machine names for seed, defaults to --machines",
},
cli.BoolFlag{
Name: "publish-all,P",
Usage: "Publish all exposed ports to random ports",
}, // or should we make random be default, and let users attempt to force the port?
cli.BoolFlag{
Name: "no-tmsp",
Usage: "Use a null, in-process app",
},
machFlag,
},
Action: func(c *cli.Context) error {
cmdStart(c)
return nil
},
},
{
Name: "restart",
Usage: "Re start a stopped blockchain application",
ArgsUsage: "[appName]",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdRestart(c)
return nil
},
},
{
Name: "stop",
Usage: "Stop blockchain application",
ArgsUsage: "[appName]",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdStop(c)
return nil
},
},
{
Name: "rm",
Usage: "Remove blockchain application",
Flags: []cli.Flag{
cli.BoolFlag{
Name: "force",
Usage: "Force stop app if already running",
},
machFlag,
},
Action: func(c *cli.Context) error {
cmdRm(c)
return nil
},
},
{
Name: "docker",
Usage: "Execute a docker command on all machines",
Flags: []cli.Flag{
machFlag,
},
Action: func(c *cli.Context) error {
cmdDocker(c)
return nil
},
},
}
app.Run(os.Args)
}
//--------------------------------------------------------------------------------