use crate::filters;
use anyhow::Result;
use lowfat_core::config::RunfConfig;
use lowfat_plugin::discovery::discover_plugins;
pub fn run() -> Result<()> {
let config = RunfConfig::resolve();
println!("Filters (lowfat):");
if let Some(cfg_path) = lowfat_core::config::find_config_display() {
println!(" config: {}", cfg_path.display());
}
println!(" level: {}", config.level);
println!();
let all_filters = filters::builtins();
for (cmd, plugin) in &all_filters {
let info = plugin.info();
let enabled = config.is_enabled(cmd);
let marker = if enabled { "[x]" } else { "[ ]" };
println!(" {marker} {} (native) — {cmd}", info.name);
}
let plugins = discover_plugins(&config.plugin_dir);
for plugin in &plugins {
let name = &plugin.manifest.plugin.name;
let cmds = plugin.manifest.plugin.commands.join(", ");
let enabled = plugin
.manifest
.plugin
.commands
.iter()
.all(|c| config.is_enabled(c));
let marker = if enabled { "[x]" } else { "[ ]" };
let rt = format!("{:?}", plugin.manifest.runtime.runtime_type).to_lowercase();
println!(" {marker} {name} ({rt}) — {cmds}");
}
if all_filters.is_empty() && plugins.is_empty() {
println!(" (no filters found)");
}
Ok(())
}