use std::path::Path;
#[derive(Debug, thiserror::Error)]
pub enum ExtError {
#[error(transparent)]
Io(#[from] std::io::Error),
}
pub fn run(cwd: &Path) -> Result<(), ExtError> {
for ext in git_lfs_git::list_extensions(cwd) {
print_ext(&ext);
}
Ok(())
}
pub fn run_list(cwd: &Path, names: &[String]) -> Result<(), ExtError> {
if names.is_empty() {
return run(cwd);
}
let configured = git_lfs_git::list_extensions(cwd);
for name in names {
match configured.iter().find(|e| e.name == *name) {
Some(ext) => print_ext(ext),
None => print_ext(&git_lfs_git::ExtensionConfig {
name: name.clone(),
clean: String::new(),
smudge: String::new(),
priority: 0,
}),
}
}
Ok(())
}
fn print_ext(ext: &git_lfs_git::ExtensionConfig) {
println!("Extension: {}", ext.name);
println!(" clean = {}", ext.clean);
println!(" smudge = {}", ext.smudge);
println!(" priority = {}", ext.priority);
}