soroban_cli/commands/contract/bindings/
json.rs

1use std::fmt::Debug;
2
3use clap::{command, Parser};
4use soroban_spec_json;
5
6use crate::wasm;
7
8#[derive(Parser, Debug, Clone)]
9#[group(skip)]
10pub struct Cmd {
11    #[command(flatten)]
12    wasm: wasm::Args,
13}
14
15#[derive(thiserror::Error, Debug)]
16pub enum Error {
17    #[error("generate json from file: {0}")]
18    GenerateJsonFromFile(soroban_spec_json::GenerateFromFileError),
19}
20
21impl Cmd {
22    pub fn run(&self) -> Result<(), Error> {
23        let wasm_path_str = self.wasm.wasm.to_string_lossy();
24        let json = soroban_spec_json::generate_from_file(&wasm_path_str, None)
25            .map_err(Error::GenerateJsonFromFile)?;
26        println!("{json}");
27        Ok(())
28    }
29}