use std::path::PathBuf;
use light_fw_cli_core::vendor::{DEFAULT_VENDOR_DIR, VendorOptions, apply_vendor, plan_vendor};
#[derive(clap::Args)]
pub struct VendorArgs {
#[arg(value_name = "PATH", conflicts_with = "path")]
pub path_positional: Option<PathBuf>,
#[arg(long, value_name = "PATH")]
pub path: Option<PathBuf>,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub offline: bool,
}
pub fn run(args: VendorArgs) -> anyhow::Result<i32> {
let output = args
.path
.or(args.path_positional)
.unwrap_or_else(|| PathBuf::from(DEFAULT_VENDOR_DIR));
let project = std::env::current_dir()?;
let opts = VendorOptions {
output,
dry_run: args.dry_run,
offline: args.offline,
};
let plan = plan_vendor(&project, &opts)?;
print!("{}", plan.to_text());
let vendored = apply_vendor(&plan, opts.dry_run)?;
if opts.dry_run {
println!("(dry-run: файлы не скопированы)");
} else {
println!("✓ вендорено компонентов: {}", vendored.len());
}
Ok(0)
}