soroban_cli/commands/tx/new/
change_trust.rs1use clap::Parser;
2
3use crate::{commands::tx, tx::builder, xdr};
4
5#[derive(Parser, Debug, Clone)]
6#[group(skip)]
7pub struct Cmd {
8 #[command(flatten)]
9 pub tx: tx::Args,
10 #[clap(flatten)]
11 pub op: Args,
12}
13
14#[derive(Debug, clap::Args, Clone)]
15pub struct Args {
16 #[arg(long)]
17 pub line: builder::Asset,
18 #[arg(long, default_value = i64::MAX.to_string())]
20 pub limit: i64,
21}
22
23impl TryFrom<&Cmd> for xdr::OperationBody {
24 type Error = tx::args::Error;
25 fn try_from(cmd: &Cmd) -> Result<Self, Self::Error> {
26 let asset = cmd.tx.resolve_asset(&cmd.op.line)?;
27 let line = match asset {
28 xdr::Asset::CreditAlphanum4(asset) => xdr::ChangeTrustAsset::CreditAlphanum4(asset),
29 xdr::Asset::CreditAlphanum12(asset) => xdr::ChangeTrustAsset::CreditAlphanum12(asset),
30 xdr::Asset::Native => xdr::ChangeTrustAsset::Native,
31 };
32 Ok(xdr::OperationBody::ChangeTrust(xdr::ChangeTrustOp {
33 line,
34 limit: cmd.op.limit,
35 }))
36 }
37}