chug-cli 0.1.1

The fastest way to consume Homebrew bottles
Documentation
//! Detect file magic numbers

use std::{fs::File, io::Read, path::Path};

pub enum Magic {
    MachO,
    FatMachO,
    Elf,
    Unknown,
}

pub fn detect(path: &Path) -> anyhow::Result<Magic> {
    let mut file = File::open(path)?;
    let mut magic = [0u8; 4];
    file.read_exact(&mut magic)?;

    match u32::from_be_bytes(magic) {
        0xCAFEBABE => Ok(Magic::FatMachO),
        0xFEEDFACE | 0xFEEDFACF | 0xCEFAEDFE | 0xCFFAEDFE => Ok(Magic::MachO),
        0x7F454C46 => Ok(Magic::Elf),
        _ => Ok(Magic::Unknown),
    }
}