use std::path::PathBuf;
use structopt::StructOpt;
use crate::package_contents::PackageContents;
#[derive(Debug, StructOpt)]
pub struct PackageSubcommand {
#[structopt(long = "project-path", default_value = ".")]
pub project_path: PathBuf,
#[structopt(short, long)]
pub list: bool,
#[structopt(long = "output", required_unless("list"))]
pub output_path: Option<PathBuf>,
}
impl PackageSubcommand {
pub fn run(self) -> anyhow::Result<()> {
if self.list {
let contents_list = PackageContents::filtered_contents(&self.project_path)?;
for path in contents_list {
println!("{}", path.display());
}
} else {
let contents = PackageContents::pack_from_path(&self.project_path)?;
fs_err::write(&self.output_path.unwrap(), contents.data())?;
}
Ok(())
}
}