Skip to content

Commit 3ce85f4

Browse files
kariyclaude
andcommitted
refactor(cli): make sidecar options conflict with external URL options
Add conflicts_with constraints to paymaster and VRF sidecar-specific options so they cannot be used with --paymaster.url or --vrf.url. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b48a161 commit 3ce85f4

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

crates/cli/src/options.rs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -587,22 +587,26 @@ pub struct PaymasterOptions {
587587
pub api_key: Option<String>,
588588

589589
/// API key for the Avnu price provider (used by the sidecar).
590+
///
591+
/// Only required when running in sidecar mode. Not needed if `--paymaster.url` is provided.
592+
#[arg(conflicts_with = "paymaster_url")]
590593
#[arg(long = "paymaster.price-api-key", value_name = "KEY")]
591594
#[serde(default)]
592595
pub price_api_key: Option<String>,
593596

594597
/// Prefunded account index used by the paymaster (relayer at INDEX, gas tank at INDEX+1,
595598
/// estimate account at INDEX+2).
596-
#[arg(
597-
value_name = "INDEX",
598-
id = "paymaster_prefunded_index",
599-
long = "paymaster.prefunded-index",
600-
default_value_t = default_paymaster_prefunded_index()
601-
)]
599+
#[arg(id = "paymaster_prefunded_index")]
600+
#[arg(conflicts_with = "paymaster_url")]
601+
#[arg(default_value_t = default_paymaster_prefunded_index())]
602+
#[arg(value_name = "INDEX", long = "paymaster.prefunded-index")]
602603
#[serde(default = "default_paymaster_prefunded_index")]
603604
pub prefunded_index: u16,
604605

605606
/// Optional path to the paymaster sidecar binary (defaults to `paymaster-service` in PATH).
607+
///
608+
/// Only used when running in sidecar mode. Not applicable if `--paymaster.url` is provided.
609+
#[arg(conflicts_with = "paymaster_url")]
606610
#[arg(long = "paymaster.bin", value_name = "PATH", id = "paymaster_bin")]
607611
#[serde(default)]
608612
pub bin: Option<PathBuf>,
@@ -684,11 +688,17 @@ pub struct VrfOptions {
684688
pub url: Option<Url>,
685689

686690
/// Source for the VRF secret key.
691+
///
692+
/// Only used when running in sidecar mode. Not applicable if `--vrf.url` is provided.
693+
#[arg(conflicts_with = "vrf_url")]
687694
#[arg(long = "vrf.key-source", value_enum, default_value_t = default_vrf_key_source())]
688695
#[serde(default = "default_vrf_key_source")]
689696
pub key_source: VrfKeySource,
690697

691698
/// Prefunded account index used to sign VRF outside executions.
699+
///
700+
/// Only used when running in sidecar mode. Not applicable if `--vrf.url` is provided.
701+
#[arg(conflicts_with = "vrf_url")]
692702
#[arg(
693703
long = "vrf.prefunded-index",
694704
value_name = "INDEX",
@@ -699,6 +709,9 @@ pub struct VrfOptions {
699709
pub prefunded_index: u16,
700710

701711
/// Port to bind the sidecar VRF service on (vrf-server uses 3000).
712+
///
713+
/// Only used when running in sidecar mode. Not applicable if `--vrf.url` is provided.
714+
#[arg(conflicts_with = "vrf_url")]
702715
#[arg(
703716
long = "vrf.port",
704717
value_name = "PORT",
@@ -709,6 +722,9 @@ pub struct VrfOptions {
709722
pub port: u16,
710723

711724
/// Optional path to the VRF sidecar binary (defaults to `vrf-server` in PATH).
725+
///
726+
/// Only used when running in sidecar mode. Not applicable if `--vrf.url` is provided.
727+
#[arg(conflicts_with = "vrf_url")]
712728
#[arg(long = "vrf.bin", value_name = "PATH", id = "vrf_bin")]
713729
#[serde(default)]
714730
pub bin: Option<PathBuf>,

0 commit comments

Comments
 (0)