starknet-contract-verifier 0.5.0

DEPRECATED: Use voyager-verifier instead. This package redirects to the new voyager-verifier package.
fn main() {
    eprintln!("⚠️  You're using the deprecated starknet-contract-verifier package!");
    eprintln!("📦 Please install voyager-verifier instead:");
    eprintln!("   cargo uninstall starknet-contract-verifier");
    eprintln!("   cargo install voyager-verifier");
    eprintln!();
    eprintln!("🔗 Repository: https://github.com/NethermindEth/voyager-verifier");
    eprintln!();

    // For now, forward to the actual voyager binary
    use std::process::Command;

    let args: Vec<String> = std::env::args().skip(1).collect();
    let mut cmd = Command::new("voyager");
    cmd.args(&args);

    if CommandExtUnix::exec(&mut cmd).is_err() {
        eprintln!("❌ Could not find 'voyager' binary. Please install voyager-verifier:");
        eprintln!("   cargo install voyager-verifier");
        std::process::exit(1);
    }
}

#[cfg(unix)]
use std::os::unix::process::CommandExt;
#[cfg(unix)]
use std::process::Command;

#[cfg(unix)]
trait CommandExtUnix {
    fn exec(&mut self) -> std::io::Result<()>;
}

#[cfg(unix)]
impl CommandExtUnix for Command {
    fn exec(&mut self) -> std::io::Result<()> {
        let _ = CommandExt::exec(self);
        Ok(()) // This line should never be reached
    }
}

#[cfg(not(unix))]
use std::process::Command;

#[cfg(not(unix))]
trait CommandExtUnix {
    fn exec(&mut self) -> std::io::Result<()>;
}

#[cfg(not(unix))]
impl CommandExtUnix for Command {
    fn exec(&mut self) -> std::io::Result<()> {
        let status = self.status()?;
        std::process::exit(status.code().unwrap_or(1));
    }
}