cli/init: Deduplicate `ScopeParser`

This commit is contained in:
Lorenz Leutgeb 2026-04-16 14:14:44 +02:00 committed by Fintan Halpenny
parent f8ec40a33f
commit 2d20e249fd
1 changed files with 2 additions and 27 deletions

View File

@ -8,6 +8,8 @@ use radicle::{
}; };
use radicle_term::Interactive; use radicle_term::Interactive;
use crate::terminal::args::ScopeParser;
const ABOUT: &str = "Initialize a Radicle repository"; const ABOUT: &str = "Initialize a Radicle repository";
#[derive(Debug, Parser)] #[derive(Debug, Parser)]
@ -85,33 +87,6 @@ impl Args {
} }
} }
// TODO(finto): this is duplicated from `clone::args`. Consolidate these once
// the `clap` migration has finished and we can organise the shared code.
#[derive(Clone, Debug)]
struct ScopeParser;
impl clap::builder::TypedValueParser for ScopeParser {
type Value = Scope;
fn parse_ref(
&self,
cmd: &clap::Command,
arg: Option<&clap::Arg>,
value: &std::ffi::OsStr,
) -> Result<Self::Value, clap::Error> {
<Scope as std::str::FromStr>::from_str.parse_ref(cmd, arg, value)
}
fn possible_values(
&self,
) -> Option<Box<dyn Iterator<Item = clap::builder::PossibleValue> + '_>> {
use clap::builder::PossibleValue;
Some(Box::new(
[PossibleValue::new("all"), PossibleValue::new("followed")].into_iter(),
))
}
}
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::Args; use super::Args;