#![cfg_attr(coverage_nightly, coverage(off))]
use crate::cli::RefactorDocsOutputFormat;
use anyhow::{Context, Result};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::fs;
use std::path::{Path, PathBuf};
use std::time::SystemTime;
use tokio::io::{self, AsyncBufReadExt, AsyncWriteExt, BufReader};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum FileCategory {
TemporaryScript,
StatusReport,
BuildArtifact,
TestFixture,
CustomPattern,
Unknown,
}
impl std::fmt::Display for FileCategory {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
FileCategory::TemporaryScript => write!(f, "Temporary Script"),
FileCategory::StatusReport => write!(f, "Status Report"),
FileCategory::BuildArtifact => write!(f, "Build Artifact"),
FileCategory::TestFixture => write!(f, "Test Fixture"),
FileCategory::CustomPattern => write!(f, "Custom Pattern"),
FileCategory::Unknown => write!(f, "Unknown"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CruftFile {
pub path: PathBuf,
pub category: FileCategory,
pub size_bytes: u64,
pub modified: SystemTime,
pub age_days: u32,
pub reason: String,
pub pattern_matched: String,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct CleanupSummary {
pub total_files_scanned: usize,
pub cruft_files_found: usize,
pub total_size_bytes: u64,
pub files_by_category: HashMap<String, usize>,
pub size_by_category: HashMap<String, u64>,
pub oldest_file_days: u32,
pub newest_file_days: u32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RefactorDocsResult {
pub cruft_files: Vec<CruftFile>,
pub summary: CleanupSummary,
pub preserved_files: Vec<PathBuf>,
pub errors: Vec<String>,
}
struct DirectoryResult {
cruft_files: Vec<CruftFile>,
preserved_files: Vec<PathBuf>,
errors: Vec<String>,
files_scanned: usize,
summary: CleanupSummary,
}
include!("refactor_docs_orchestration.rs");
include!("refactor_docs_scanning.rs");
include!("refactor_docs_output.rs");
#[cfg(test)]
#[path = "refactor_docs_handlers_tests.rs"]
mod tests;