use clap::Parser;

#[derive(Debug, Parser)]
#[command(version, about)]
pub struct Args {
    /// Input file
    pub file: String,

    /// Memory-mapped address for CPU input (read-only)
    #[arg(short = 'I', long)]
    pub input_addr: Option<u8>,

    /// Memory-mapped address for CPU output (write-only)
    #[arg(short = 'O', long)]
    pub output_addr: Option<u8>,

    /// Assemble the given file before running
    #[arg(short, long)]
    pub assemble: bool,

    /// If given, it will write the assembled program to a file instead of running it
    #[arg(short = 'o', long)]
    pub assembler_output: Option<String>,

    /// Dump the CPU info after running
    #[arg(short, long)]
    pub dump: bool,

    /// Run in debug mode
    #[arg(short = 'D', long)]
    pub debug: bool,
}
