use clap::{Args, Parser, crate_authors, crate_description, crate_version};
use getset::Getters;
use std::path::PathBuf;
#[derive(Debug, Parser)]
#[command(name = "cargo")]
#[command(bin_name = "cargo")]
pub(crate) enum Cargo {
Matrix(MatrixArgs),
}
#[derive(Args, Debug, Getters)]
#[clap(
author = crate_authors!(),
version = crate_version!(),
about = crate_description!(),
)]
#[command(version, about, long_about = None)]
#[getset(get = "pub(crate)")]
pub(crate) struct MatrixArgs {
#[clap(long, short)]
channel: Option<String>,
#[clap(long)]
dry_run: bool,
#[arg(long)]
manifest_path: Option<PathBuf>,
#[arg(long, short)]
package: Option<String>,
#[arg(
long,
default_value_t = 1,
requires = "chunk",
help = "Split the workspace into n chunks, each chunk containing a roughly equal number of crates"
)]
num_chunks: usize,
#[arg(
long,
default_value_t = 1,
requires = "num_chunks",
help = "Which chunk to test, indexed at 1"
)]
chunk: usize,
#[clap(trailing_var_arg = true, allow_hyphen_values = true, required = true, num_args = 1..)]
command: Vec<String>,
}