use crate::invocation::app::run_from_args;
use std::process::ExitCode;
pub struct EntryPoint;
impl EntryPoint {
pub const SUBCOMMAND: &'static str = "crap4rust";
pub fn without_cargo_subcommand(args: Vec<String>) -> Vec<String> {
if args.get(1).map(String::as_str) != Some(Self::SUBCOMMAND) {
return args;
}
let mut forwarded = Vec::with_capacity(args.len().saturating_sub(1));
let mut rest = args.into_iter();
if let Some(binary) = rest.next() {
forwarded.push(binary);
}
forwarded.extend(rest.skip(1));
forwarded
}
pub fn run(args: Vec<String>) -> ExitCode {
match run_from_args(Self::without_cargo_subcommand(args)) {
Ok(code) => code,
Err(error) => {
println!("error: {error:#}");
ExitCode::from(2)
}
}
}
}