cli_xtask/subcommand/
dist_build.rs

1use crate::{config::Config, Result, Run};
2
3/// Arguments definition of the `dist-build` subcommand.
4#[cfg_attr(doc, doc = include_str!("../../doc/cargo-xtask-dist-build.md"))]
5#[derive(Debug, Clone, Default, clap::Args)]
6#[non_exhaustive]
7pub struct DistBuild {
8    /// `dist-build-bin` subcommand arguments.
9    #[cfg(feature = "subcommand-dist-build-bin")]
10    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-bin")))]
11    #[clap(flatten)]
12    pub dist_build_bin_args: super::DistBuildBin,
13
14    /// `dist-build-completion` subcommand arguments.
15    #[cfg(feature = "subcommand-dist-build-completion")]
16    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-completion")))]
17    #[clap(flatten)]
18    pub dist_build_completion_args: super::DistBuildCompletion,
19
20    /// `dist-build-doc` subcommand arguments.
21    #[cfg(feature = "subcommand-dist-build-doc")]
22    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-doc")))]
23    #[clap(flatten)]
24    pub dist_build_doc_args: super::DistBuildDoc,
25
26    /// `dist-build-license` subcommand arguments.
27    #[cfg(feature = "subcommand-dist-build-license")]
28    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-license")))]
29    #[clap(flatten)]
30    pub dist_build_license_args: super::DistBuildLicense,
31
32    /// `dist-build-man` subcommand arguments.
33    #[cfg(feature = "subcommand-dist-build-man")]
34    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-man")))]
35    #[clap(flatten)]
36    pub dist_build_man_args: super::DistBuildMan,
37
38    /// `dist-build-readme` subcommand arguments.
39    #[cfg(feature = "subcommand-dist-build-readme")]
40    #[cfg_attr(docsrs, doc(cfg(feature = "subcommand-dist-build-readme")))]
41    #[clap(flatten)]
42    pub dist_build_readme_args: super::DistBuildReadme,
43}
44
45impl Run for DistBuild {
46    fn run(&self, config: &Config) -> Result<()> {
47        self.run(config)
48    }
49}
50
51impl DistBuild {
52    /// Runs the `dist-build` subcommand.
53    #[tracing::instrument(name = "dist-build", skip_all, err)]
54    pub fn run(&self, config: &Config) -> Result<()> {
55        let Self {
56            #[cfg(feature = "subcommand-dist-build-bin")]
57            dist_build_bin_args,
58            #[cfg(feature = "subcommand-dist-build-completion")]
59            dist_build_completion_args,
60            #[cfg(feature = "subcommand-dist-build-doc")]
61            dist_build_doc_args,
62            #[cfg(feature = "subcommand-dist-build-license")]
63            dist_build_license_args,
64            #[cfg(feature = "subcommand-dist-build-man")]
65            dist_build_man_args,
66            #[cfg(feature = "subcommand-dist-build-readme")]
67            dist_build_readme_args,
68        } = self;
69
70        #[cfg(feature = "subcommand-dist-build-bin")]
71        dist_build_bin_args.run(config)?;
72
73        #[cfg(feature = "subcommand-dist-build-completion")]
74        dist_build_completion_args.run(config)?;
75
76        #[cfg(feature = "subcommand-dist-build-doc")]
77        dist_build_doc_args.run(config)?;
78
79        #[cfg(feature = "subcommand-dist-build-license")]
80        dist_build_license_args.run(config)?;
81
82        #[cfg(feature = "subcommand-dist-build-man")]
83        dist_build_man_args.run(config)?;
84
85        #[cfg(feature = "subcommand-dist-build-readme")]
86        dist_build_readme_args.run(config)?;
87
88        Ok(())
89    }
90}