From 87ff1990c03962a87c71591761b3cc335e26bf52 Mon Sep 17 00:00:00 2001 From: Slack Coder Date: Thu, 19 Jan 2023 08:28:37 -0500 Subject: [PATCH] cli: Create terminal::cob Use a new module, `terminal::cob`, to collect collaborative object code to improve consistency. Signed-off-by: Slack Coder --- radicle-cli/src/commands/patch.rs | 13 ++----------- radicle-cli/src/terminal.rs | 1 + radicle-cli/src/terminal/cob.rs | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 radicle-cli/src/terminal/cob.rs diff --git a/radicle-cli/src/commands/patch.rs b/radicle-cli/src/commands/patch.rs index 1e818e7c..0784b390 100644 --- a/radicle-cli/src/commands/patch.rs +++ b/radicle-cli/src/commands/patch.rs @@ -8,7 +8,6 @@ mod list; mod show; use std::ffi::OsString; -use std::str::FromStr; use anyhow::anyhow; @@ -94,14 +93,6 @@ pub struct Options { pub verbose: bool, } -fn parse_patch_id(val: OsString) -> Result { - let val = val - .to_str() - .ok_or_else(|| anyhow!("patch id specified is not UTF-8"))?; - let patch_id = PatchId::from_str(val).map_err(|_| anyhow!("invalid patch id '{}'", val))?; - Ok(OptPatch::Patch(patch_id)) -} - impl Args for Options { fn from_args(args: Vec) -> anyhow::Result<(Self, Vec)> { use lexopt::prelude::*; @@ -166,10 +157,10 @@ impl Args for Options { unknown => anyhow::bail!("unknown operation '{}'", unknown), }, Value(val) if op == Some(OperationName::Show) && patch_id == OptPatch::Any => { - patch_id = parse_patch_id(val)?; + patch_id = OptPatch::Patch(term::cob::parse_patch_id(val)?); } Value(val) if op == Some(OperationName::Update) && patch_id == OptPatch::Any => { - patch_id = parse_patch_id(val)?; + patch_id = OptPatch::Patch(term::cob::parse_patch_id(val)?); } _ => return Err(anyhow::anyhow!(arg.unexpected())), } diff --git a/radicle-cli/src/terminal.rs b/radicle-cli/src/terminal.rs index 783bba20..d15b48ba 100644 --- a/radicle-cli/src/terminal.rs +++ b/radicle-cli/src/terminal.rs @@ -1,4 +1,5 @@ pub mod args; +pub mod cob; pub mod command; pub mod format; pub mod io; diff --git a/radicle-cli/src/terminal/cob.rs b/radicle-cli/src/terminal/cob.rs new file mode 100644 index 00000000..6682c939 --- /dev/null +++ b/radicle-cli/src/terminal/cob.rs @@ -0,0 +1,15 @@ +use std::str::FromStr; + +use super::*; +use radicle::cob::patch; + +use anyhow::anyhow; + +pub fn parse_patch_id(val: OsString) -> Result { + let val = val + .to_str() + .ok_or_else(|| anyhow!("patch id specified is not UTF-8"))?; + let patch_id = + patch::PatchId::from_str(val).map_err(|_| anyhow!("invalid patch id '{}'", val))?; + Ok(patch_id) +}