use anyhow::Result;
use clap::Parser;
use std::path::PathBuf;
#[derive(Parser, Debug)]
pub struct BuildCommand {
#[arg(required = true)]
pub package_file: PathBuf,
#[arg(long)]
pub r#type: Option<String>,
#[arg(long, short, num_args = 1.., default_values_t = vec!["current".to_string()])]
pub platform: Vec<String>,
#[arg(long, num_args = 1..)]
pub sub: Option<Vec<String>>,
#[arg(long)]
pub sign: Option<String>,
#[arg(long)]
pub test: bool,
#[arg(long, short = 'o')]
pub output_dir: Option<PathBuf>,
#[arg(long)]
pub install_deps: bool,
#[arg(long)]
pub version_override: Option<String>,
#[arg(long, default_value = "native")]
pub method: String,
#[arg(long)]
pub image: Option<String>,
#[arg(long)]
pub fakeroot: bool,
}
pub fn run(args: BuildCommand) -> Result<()> {
if args.test {
println!("Running tests before building...");
crate::pkg::package::test::run(&args)?;
println!("Tests passed, proceeding with build...");
}
crate::pkg::package::build::run(
&args.package_file,
args.r#type.as_deref(),
&args.platform,
args.sign,
args.output_dir.as_deref(),
args.version_override.as_deref(),
args.sub,
false,
args.install_deps,
&args.method,
args.image.as_deref(),
args.fakeroot,
)
}