crate::ix!();
#[derive(Getters,Setters,Debug,StructOpt)]
#[getset(get="pub")]
pub struct AddCrateCommand {
#[structopt(long = "crate")]
crate_name: String,
#[structopt(long = "workspace")]
workspace_path: Option<PathBuf>,
#[structopt(long = "skip-git-check")]
skip_git_check: bool,
}
impl AddCrateCommand {
pub async fn run(&self) -> Result<(), WorkspaceError> {
trace!(
"AddSubcommand::Crate invoked with crate_name='{}', workspace_path='{:?}', skip_git_check={}",
self.crate_name(),
self.workspace_path(),
self.skip_git_check(),
);
let crate_name_owned = self.crate_name().clone();
run_with_workspace_and_crate_name(
self.workspace_path().clone(),
*self.skip_git_check(),
crate_name_owned, |ws, new_crate_name| {
Box::pin(async move {
info!("Now performing 'add new crate to workspace' for '{}'", new_crate_name);
ws.add_new_crate_to_workspace(new_crate_name).await?;
debug!("Successfully added crate='{}' via subcommand logic", new_crate_name);
Ok(())
})
},
).await?;
Ok(())
}
}