Skip to content

Commit e4fdc45

Browse files
authored
chore: standardize use of opts / args (#9629)
* globalopts -> globalargs * consistently use opts for configurations, args for command line arguments
1 parent 782787b commit e4fdc45

File tree

31 files changed

+250
-197
lines changed

31 files changed

+250
-197
lines changed

crates/anvil/src/anvil.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use anvil::cmd::NodeArgs;
44
use clap::{CommandFactory, Parser, Subcommand};
55
use eyre::Result;
6-
use foundry_cli::{opts::GlobalOpts, utils};
6+
use foundry_cli::{opts::GlobalArgs, utils};
77

88
#[cfg(all(feature = "jemalloc", unix))]
99
#[global_allocator]
@@ -13,9 +13,9 @@ static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
1313
#[derive(Parser)]
1414
#[command(name = "anvil", version = anvil::VERSION_MESSAGE, next_display_order = None)]
1515
pub struct Anvil {
16-
/// Include the global options.
16+
/// Include the global arguments.
1717
#[command(flatten)]
18-
pub global: GlobalOpts,
18+
pub global: GlobalArgs,
1919

2020
#[command(flatten)]
2121
pub node: NodeArgs,
@@ -50,7 +50,7 @@ fn run() -> Result<()> {
5050

5151
let mut args = Anvil::parse();
5252
args.global.init()?;
53-
args.node.evm_opts.resolve_rpc_alias();
53+
args.node.evm.resolve_rpc_alias();
5454

5555
if let Some(cmd) = &args.cmd {
5656
match cmd {

crates/anvil/src/cmd.rs

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ pub struct NodeArgs {
185185
pub transaction_block_keeper: Option<usize>,
186186

187187
#[command(flatten)]
188-
pub evm_opts: AnvilEvmArgs,
188+
pub evm: AnvilEvmArgs,
189189

190190
#[command(flatten)]
191191
pub server_config: ServerConfig,
@@ -209,15 +209,12 @@ const DEFAULT_DUMP_INTERVAL: Duration = Duration::from_secs(60);
209209
impl NodeArgs {
210210
pub fn into_node_config(self) -> eyre::Result<NodeConfig> {
211211
let genesis_balance = Unit::ETHER.wei().saturating_mul(U256::from(self.balance));
212-
let compute_units_per_second = if self.evm_opts.no_rate_limit {
213-
Some(u64::MAX)
214-
} else {
215-
self.evm_opts.compute_units_per_second
216-
};
212+
let compute_units_per_second =
213+
if self.evm.no_rate_limit { Some(u64::MAX) } else { self.evm.compute_units_per_second };
217214

218215
let hardfork = match &self.hardfork {
219216
Some(hf) => {
220-
if self.evm_opts.optimism {
217+
if self.evm.optimism {
221218
Some(OptimismHardfork::from_str(hf)?.into())
222219
} else {
223220
Some(EthereumHardfork::from_str(hf)?.into())
@@ -227,9 +224,9 @@ impl NodeArgs {
227224
};
228225

229226
Ok(NodeConfig::default()
230-
.with_gas_limit(self.evm_opts.gas_limit)
231-
.disable_block_gas_limit(self.evm_opts.disable_block_gas_limit)
232-
.with_gas_price(self.evm_opts.gas_price)
227+
.with_gas_limit(self.evm.gas_limit)
228+
.disable_block_gas_limit(self.evm.disable_block_gas_limit)
229+
.with_gas_price(self.evm.gas_price)
233230
.with_hardfork(hardfork)
234231
.with_blocktime(self.block_time)
235232
.with_no_mining(self.no_mining)
@@ -238,54 +235,50 @@ impl NodeArgs {
238235
.with_genesis_balance(genesis_balance)
239236
.with_genesis_timestamp(self.timestamp)
240237
.with_port(self.port)
241-
.with_fork_choice(
242-
match (self.evm_opts.fork_block_number, self.evm_opts.fork_transaction_hash) {
243-
(Some(block), None) => Some(ForkChoice::Block(block)),
244-
(None, Some(hash)) => Some(ForkChoice::Transaction(hash)),
245-
_ => {
246-
self.evm_opts.fork_url.as_ref().and_then(|f| f.block).map(ForkChoice::Block)
247-
}
248-
},
249-
)
250-
.with_fork_headers(self.evm_opts.fork_headers)
251-
.with_fork_chain_id(self.evm_opts.fork_chain_id.map(u64::from).map(U256::from))
252-
.fork_request_timeout(self.evm_opts.fork_request_timeout.map(Duration::from_millis))
253-
.fork_request_retries(self.evm_opts.fork_request_retries)
254-
.fork_retry_backoff(self.evm_opts.fork_retry_backoff.map(Duration::from_millis))
238+
.with_fork_choice(match (self.evm.fork_block_number, self.evm.fork_transaction_hash) {
239+
(Some(block), None) => Some(ForkChoice::Block(block)),
240+
(None, Some(hash)) => Some(ForkChoice::Transaction(hash)),
241+
_ => self.evm.fork_url.as_ref().and_then(|f| f.block).map(ForkChoice::Block),
242+
})
243+
.with_fork_headers(self.evm.fork_headers)
244+
.with_fork_chain_id(self.evm.fork_chain_id.map(u64::from).map(U256::from))
245+
.fork_request_timeout(self.evm.fork_request_timeout.map(Duration::from_millis))
246+
.fork_request_retries(self.evm.fork_request_retries)
247+
.fork_retry_backoff(self.evm.fork_retry_backoff.map(Duration::from_millis))
255248
.fork_compute_units_per_second(compute_units_per_second)
256-
.with_eth_rpc_url(self.evm_opts.fork_url.map(|fork| fork.url))
257-
.with_base_fee(self.evm_opts.block_base_fee_per_gas)
258-
.disable_min_priority_fee(self.evm_opts.disable_min_priority_fee)
259-
.with_storage_caching(self.evm_opts.no_storage_caching)
249+
.with_eth_rpc_url(self.evm.fork_url.map(|fork| fork.url))
250+
.with_base_fee(self.evm.block_base_fee_per_gas)
251+
.disable_min_priority_fee(self.evm.disable_min_priority_fee)
252+
.with_storage_caching(self.evm.no_storage_caching)
260253
.with_server_config(self.server_config)
261254
.with_host(self.host)
262255
.set_silent(shell::is_quiet())
263256
.set_config_out(self.config_out)
264-
.with_chain_id(self.evm_opts.chain_id)
257+
.with_chain_id(self.evm.chain_id)
265258
.with_transaction_order(self.order)
266259
.with_genesis(self.init)
267-
.with_steps_tracing(self.evm_opts.steps_tracing)
268-
.with_print_logs(!self.evm_opts.disable_console_log)
269-
.with_auto_impersonate(self.evm_opts.auto_impersonate)
260+
.with_steps_tracing(self.evm.steps_tracing)
261+
.with_print_logs(!self.evm.disable_console_log)
262+
.with_auto_impersonate(self.evm.auto_impersonate)
270263
.with_ipc(self.ipc)
271-
.with_code_size_limit(self.evm_opts.code_size_limit)
272-
.disable_code_size_limit(self.evm_opts.disable_code_size_limit)
264+
.with_code_size_limit(self.evm.code_size_limit)
265+
.disable_code_size_limit(self.evm.disable_code_size_limit)
273266
.set_pruned_history(self.prune_history)
274267
.with_init_state(self.load_state.or_else(|| self.state.and_then(|s| s.state)))
275268
.with_transaction_block_keeper(self.transaction_block_keeper)
276269
.with_max_persisted_states(self.max_persisted_states)
277-
.with_optimism(self.evm_opts.optimism)
278-
.with_odyssey(self.evm_opts.odyssey)
279-
.with_disable_default_create2_deployer(self.evm_opts.disable_default_create2_deployer)
270+
.with_optimism(self.evm.optimism)
271+
.with_odyssey(self.evm.odyssey)
272+
.with_disable_default_create2_deployer(self.evm.disable_default_create2_deployer)
280273
.with_slots_in_an_epoch(self.slots_in_an_epoch)
281-
.with_memory_limit(self.evm_opts.memory_limit)
274+
.with_memory_limit(self.evm.memory_limit)
282275
.with_cache_path(self.cache_path))
283276
}
284277

285278
fn account_generator(&self) -> AccountGenerator {
286279
let mut gen = AccountGenerator::new(self.accounts as usize)
287280
.phrase(DEFAULT_MNEMONIC)
288-
.chain_id(self.evm_opts.chain_id.unwrap_or_else(|| CHAIN_ID.into()));
281+
.chain_id(self.evm.chain_id.unwrap_or_else(|| CHAIN_ID.into()));
289282
if let Some(ref mnemonic) = self.mnemonic {
290283
gen = gen.phrase(mnemonic);
291284
} else if let Some(count) = self.mnemonic_random {
@@ -845,10 +838,7 @@ mod tests {
845838
"--fork-header",
846839
"Referrer: example.com",
847840
]);
848-
assert_eq!(
849-
args.evm_opts.fork_headers,
850-
vec!["User-Agent: test-agent", "Referrer: example.com"]
851-
);
841+
assert_eq!(args.evm.fork_headers, vec!["User-Agent: test-agent", "Referrer: example.com"]);
852842
}
853843

854844
#[test]
@@ -869,7 +859,7 @@ mod tests {
869859
#[test]
870860
fn can_parse_disable_block_gas_limit() {
871861
let args: NodeArgs = NodeArgs::parse_from(["anvil", "--disable-block-gas-limit"]);
872-
assert!(args.evm_opts.disable_block_gas_limit);
862+
assert!(args.evm.disable_block_gas_limit);
873863

874864
let args =
875865
NodeArgs::try_parse_from(["anvil", "--disable-block-gas-limit", "--gas-limit", "100"]);
@@ -879,7 +869,7 @@ mod tests {
879869
#[test]
880870
fn can_parse_disable_code_size_limit() {
881871
let args: NodeArgs = NodeArgs::parse_from(["anvil", "--disable-code-size-limit"]);
882-
assert!(args.evm_opts.disable_code_size_limit);
872+
assert!(args.evm.disable_code_size_limit);
883873

884874
let args = NodeArgs::try_parse_from([
885875
"anvil",

crates/cast/bin/args.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use alloy_primitives::{Address, B256, U256};
99
use alloy_rpc_types::BlockId;
1010
use clap::{Parser, Subcommand, ValueHint};
1111
use eyre::Result;
12-
use foundry_cli::opts::{EtherscanOpts, GlobalOpts, RpcOpts};
12+
use foundry_cli::opts::{EtherscanOpts, GlobalArgs, RpcOpts};
1313
use foundry_common::ens::NameOrAddress;
1414
use std::{path::PathBuf, str::FromStr};
1515

@@ -31,9 +31,9 @@ const VERSION_MESSAGE: &str = concat!(
3131
next_display_order = None,
3232
)]
3333
pub struct Cast {
34-
/// Include the global options.
34+
/// Include the global arguments.
3535
#[command(flatten)]
36-
pub global: GlobalOpts,
36+
pub global: GlobalArgs,
3737

3838
#[command(subcommand)]
3939
pub cmd: CastSubcommand,

crates/cast/bin/cmd/storage.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use comfy_table::{modifiers::UTF8_ROUND_CORNERS, Cell, Table};
1010
use eyre::Result;
1111
use foundry_block_explorers::Client;
1212
use foundry_cli::{
13-
opts::{CoreBuildArgs, EtherscanOpts, RpcOpts},
13+
opts::{BuildOpts, EtherscanOpts, RpcOpts},
1414
utils,
1515
};
1616
use foundry_common::{
@@ -64,7 +64,7 @@ pub struct StorageArgs {
6464
etherscan: EtherscanOpts,
6565

6666
#[command(flatten)]
67-
build: CoreBuildArgs,
67+
build: BuildOpts,
6868
}
6969

7070
impl_figment_convert_cast!(StorageArgs);

crates/chisel/bin/main.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use clap::{Parser, Subcommand};
1111
use eyre::Context;
1212
use foundry_cli::{
1313
handler,
14-
opts::{CoreBuildArgs, GlobalOpts},
14+
opts::{BuildOpts, GlobalArgs},
1515
utils::{self, LoadConfig},
1616
};
1717
use foundry_common::{evm::EvmArgs, fs};
@@ -35,7 +35,7 @@ extern crate foundry_common;
3535
static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
3636

3737
// Loads project's figment and merges the build cli arguments into it
38-
foundry_config::merge_impl_figment_convert!(Chisel, opts, evm_args);
38+
foundry_config::merge_impl_figment_convert!(Chisel, build, evm);
3939

4040
const VERSION_MESSAGE: &str = concat!(
4141
env!("CARGO_PKG_VERSION"),
@@ -50,9 +50,9 @@ const VERSION_MESSAGE: &str = concat!(
5050
#[derive(Debug, Parser)]
5151
#[command(name = "chisel", version = VERSION_MESSAGE)]
5252
pub struct Chisel {
53-
/// Include the global options.
53+
/// Include the global arguments.
5454
#[command(flatten)]
55-
pub global: GlobalOpts,
55+
pub global: GlobalArgs,
5656

5757
#[command(subcommand)]
5858
pub cmd: Option<ChiselSubcommand>,
@@ -73,10 +73,10 @@ pub struct Chisel {
7373
pub no_vm: bool,
7474

7575
#[command(flatten)]
76-
pub opts: CoreBuildArgs,
76+
pub build: BuildOpts,
7777

7878
#[command(flatten)]
79-
pub evm_args: EvmArgs,
79+
pub evm: EvmArgs,
8080
}
8181

8282
/// Chisel binary subcommands

crates/cli/src/opts/build/core.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use super::ProjectPathsArgs;
2-
use crate::{opts::CompilerArgs, utils::LoadConfig};
1+
use super::ProjectPathOpts;
2+
use crate::{opts::CompilerOpts, utils::LoadConfig};
33
use clap::{Parser, ValueHint};
44
use eyre::Result;
55
use foundry_compilers::{
@@ -23,7 +23,7 @@ use std::path::PathBuf;
2323

2424
#[derive(Clone, Debug, Default, Serialize, Parser)]
2525
#[command(next_help_heading = "Build options")]
26-
pub struct CoreBuildArgs {
26+
pub struct BuildOpts {
2727
/// Clear the cache and artifacts folder and recompile.
2828
#[arg(long, help_heading = "Cache options")]
2929
#[serde(skip)]
@@ -138,14 +138,14 @@ pub struct CoreBuildArgs {
138138

139139
#[command(flatten)]
140140
#[serde(flatten)]
141-
pub compiler: CompilerArgs,
141+
pub compiler: CompilerOpts,
142142

143143
#[command(flatten)]
144144
#[serde(flatten)]
145-
pub project_paths: ProjectPathsArgs,
145+
pub project_paths: ProjectPathOpts,
146146
}
147147

148-
impl CoreBuildArgs {
148+
impl BuildOpts {
149149
/// Returns the `Project` for the current workspace
150150
///
151151
/// This loads the `foundry_config::Config` for the current workspace (see
@@ -164,8 +164,8 @@ impl CoreBuildArgs {
164164
}
165165

166166
// Loads project's figment and merges the build cli arguments into it
167-
impl<'a> From<&'a CoreBuildArgs> for Figment {
168-
fn from(args: &'a CoreBuildArgs) -> Self {
167+
impl<'a> From<&'a BuildOpts> for Figment {
168+
fn from(args: &'a BuildOpts) -> Self {
169169
let mut figment = if let Some(ref config_path) = args.project_paths.config_path {
170170
if !config_path.exists() {
171171
panic!("error: config-path `{}` does not exist", config_path.display())
@@ -196,8 +196,8 @@ impl<'a> From<&'a CoreBuildArgs> for Figment {
196196
}
197197
}
198198

199-
impl<'a> From<&'a CoreBuildArgs> for Config {
200-
fn from(args: &'a CoreBuildArgs) -> Self {
199+
impl<'a> From<&'a BuildOpts> for Config {
200+
fn from(args: &'a BuildOpts) -> Self {
201201
let figment: Figment = args.into();
202202
let mut config = Self::from_provider(figment).sanitized();
203203
// if `--config-path` is set we need to adjust the config's root path to the actual root
@@ -209,7 +209,7 @@ impl<'a> From<&'a CoreBuildArgs> for Config {
209209
}
210210
}
211211

212-
impl Provider for CoreBuildArgs {
212+
impl Provider for BuildOpts {
213213
fn metadata(&self) -> Metadata {
214214
Metadata::named("Core Build Args Provider")
215215
}

crates/cli/src/opts/build/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ use foundry_compilers::artifacts::{output_selection::ContractOutputSelection, Ev
33
use serde::Serialize;
44

55
mod core;
6-
pub use self::core::CoreBuildArgs;
6+
pub use self::core::BuildOpts;
77

88
mod paths;
9-
pub use self::paths::ProjectPathsArgs;
9+
pub use self::paths::ProjectPathOpts;
1010

1111
// A set of solc compiler settings that can be set via command line arguments, which are intended
1212
// to be merged into an existing `foundry_config::Config`.
1313
//
1414
// See also `BuildArgs`.
1515
#[derive(Clone, Debug, Default, Serialize, Parser)]
1616
#[command(next_help_heading = "Compiler options")]
17-
pub struct CompilerArgs {
17+
pub struct CompilerOpts {
1818
/// Includes the AST as JSON in the compiler output.
1919
#[arg(long, help_heading = "Compiler options")]
2020
#[serde(skip)]
@@ -62,15 +62,15 @@ mod tests {
6262

6363
#[test]
6464
fn can_parse_evm_version() {
65-
let args: CompilerArgs =
66-
CompilerArgs::parse_from(["foundry-cli", "--evm-version", "london"]);
65+
let args: CompilerOpts =
66+
CompilerOpts::parse_from(["foundry-cli", "--evm-version", "london"]);
6767
assert_eq!(args.evm_version, Some(EvmVersion::London));
6868
}
6969

7070
#[test]
7171
fn can_parse_extra_output() {
72-
let args: CompilerArgs =
73-
CompilerArgs::parse_from(["foundry-cli", "--extra-output", "metadata", "ir-optimized"]);
72+
let args: CompilerOpts =
73+
CompilerOpts::parse_from(["foundry-cli", "--extra-output", "metadata", "ir-optimized"]);
7474
assert_eq!(
7575
args.extra_output,
7676
vec![ContractOutputSelection::Metadata, ContractOutputSelection::IrOptimized]
@@ -79,7 +79,7 @@ mod tests {
7979

8080
#[test]
8181
fn can_parse_extra_output_files() {
82-
let args: CompilerArgs = CompilerArgs::parse_from([
82+
let args: CompilerOpts = CompilerOpts::parse_from([
8383
"foundry-cli",
8484
"--extra-output-files",
8585
"metadata",

0 commit comments

Comments
 (0)