cargo_component/commands/
bindings.rs1use anyhow::Result;
2use cargo_component_core::command::CommonOptions;
3use clap::Args;
4
5use crate::{
6 config::Config, generate_bindings, load_component_metadata, load_metadata, CargoArguments,
7};
8
9#[derive(Args)]
15#[clap(disable_version_flag = true)]
16pub struct BindingsCommand {
17 #[clap(flatten)]
19 pub common: CommonOptions,
20}
21
22impl BindingsCommand {
23 pub async fn exec(self) -> Result<()> {
25 log::debug!("generating bindings");
26
27 let config = Config::new(self.common.new_terminal(), self.common.config.clone()).await?;
28
29 let client = config.client(self.common.cache_dir.clone(), false).await?;
30
31 let cargo_args = CargoArguments::parse()?;
32 let metadata = load_metadata(None)?;
33 let packages =
34 load_component_metadata(&metadata, cargo_args.packages.iter(), cargo_args.workspace)?;
35 let _import_name_map =
36 generate_bindings(client, &config, &metadata, &packages, &cargo_args).await?;
37
38 Ok(())
39 }
40}