|
5 | 5 | structopt::StructOpt,
|
6 | 6 | };
|
7 | 7 |
|
8 |
| -/// StructOpt definitions that provides the following arguments and commands: |
9 |
| -/// |
10 |
| -/// Some of these arguments are not currently used, but are included for future use to guide the |
11 |
| -/// structure of the application. |
| 8 | +const DEFAULT_NETWORK_ID: &str = "/wormhole/mainnet/2"; |
| 9 | +const DEFAULT_WORMHOLE_BOOTSTRAP_ADDRS: &str = "/dns4/wormhole-mainnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWQp644DK27fd3d4Km3jr7gHiuJJ5ZGmy8hH4py7fP4FP7"; |
| 10 | +const DEFAULT_WORMHOLE_LISTEN_ADDRS: &str = "/ip4/0.0.0.0/udp/30910/quic,/ip6/::/udp/30910/quic"; |
| 11 | +const DEFAULT_API_ADDR: &str = "127.0.0.1:33999"; |
| 12 | + |
| 13 | +/// `Options` is a structup definition to provide clean command-line args for Hermes. |
12 | 14 | #[derive(StructOpt, Debug)]
|
13 | 15 | #[structopt(name = "hermes", about = "Hermes")]
|
14 | 16 | pub enum Options {
|
15 |
| - Run { |
16 |
| - #[structopt(long, env = "PYTHNET_WS_ENDPOINT")] |
17 |
| - pythnet_ws_endpoint: String, |
18 |
| - |
19 |
| - #[structopt(long, env = "PYTHNET_HTTP_ENDPOINT")] |
20 |
| - pythnet_http_endpoint: String, |
21 |
| - |
22 |
| - /// Network ID for Wormhole |
23 |
| - #[structopt( |
24 |
| - long, |
25 |
| - default_value = "/wormhole/mainnet/2", |
26 |
| - env = "WORMHOLE_NETWORK_ID" |
27 |
| - )] |
28 |
| - wh_network_id: String, |
29 |
| - |
30 |
| - /// Multiaddresses for Wormhole bootstrap peers (separated by comma). |
31 |
| - #[structopt( |
32 |
| - long, |
33 |
| - use_delimiter = true, |
34 |
| - default_value = "/dns4/wormhole-mainnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWQp644DK27fd3d4Km3jr7gHiuJJ5ZGmy8hH4py7fP4FP7", |
35 |
| - env = "WORMHOLE_BOOTSTRAP_ADDRS" |
36 |
| - )] |
37 |
| - wh_bootstrap_addrs: Vec<Multiaddr>, |
38 |
| - |
39 |
| - /// Multiaddresses to bind Wormhole P2P to (separated by comma) |
40 |
| - #[structopt( |
41 |
| - long, |
42 |
| - use_delimiter = true, |
43 |
| - default_value = "/ip4/0.0.0.0/udp/30910/quic,/ip6/::/udp/30910/quic", |
44 |
| - env = "WORMHOLE_LISTEN_ADDRS" |
45 |
| - )] |
46 |
| - wh_listen_addrs: Vec<Multiaddr>, |
47 |
| - |
48 |
| - /// The address to bind the API server to. |
49 |
| - #[structopt(long, default_value = "127.0.0.1:33999")] |
50 |
| - api_addr: SocketAddr, |
51 |
| - |
52 |
| - /// Address of the Wormhole contract on the target PythNet cluster. |
53 |
| - #[structopt(long, default_value = "H3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU")] |
54 |
| - wh_contract_addr: Pubkey, |
55 |
| - }, |
| 17 | + /// Run the hermes service. |
| 18 | + Run(RunOptions), |
| 19 | +} |
| 20 | + |
| 21 | +#[derive(Clone, Debug, StructOpt)] |
| 22 | +pub struct RunOptions { |
| 23 | + /// The address to bind the API server to. |
| 24 | + #[structopt(long)] |
| 25 | + #[structopt(default_value = DEFAULT_API_ADDR)] |
| 26 | + #[structopt(env = "API_ADDR")] |
| 27 | + pub api_addr: SocketAddr, |
| 28 | + |
| 29 | + /// Address of a PythNet compatible websocket RPC endpoint. |
| 30 | + #[structopt(long)] |
| 31 | + #[structopt(env = "PYTHNET_WS_ENDPOINT")] |
| 32 | + pub pythnet_ws_endpoint: String, |
| 33 | + |
| 34 | + /// Addres of a PythNet compatible HTP RPC endpoint. |
| 35 | + #[structopt(long)] |
| 36 | + #[structopt(env = "PYTHNET_HTTP_ENDPOINT")] |
| 37 | + pub pythnet_http_endpoint: String, |
| 38 | + |
| 39 | + /// Multiaddresses for Wormhole bootstrap peers (separated by comma). |
| 40 | + #[structopt(long)] |
| 41 | + #[structopt(use_delimiter = true)] |
| 42 | + #[structopt(default_value = DEFAULT_WORMHOLE_BOOTSTRAP_ADDRS)] |
| 43 | + #[structopt(env = "WORMHOLE_BOOTSTRAP_ADDRS")] |
| 44 | + pub wh_bootstrap_addrs: Vec<Multiaddr>, |
| 45 | + |
| 46 | + /// Address of the Wormhole contract on the target PythNet cluster. |
| 47 | + #[structopt(long)] |
| 48 | + #[structopt(default_value = "H3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU")] |
| 49 | + #[structopt(env = "WORMHOLE_CONTRACT_ADDR")] |
| 50 | + pub wh_contract_addr: Pubkey, |
| 51 | + |
| 52 | + /// Multiaddresses to bind Wormhole P2P to (separated by comma) |
| 53 | + #[structopt(long)] |
| 54 | + #[structopt(use_delimiter = true)] |
| 55 | + #[structopt(default_value = DEFAULT_WORMHOLE_LISTEN_ADDRS)] |
| 56 | + #[structopt(env = "WORMHOLE_LISTEN_ADDRS")] |
| 57 | + pub wh_listen_addrs: Vec<Multiaddr>, |
| 58 | + |
| 59 | + /// Network ID for Wormhole |
| 60 | + #[structopt(long)] |
| 61 | + #[structopt(default_value = DEFAULT_NETWORK_ID)] |
| 62 | + #[structopt(env = "WORMHOLE_NETWORK_ID")] |
| 63 | + pub wh_network_id: String, |
56 | 64 | }
|
0 commit comments