use anyhow::{anyhow, Result};
use std::path::Path;
use crate::find::find;
pub fn list(patterns: Vec<&str>, base_dir: &Path, _verbose: bool, lines: bool) -> Result<()> {
let mut schemes = Vec::new();
for pattern in patterns {
let found_schemes = find(pattern, &base_dir.join("base16").join("schemes"))?;
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(())
}