From 16b4a27019f257d505250e36e7bb5d447de4e11c Mon Sep 17 00:00:00 2001 From: nine Date: Tue, 20 Aug 2024 11:31:31 -0400 Subject: [PATCH 1/2] migrating-chain.rs-to-snafu --- src/chain.rs | 15 +++++++-------- src/error.rs | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/chain.rs b/src/chain.rs index d21b05aa61..aceb6faf72 100644 --- a/src/chain.rs +++ b/src/chain.rs @@ -66,11 +66,8 @@ impl Chain { } } - pub(crate) fn address_from_script( - self, - script: &Script, - ) -> Result { - Address::from_script(script, self.network()) + pub(crate) fn address_from_script(self, script: &Script) -> Result { + Address::from_script(script, self.network()).snafu_context(error::AddressConversion) } pub(crate) fn join_with_data_dir(self, data_dir: impl AsRef) -> PathBuf { @@ -110,7 +107,7 @@ impl Display for Chain { } impl FromStr for Chain { - type Err = Error; + type Err = SnafuError; fn from_str(s: &str) -> Result { match s { @@ -118,7 +115,9 @@ impl FromStr for Chain { "regtest" => Ok(Self::Regtest), "signet" => Ok(Self::Signet), "testnet" => Ok(Self::Testnet), - _ => bail!("invalid chain `{s}`"), + _ => Err(SnafuError::InvalidChain { + input: s.to_string(), + }), } } } @@ -135,7 +134,7 @@ mod tests { assert_eq!("testnet".parse::().unwrap(), Chain::Testnet); assert_eq!( "foo".parse::().unwrap_err().to_string(), - "invalid chain `foo`" + "Invalid chain `foo`" ); } } diff --git a/src/error.rs b/src/error.rs index dd214a6347..7229e2adef 100644 --- a/src/error.rs +++ b/src/error.rs @@ -45,6 +45,10 @@ pub enum SnafuError { }, #[snafu(display("Unrecognized representation `{}`", input))] UnrecognizedRepresentation { source: error::Error, input: String }, + #[snafu(display("Invalid chain {}", input))] + InvalidChain { input: String }, + #[snafu(display("Failed to convert script to address: {}", source))] + AddressConversion { source: bitcoin::address::Error }, #[snafu(display("{err}"))] Anyhow { err: anyhow::Error }, #[snafu(display("environment variable `{variable}` not valid unicode: `{}`", value.to_string_lossy()))] From 45f7000fbdd7a2f623290e509d7cb4b406bc9b7d Mon Sep 17 00:00:00 2001 From: nine Date: Tue, 20 Aug 2024 11:40:04 -0400 Subject: [PATCH 2/2] resolving conflicts --- src/chain.rs | 2 +- src/error.rs | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/chain.rs b/src/chain.rs index aceb6faf72..e8ff2a2d10 100644 --- a/src/chain.rs +++ b/src/chain.rs @@ -116,7 +116,7 @@ impl FromStr for Chain { "signet" => Ok(Self::Signet), "testnet" => Ok(Self::Testnet), _ => Err(SnafuError::InvalidChain { - input: s.to_string(), + chain: s.to_string(), }), } } diff --git a/src/error.rs b/src/error.rs index 7229e2adef..f6f9396e2d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -43,10 +43,19 @@ pub enum SnafuError { source: ordinals::sat_point::Error, input: String, }, - #[snafu(display("Unrecognized representation `{}`", input))] - UnrecognizedRepresentation { source: error::Error, input: String }, - #[snafu(display("Invalid chain {}", input))] - InvalidChain { input: String }, + #[snafu(display("Unrecognized representation: `{}`", input))] + UnrecognizedRepresentation { input: String }, + #[snafu(display("Unrecognized outgoing amount: `{}`", input))] + AmountParse { + source: bitcoin::amount::ParseAmountError, + input: String, + }, + #[snafu(display("Unrecognized outgoing: `{}`", input))] + OutgoingParse { input: String }, + #[snafu(display("Failed to parse decimal: {}", source))] + RuneAmountParse { source: error::Error, input: String }, + #[snafu(display("Invalid chain `{}`", chain))] + InvalidChain { chain: String }, #[snafu(display("Failed to convert script to address: {}", source))] AddressConversion { source: bitcoin::address::Error }, #[snafu(display("{err}"))]