use crate::{dirs, load_config, run_quiet, Res};
use std::fs;
use std::path::Path;
pub(crate) fn cmd_status() -> Res {
let config = load_config()?;
let vendor = &config.vendor.name;
eprintln!("=== AU v2 Components ===");
let comp_dir = Path::new("/Library/Audio/Plug-Ins/Components");
if comp_dir.exists() {
for entry in fs::read_dir(comp_dir)? {
let name = entry?.file_name();
let name = name.to_string_lossy();
if name.contains(vendor) {
eprintln!(" {name}");
}
}
}
eprintln!("\n=== CLAP ===");
let clap_dir = dirs::home_dir()
.unwrap()
.join("Library/Audio/Plug-Ins/CLAP");
if clap_dir.exists() {
for entry in fs::read_dir(&clap_dir)? {
let name = entry?.file_name();
let name = name.to_string_lossy();
if name.contains(vendor) {
eprintln!(" {name}");
}
}
}
eprintln!("\n=== VST2 ===");
let vst2_dir = dirs::home_dir().unwrap().join("Library/Audio/Plug-Ins/VST");
if vst2_dir.exists() {
for entry in fs::read_dir(&vst2_dir)? {
let name = entry?.file_name();
let name = name.to_string_lossy();
if name.contains(vendor) {
eprintln!(" {name}");
}
}
}
eprintln!("\n=== VST3 ===");
let vst3_dir = Path::new("/Library/Audio/Plug-Ins/VST3");
if vst3_dir.exists() {
for entry in fs::read_dir(vst3_dir)? {
let name = entry?.file_name();
let name = name.to_string_lossy();
if name.contains(vendor) {
eprintln!(" {name}");
}
}
}
eprintln!("\n=== auval ===");
if let Ok(output) = run_quiet("auval", &["-a"]) {
let vendor_lower = vendor.to_lowercase();
for line in output.lines() {
if line.to_lowercase().contains(&vendor_lower) {
eprintln!(" {line}");
}
}
}
Ok(())
}