libwally/commands/
package.rs1use std::path::PathBuf;
2
3use structopt::StructOpt;
4
5use crate::package_contents::PackageContents;
6
7#[derive(Debug, StructOpt)]
10pub struct PackageSubcommand {
11 #[structopt(long = "project-path", default_value = ".")]
13 pub project_path: PathBuf,
14
15 #[structopt(short, long)]
18 pub list: bool,
19
20 #[structopt(long = "output", required_unless("list"))]
22 pub output_path: Option<PathBuf>,
23}
24
25impl PackageSubcommand {
26 pub fn run(self) -> anyhow::Result<()> {
27 if self.list {
28 let contents_list = PackageContents::filtered_contents(&self.project_path)?;
29
30 for path in contents_list {
31 println!("{}", path.display());
32 }
33 } else {
34 let contents = PackageContents::pack_from_path(&self.project_path)?;
35 fs_err::write(&self.output_path.unwrap(), contents.data())?;
36 }
37
38 Ok(())
39 }
40}