Skip to content

Commit 1f036c6

Browse files
committed
refactor: introduce LoadReport to collect and display filter loading warnings in CLI output
1 parent dced929 commit 1f036c6

3 files changed

Lines changed: 175 additions & 122 deletions

File tree

src/cli/doctor.rs

Lines changed: 56 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -388,21 +388,21 @@ pub fn run(args: &[String]) -> anyhow::Result<()> {
388388

389389
// 6. Config Filters
390390
println!("\n {}", "Filters:".bold().bright_white());
391-
let (built_in, user_filters, local_filters) =
391+
let (built_in, user_report, local_report) =
392392
crate::pipeline::toml_filter::get_filters_by_source();
393393

394394
println!(
395395
" {:<15} {} loaded (embedded)",
396396
"Built-in:".bright_black(),
397-
built_in.len().to_string().yellow()
397+
built_in.filters.len().to_string().yellow()
398398
);
399399

400400
let user_dir = conf_dir.join("filters");
401401
if user_dir.exists() {
402402
println!(
403403
" {:<15} ~/.omni/filters/ ({} filters)",
404404
"User:".bright_black(),
405-
user_filters.len().to_string().yellow()
405+
user_report.filters.len().to_string().yellow()
406406
);
407407

408408
if fix_mode && let Ok(entries) = std::fs::read_dir(&user_dir) {
@@ -446,37 +446,65 @@ pub fn run(args: &[String]) -> anyhow::Result<()> {
446446
println!(" {:<15} none", "User:".bright_black());
447447
}
448448

449-
let project_dir = PathBuf::from(".omni/filters");
450-
if project_dir.exists() {
451-
if crate::guard::trust::is_trusted(std::env::current_dir().unwrap_or_default().as_path()) {
452-
println!(
453-
" {:<15} .omni/filters/ ({} filters, TRUSTED) {}",
454-
"Project:".bright_black(),
455-
local_filters.len().to_string().yellow(),
456-
"[OK]".green().bold()
457-
);
458-
} else {
459-
if fix_mode {
460-
let _ = crate::guard::trust::trust_project(
461-
std::env::current_dir().unwrap_or_default().as_path(),
462-
);
449+
if let Ok(cwd) = std::env::current_dir() {
450+
let local_filters_dir = cwd.join(".omni").join("filters");
451+
if local_filters_dir.exists() {
452+
if crate::guard::trust::is_trusted(&cwd.join("omni_config.json")) {
463453
println!(
464-
" {:<15} .omni/filters/ (TRUSTED) {}",
454+
" {:<15} .omni/filters/ ({} filters, TRUSTED) {}",
465455
"Project:".bright_black(),
466-
"[FIXED]".green().bold()
456+
local_report.filters.len().to_string().yellow(),
457+
"[OK]".green().bold()
467458
);
468459
} else {
469-
println!(
470-
" {:<15} .omni/filters/ (NOT TRUSTED) {}",
471-
"Project:".bright_black(),
472-
"[WARNING]".yellow().bold()
473-
);
474-
warnings.push("Project filters found but not trusted. Run: `omni trust`.");
475-
all_ok = false;
460+
if fix_mode {
461+
let _ = crate::guard::trust::trust_project(&cwd);
462+
println!(
463+
" {:<15} .omni/filters/ (TRUSTED) {}",
464+
"Project:".bright_black(),
465+
"[FIXED]".green().bold()
466+
);
467+
} else {
468+
println!(
469+
" {:<15} .omni/filters/ ({} filters, NOT TRUSTED) {}",
470+
"Project:".bright_black(),
471+
local_report.filters.len().to_string().yellow(),
472+
"[WARNING]".yellow().bold()
473+
);
474+
warnings.push("Project filters found but not trusted. Run: `omni trust`.");
475+
all_ok = false;
476+
}
476477
}
478+
} else {
479+
println!(
480+
" {:<15} {}",
481+
"Project:".bright_black(),
482+
"none".bright_black()
483+
);
484+
}
485+
}
486+
487+
// --- Elegant Warning Display ---
488+
let mut all_filter_warnings = Vec::new();
489+
all_filter_warnings.extend(built_in.warnings);
490+
all_filter_warnings.extend(user_report.warnings);
491+
all_filter_warnings.extend(local_report.warnings);
492+
493+
if !all_filter_warnings.is_empty() {
494+
for warning in all_filter_warnings.iter().take(5) {
495+
println!(
496+
" {:<15} {}",
497+
"Warning:".yellow().bold(),
498+
warning.bright_black()
499+
);
500+
}
501+
if all_filter_warnings.len() > 5 {
502+
println!(
503+
" {:<15} ... and {} more",
504+
"".repeat(15),
505+
(all_filter_warnings.len() - 5).to_string().bright_black()
506+
);
477507
}
478-
} else {
479-
println!(" {:<15} none", "Project:".bright_black());
480508
}
481509

482510
if let Some(latest) = crate::guard::update::check() {

0 commit comments

Comments
 (0)