use anyhow::{anyhow, Result};
use std::path::Path;
use crate::find::find_schemes;
pub fn list(
patterns: Vec<&str>,
base_dir: &Path,
config_dir: &Path,
_verbose: bool,
lines: bool,
) -> Result<()> {
let mut schemes = Vec::new();
for pattern in patterns {
let found_schemes = find_schemes(pattern, base_dir, config_dir)?;
for found_scheme in found_schemes {
schemes.push(String::from(
found_scheme
.file_stem()
.ok_or_else(|| anyhow!("Couldn't get scheme name"))?
.to_str()
.ok_or_else(|| anyhow!("Couldn't convert name"))?,
));
}
}
schemes.sort();
schemes.dedup();
if schemes.is_empty() {
return Err(anyhow!("No matching scheme found"));
};
for scheme in &schemes {
print!("{}", scheme);
if lines {
println!();
} else {
print!(" ");
}
}
if !lines {
println!();
}
Ok(())
}