soroban_cli/commands/contract/id/
asset.rs1use clap::Parser;
2
3use crate::config;
4use crate::config::token::UnresolvedToken;
5
6use crate::tx::builder;
7
8#[derive(Parser, Debug, Clone)]
9#[group(skip)]
10pub struct Cmd {
11 #[arg(long)]
13 pub asset: builder::Asset,
14
15 #[command(flatten)]
16 pub config: config::ArgsLocatorAndNetwork,
17}
18#[derive(thiserror::Error, Debug)]
19pub enum Error {
20 #[error(transparent)]
21 ConfigError(#[from] config::Error),
22 #[error(transparent)]
23 Xdr(#[from] crate::xdr::Error),
24 #[error(transparent)]
25 Token(#[from] config::token::Error),
26}
27impl Cmd {
28 pub fn run(&self) -> Result<(), Error> {
29 println!("{}", self.contract_address()?);
30 Ok(())
31 }
32
33 pub fn contract_address(&self) -> Result<stellar_strkey::Contract, Error> {
34 let network = self.config.get_network()?;
35 let token = UnresolvedToken::Asset(self.asset.clone())
36 .resolve(&self.config.locator, &network.network_passphrase)?;
37 Ok(token.contract_id)
38 }
39}