cli_xtask/subcommand/
dist.rs1use crate::{config::Config, Result, Run};
2
3#[cfg_attr(doc, doc = include_str!("../../doc/cargo-xtask-dist.md"))]
5#[derive(Debug, Clone, Default, clap::Args)]
6#[non_exhaustive]
7pub struct Dist {
8 #[cfg(subcommand_dist_build)]
10 #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-*")))]
11 #[clap(flatten)]
12 pub dist_build_args: super::DistBuild,
13 #[clap(flatten)]
15 pub dist_archive_args: super::DistArchive,
16}
17
18impl Run for Dist {
19 fn run(&self, config: &Config) -> Result<()> {
20 self.run(config)
21 }
22}
23
24impl Dist {
25 #[tracing::instrument(name = "dist", skip_all, err)]
27 pub fn run(&self, config: &Config) -> Result<()> {
28 let Self {
29 #[cfg(subcommand_dist_build)]
30 dist_build_args,
31 dist_archive_args,
32 } = self;
33 let dist_config = config.dist()?;
34
35 let working_dir = dist_config.dist_base_working_directory();
36 crate::fs::create_or_cleanup_dir(working_dir)?;
37
38 #[cfg(subcommand_dist_build)]
39 dist_build_args.run(config)?;
40
41 dist_archive_args.run(config)?;
42
43 Ok(())
44 }
45}