@@ -56,19 +56,58 @@ import (
56
56
57
57
var client * simulations.Client
58
58
59
+ var (
60
+ // global command flags
61
+ apiFlag = cli.StringFlag {
62
+ Name : "api" ,
63
+ Value : "http://localhost:8888" ,
64
+ Usage : "simulation API URL" ,
65
+ EnvVar : "P2PSIM_API_URL" ,
66
+ }
67
+
68
+ // events subcommand flags
69
+ currentFlag = cli.BoolFlag {
70
+ Name : "current" ,
71
+ Usage : "get existing nodes and conns first" ,
72
+ }
73
+ filterFlag = cli.StringFlag {
74
+ Name : "filter" ,
75
+ Value : "" ,
76
+ Usage : "message filter" ,
77
+ }
78
+
79
+ // node create subcommand flags
80
+ nameFlag = cli.StringFlag {
81
+ Name : "name" ,
82
+ Value : "" ,
83
+ Usage : "node name" ,
84
+ }
85
+ servicesFlag = cli.StringFlag {
86
+ Name : "services" ,
87
+ Value : "" ,
88
+ Usage : "node services (comma separated)" ,
89
+ }
90
+ keyFlag = cli.StringFlag {
91
+ Name : "key" ,
92
+ Value : "" ,
93
+ Usage : "node private key (hex encoded)" ,
94
+ }
95
+
96
+ // node rpc subcommand flags
97
+ subscribeFlag = cli.BoolFlag {
98
+ Name : "subscribe" ,
99
+ Usage : "method is a subscription" ,
100
+ }
101
+ )
102
+
59
103
func main () {
60
104
app := cli .NewApp ()
61
105
app .Usage = "devp2p simulation command-line client"
62
106
app .Flags = []cli.Flag {
63
- cli.StringFlag {
64
- Name : "api" ,
65
- Value : "http://localhost:8888" ,
66
- Usage : "simulation API URL" ,
67
- EnvVar : "P2PSIM_API_URL" ,
68
- },
107
+ apiFlag ,
69
108
}
70
109
app .Before = func (ctx * cli.Context ) error {
71
- client = simulations .NewClient (ctx .GlobalString ("api" ))
110
+ client = simulations .NewClient (ctx .GlobalString (apiFlag . Name ))
72
111
return nil
73
112
}
74
113
app .Commands = []cli.Command {
@@ -82,15 +121,8 @@ func main() {
82
121
Usage : "stream network events" ,
83
122
Action : streamNetwork ,
84
123
Flags : []cli.Flag {
85
- cli.BoolFlag {
86
- Name : "current" ,
87
- Usage : "get existing nodes and conns first" ,
88
- },
89
- cli.StringFlag {
90
- Name : "filter" ,
91
- Value : "" ,
92
- Usage : "message filter" ,
93
- },
124
+ currentFlag ,
125
+ filterFlag ,
94
126
},
95
127
},
96
128
{
@@ -118,21 +150,9 @@ func main() {
118
150
Usage : "create a node" ,
119
151
Action : createNode ,
120
152
Flags : []cli.Flag {
121
- cli.StringFlag {
122
- Name : "name" ,
123
- Value : "" ,
124
- Usage : "node name" ,
125
- },
126
- cli.StringFlag {
127
- Name : "services" ,
128
- Value : "" ,
129
- Usage : "node services (comma separated)" ,
130
- },
131
- cli.StringFlag {
132
- Name : "key" ,
133
- Value : "" ,
134
- Usage : "node private key (hex encoded)" ,
135
- },
153
+ nameFlag ,
154
+ servicesFlag ,
155
+ keyFlag ,
136
156
},
137
157
},
138
158
{
@@ -171,10 +191,7 @@ func main() {
171
191
Usage : "call a node RPC method" ,
172
192
Action : rpcNode ,
173
193
Flags : []cli.Flag {
174
- cli.BoolFlag {
175
- Name : "subscribe" ,
176
- Usage : "method is a subscription" ,
177
- },
194
+ subscribeFlag ,
178
195
},
179
196
},
180
197
},
@@ -207,8 +224,8 @@ func streamNetwork(ctx *cli.Context) error {
207
224
}
208
225
events := make (chan * simulations.Event )
209
226
sub , err := client .SubscribeNetwork (events , simulations.SubscribeOpts {
210
- Current : ctx .Bool ("current" ),
211
- Filter : ctx .String ("filter" ),
227
+ Current : ctx .Bool (currentFlag . Name ),
228
+ Filter : ctx .String (filterFlag . Name ),
212
229
})
213
230
if err != nil {
214
231
return err
@@ -279,16 +296,16 @@ func createNode(ctx *cli.Context) error {
279
296
return cli .ShowCommandHelp (ctx , ctx .Command .Name )
280
297
}
281
298
config := adapters .RandomNodeConfig ()
282
- config .Name = ctx .String ("name" )
283
- if key := ctx .String ("key" ); key != "" {
299
+ config .Name = ctx .String (nameFlag . Name )
300
+ if key := ctx .String (keyFlag . Name ); key != "" {
284
301
privKey , err := crypto .HexToECDSA (key )
285
302
if err != nil {
286
303
return err
287
304
}
288
305
config .ID = enode .PubkeyToIDV4 (& privKey .PublicKey )
289
306
config .PrivateKey = privKey
290
307
}
291
- if services := ctx .String ("services" ); services != "" {
308
+ if services := ctx .String (servicesFlag . Name ); services != "" {
292
309
config .Lifecycles = strings .Split (services , "," )
293
310
}
294
311
node , err := client .CreateNode (config )
@@ -389,7 +406,7 @@ func rpcNode(ctx *cli.Context) error {
389
406
if err != nil {
390
407
return err
391
408
}
392
- if ctx .Bool ("subscribe" ) {
409
+ if ctx .Bool (subscribeFlag . Name ) {
393
410
return rpcSubscribe (rpcClient , ctx .App .Writer , method , args [3 :]... )
394
411
}
395
412
var result interface {}
0 commit comments