///|
fn main raise {
let before = @disk.Snapshot::new("demo-workspace", 1000000L, [
@disk.Entry::new("src", Directory, 0L, 900000L),
@disk.Entry::new("src/main.mbt", Regular, 4096L, 900000L),
@disk.Entry::new("assets", Directory, 0L, 900000L),
@disk.Entry::new("assets/logo.png", Regular, 65536L, 900000L),
@disk.Entry::new("_build", Directory, 0L, 900000L),
])
let after = @disk.Snapshot::new("demo-workspace", 20000000L, [
@disk.Entry::new("src", Directory, 0L, 19000000L),
@disk.Entry::new("src/main.mbt", Regular, 6144L, 19000000L),
@disk.Entry::new("assets", Directory, 0L, 900000L),
@disk.Entry::new("assets/logo.png", Regular, 65536L, 900000L),
@disk.Entry::new("_build", Directory, 0L, 19000000L),
@disk.Entry::new("_build/cache.bin", Regular, 1048576L, 19000000L),
])
println("=== 1. Analyze a snapshot ===")
println(@disk.render_summary(after, limit=3))
println("\n=== 2. Explain workspace growth ===")
let diff = @disk.compare_snapshots(before, after)
println(@disk.render_diff_summary(diff, limit=5))
println("\n=== 3. Rank directory growth hotspots ===")
println(
@disk.render_directory_hotspots(
@disk.directory_hotspots(diff, depth=1),
limit=5,
),
)
println("\n=== 4. Compare storage composition ===")
println(
@disk.render_composition_drift(
@disk.compare_composition(before, after, Category),
limit=5,
),
)
println("\n=== 5. Enforce a growth policy ===")
let growth_policy = @disk.GrowthPolicy::{
format_version: 1,
maximum_net_growth_bytes: 2097152L,
maximum_added_files: 10,
maximum_removed_files: 10,
maximum_changed_files: 10,
maximum_single_file_growth_bytes: 2097152L,
protected_patterns: [],
}
println(
@disk.render_growth_policy_result(
@disk.evaluate_growth_policy(before, after, growth_policy),
),
)
println("\n=== 6. Forecast storage growth ===")
let history = @disk.append_history_snapshot(
@disk.history_from_snapshot(before),
after,
)
println(
@disk.render_storage_forecast(
@disk.forecast_storage(history, 7),
capacity=Some(@disk.estimate_capacity(history, 5242880L)),
),
)
println("\n=== 7. Build a reviewable cleanup plan ===")
let candidates = @disk.evaluate_rules(
@disk.default_rule_set().rules,
after,
after.created_at,
)
let plan = @disk.build_cleanup_plan(
after,
candidates,
"demo-quarantine",
after.created_at,
)
println(@disk.render_plan(plan))
println("\nDemo complete: no real files were read, moved, or deleted.")
}