use clap::{crate_version, Parser};
pub mod opt;
pub mod sim;
#[derive(Parser, Debug)]
#[clap(version = crate_version!(), long_about = None)]
#[clap(about = "QuiZX command line interface")]
pub enum Cli {
Opt(opt::OptArgs),
Sim(sim::SimArgs),
}
#[derive(Debug, derive_more::Display, derive_more::From)]
pub enum CliError {
#[display("IO error: {_0}")]
IO(std::io::Error),
#[display("Error parsing input circuit: {_0}")]
CircuitParse(String),
#[display("Circuit has {_0} qubits, but the provided {_2} string has length {_1}")]
StringWrongLen(usize, usize, String),
}
impl Cli {
pub fn run(self) -> Result<(), CliError> {
match self {
Cli::Opt(args) => args.run(),
Cli::Sim(args) => args.run(),
}
}
}