cli: add rid function for Id parsing
Adds helper for parsing the Id type in CLI arguments. Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
parent
5477a3615f
commit
2b5552546c
|
|
@ -60,10 +60,7 @@ impl Args for Options {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Value(val) if id.is_none() => {
|
Value(val) if id.is_none() => {
|
||||||
let val = val.to_string_lossy();
|
id = Some(term::args::rid(&val)?);
|
||||||
let val = Id::from_str(&val).context(format!("invalid id '{val}'"))?;
|
|
||||||
|
|
||||||
id = Some(val);
|
|
||||||
}
|
}
|
||||||
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use anyhow::{anyhow, Context as _};
|
use anyhow::{anyhow, Context as _};
|
||||||
|
|
||||||
|
|
@ -86,13 +85,7 @@ impl Args for Options {
|
||||||
did = Some(term::args::did(&val)?);
|
did = Some(term::args::did(&val)?);
|
||||||
}
|
}
|
||||||
Some(OperationName::List) => {
|
Some(OperationName::List) => {
|
||||||
// TODO: create args::project_id function
|
id = Some(term::args::rid(&val)?);
|
||||||
let val = val.to_string_lossy();
|
|
||||||
if let Ok(val) = Id::from_str(&val) {
|
|
||||||
id = Some(val);
|
|
||||||
} else {
|
|
||||||
return Err(anyhow!("invalid Project ID '{}'", val));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
None => continue,
|
None => continue,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use anyhow::{anyhow, Context as _};
|
use anyhow::{anyhow, Context as _};
|
||||||
|
|
||||||
|
|
@ -45,13 +44,7 @@ impl Args for Options {
|
||||||
return Err(Error::Help.into());
|
return Err(Error::Help.into());
|
||||||
}
|
}
|
||||||
Value(val) if id.is_none() => {
|
Value(val) if id.is_none() => {
|
||||||
let val = val.to_string_lossy();
|
id = Some(term::args::rid(&val)?);
|
||||||
|
|
||||||
if let Ok(val) = Id::from_str(&val) {
|
|
||||||
id = Some(val);
|
|
||||||
} else {
|
|
||||||
return Err(anyhow!("invalid ID '{}'", val));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
|
|
||||||
|
|
@ -52,13 +51,7 @@ impl Args for Options {
|
||||||
return Err(Error::Help.into());
|
return Err(Error::Help.into());
|
||||||
}
|
}
|
||||||
Value(val) if id.is_none() => {
|
Value(val) if id.is_none() => {
|
||||||
let val = val.to_string_lossy();
|
id = Some(term::args::rid(&val)?);
|
||||||
|
|
||||||
if let Ok(val) = Id::from_str(&val) {
|
|
||||||
id = Some(val);
|
|
||||||
} else {
|
|
||||||
return Err(anyhow!("invalid ID '{}'", val));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
_ => return Err(anyhow::anyhow!(arg.unexpected())),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ use std::str::FromStr;
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use radicle::crypto;
|
use radicle::crypto;
|
||||||
use radicle::prelude::Did;
|
use radicle::prelude::{Did, Id};
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
|
@ -85,3 +85,8 @@ pub fn did(val: &OsString) -> anyhow::Result<Did> {
|
||||||
};
|
};
|
||||||
Ok(peer)
|
Ok(peer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn rid(val: &OsString) -> anyhow::Result<Id> {
|
||||||
|
let val = val.to_string_lossy();
|
||||||
|
Id::from_str(&val).map_err(|_| anyhow!("invalid repository ID '{}'", val))
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue