@@ -15,7 +15,8 @@ const (
1515 MAINNET_MAGIC = 764824073
1616)
1717
18- type cmdFlags struct {
18+ type globalFlags struct {
19+ flagset * flag.FlagSet
1920 socket string
2021 address string
2122 useTls bool
@@ -26,20 +27,30 @@ type cmdFlags struct {
2627 syncEra string
2728}
2829
30+ func newGlobalFlags () * globalFlags {
31+ f := & globalFlags {
32+ flagset : flag .NewFlagSet (os .Args [0 ], flag .ExitOnError ),
33+ }
34+ f .flagset .StringVar (& f .socket , "socket" , "" , "UNIX socket path to connect to" )
35+ f .flagset .StringVar (& f .address , "address" , "" , "TCP address to connect to in address:port format" )
36+ f .flagset .BoolVar (& f .useTls , "tls" , false , "enable TLS" )
37+ f .flagset .BoolVar (& f .ntnProto , "ntn" , false , "use node-to-node protocol (defaults to node-to-client)" )
38+ f .flagset .IntVar (& f .networkMagic , "network-magic" , 0 , "network magic value" )
39+ f .flagset .BoolVar (& f .testnet , "testnet" , false , fmt .Sprintf ("alias for -network-magic=%d" , TESTNET_MAGIC ))
40+ f .flagset .BoolVar (& f .mainnet , "mainnet" , false , fmt .Sprintf ("alias for -network-magic=%d" , MAINNET_MAGIC ))
41+ f .flagset .StringVar (& f .syncEra , "sync-era" , "byron" , "era which to start chain-sync at" )
42+ return f
43+ }
44+
2945func main () {
30- f := cmdFlags {}
31- flag .StringVar (& f .socket , "socket" , "" , "UNIX socket path to connect to" )
32- flag .StringVar (& f .address , "address" , "" , "TCP address to connect to in address:port format" )
33- flag .BoolVar (& f .useTls , "tls" , false , "enable TLS" )
34- flag .BoolVar (& f .ntnProto , "ntn" , false , "use node-to-node protocol (defaults to node-to-client)" )
35- flag .IntVar (& f .networkMagic , "network-magic" , 0 , "network magic value" )
36- flag .BoolVar (& f .testnet , "testnet" , false , fmt .Sprintf ("alias for -network-magic=%d" , TESTNET_MAGIC ))
37- flag .BoolVar (& f .mainnet , "mainnet" , false , fmt .Sprintf ("alias for -network-magic=%d" , MAINNET_MAGIC ))
38- flag .StringVar (& f .syncEra , "sync-era" , "byron" , "era which to start chain-sync at" )
39- flag .Parse ()
46+ f := newGlobalFlags ()
47+ err := f .flagset .Parse (os .Args [1 :])
48+ if err != nil {
49+ fmt .Printf ("failed to parse command args: %s\n " , err )
50+ os .Exit (1 )
51+ }
4052
4153 var conn io.ReadWriteCloser
42- var err error
4354 var dialProto string
4455 var dialAddress string
4556 if f .socket != "" {
@@ -75,13 +86,14 @@ func main() {
7586 }
7687 errorChan := make (chan error , 10 )
7788 oOpts := & ouroboros.OuroborosOptions {
78- Conn : conn ,
79- NetworkMagic : uint32 (f .networkMagic ),
80- ErrorChan : errorChan ,
81- UseNodeToNodeProtocol : f .ntnProto ,
82- SendKeepAlives : true ,
83- ChainSyncCallbackConfig : buildChainSyncCallbackConfig (),
84- BlockFetchCallbackConfig : buildBlockFetchCallbackConfig (),
89+ Conn : conn ,
90+ NetworkMagic : uint32 (f .networkMagic ),
91+ ErrorChan : errorChan ,
92+ UseNodeToNodeProtocol : f .ntnProto ,
93+ SendKeepAlives : true ,
94+ ChainSyncCallbackConfig : buildChainSyncCallbackConfig (),
95+ BlockFetchCallbackConfig : buildBlockFetchCallbackConfig (),
96+ LocalTxSubmissionCallbackConfig : buildLocalTxSubmissionCallbackConfig (),
8597 }
8698 go func () {
8799 for {
@@ -95,5 +107,18 @@ func main() {
95107 fmt .Printf ("ERROR: %s\n " , err )
96108 os .Exit (1 )
97109 }
98- testChainSync (o , f )
110+ if len (f .flagset .Args ()) > 0 {
111+ switch f .flagset .Arg (0 ) {
112+ case "chain-sync" :
113+ testChainSync (o , f )
114+ case "local-tx-submission" :
115+ testLocalTxSubmission (o , f )
116+ default :
117+ fmt .Printf ("Unknown subcommand: %s\n " , f .flagset .Arg (0 ))
118+ os .Exit (1 )
119+ }
120+ } else {
121+ fmt .Printf ("You must specify a subcommand (chain-sync or local-tx-submission)\n " )
122+ os .Exit (1 )
123+ }
99124}
0 commit comments