helix/dna/mds/
diff.rs

1use std::path::PathBuf;
2use crate::mds::loader::BinaryLoader;
3
4pub fn diff_command(
5    file1: PathBuf,
6    file2: PathBuf,
7    detailed: bool,
8) -> Result<(), Box<dyn std::error::Error>> {
9    let loader = BinaryLoader::new();
10    let binary1 = loader.load_file(&file1)?;
11    let binary2 = loader.load_file(&file2)?;
12    println!("Comparing binaries:");
13    println!("  File 1: {}", file1.display());
14    println!("  File 2: {}", file2.display());
15    println!();
16    if binary1.version != binary2.version {
17        println!("⚠️  Version differs: {} vs {}", binary1.version, binary2.version);
18    }
19    if binary1.size() != binary2.size() {
20        println!("⚠️  Size differs: {} vs {} bytes", binary1.size(), binary2.size());
21    }
22    let stats1 = binary1.symbol_table.stats();
23    let stats2 = binary2.symbol_table.stats();
24    if stats1.total_strings != stats2.total_strings {
25        println!(
26            "⚠️  String count differs: {} vs {}", stats1.total_strings, stats2
27            .total_strings
28        );
29    }
30    if detailed {}
31    Ok(())
32}