Skip to content

Commit f5bad97

Browse files
authored
feat(cast) more descriptive errors for gcp & aws signers (#11248)
* more descriptive errors * cargo fmt * add env helper
1 parent d529ce2 commit f5bad97

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

crates/wallets/src/wallet.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,28 @@ impl WalletOpts {
9090
pub async fn signer(&self) -> Result<WalletSigner> {
9191
trace!("start finding signer");
9292

93+
let get_env = |key: &str| {
94+
std::env::var(key)
95+
.map_err(|_| eyre::eyre!("{key} environment variable is required for signer"))
96+
};
97+
9398
let signer = if self.ledger {
9499
utils::create_ledger_signer(self.raw.hd_path.as_deref(), self.raw.mnemonic_index)
95100
.await?
96101
} else if self.trezor {
97102
utils::create_trezor_signer(self.raw.hd_path.as_deref(), self.raw.mnemonic_index)
98103
.await?
99104
} else if self.aws {
100-
let key_id = std::env::var("AWS_KMS_KEY_ID")?;
105+
let key_id = get_env("AWS_KMS_KEY_ID")?;
101106
WalletSigner::from_aws(key_id).await?
102107
} else if self.gcp {
103-
let project_id = std::env::var("GCP_PROJECT_ID")?;
104-
let location = std::env::var("GCP_LOCATION")?;
105-
let keyring = std::env::var("GCP_KEYRING")?;
106-
let key_name = std::env::var("GCP_KEY_NAME")?;
107-
let key_version = std::env::var("GCP_KEY_VERSION")?.parse()?;
108+
let project_id = get_env("GCP_PROJECT_ID")?;
109+
let location = get_env("GCP_LOCATION")?;
110+
let keyring = get_env("GCP_KEYRING")?;
111+
let key_name = get_env("GCP_NAME")?;
112+
let key_version = get_env("GCP_KEY_VERSION")?
113+
.parse()
114+
.map_err(|_| eyre::eyre!("GCP_KEY_VERSION could not be be parsed into u64"))?;
108115
WalletSigner::from_gcp(project_id, location, keyring, key_name, key_version).await?
109116
} else if let Some(raw_wallet) = self.raw.signer()? {
110117
raw_wallet

0 commit comments

Comments
 (0)