pub mod build;
#[derive(Debug, Default, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(input_context = crate::GlobalContext)]
#[interactive_clap(output_context = BuildCommandlContext)]
pub struct BuildCommand {
#[interactive_clap(long)]
pub no_release: bool,
#[interactive_clap(long)]
pub no_abi: bool,
#[interactive_clap(long)]
pub no_embed_abi: bool,
#[interactive_clap(long)]
pub no_doc: bool,
#[interactive_clap(long)]
#[interactive_clap(skip_interactive_input)]
pub out_dir: Option<crate::types::utf8_path_buf::Utf8PathBuf>,
#[interactive_clap(long)]
#[interactive_clap(skip_interactive_input)]
pub manifest_path: Option<crate::types::utf8_path_buf::Utf8PathBuf>,
#[interactive_clap(long)]
#[interactive_clap(skip_interactive_input)]
pub features: Option<String>,
#[interactive_clap(long)]
#[interactive_clap(skip_interactive_input)]
pub no_default_features: bool,
#[interactive_clap(long)]
#[interactive_clap(value_enum)]
#[interactive_clap(skip_interactive_input)]
pub color: Option<crate::common::ColorPreference>,
}
#[derive(Debug, Clone)]
pub struct BuildCommandlContext;
impl BuildCommandlContext {
pub fn from_previous_context(
_previous_context: crate::GlobalContext,
scope: &<BuildCommand as interactive_clap::ToInteractiveClapContextScope>::InteractiveClapContextScope,
) -> color_eyre::eyre::Result<Self> {
let args = BuildCommand {
no_release: scope.no_release,
no_abi: scope.no_abi,
no_embed_abi: scope.no_embed_abi,
no_doc: scope.no_doc,
out_dir: scope.out_dir.clone(),
manifest_path: scope.manifest_path.clone(),
features: scope.features.clone(),
no_default_features: scope.no_default_features,
color: scope.color.clone(),
};
self::build::run(args)?;
Ok(Self)
}
}