inkpad_cli/cmd/
list.rs

1//! List all contracts
2use crate::{util, Result, Storage};
3use inkpad_support::types::Metadata;
4use parity_scale_codec::Decode;
5
6/// List all contracts
7pub fn exec(store: &Storage) -> Result<()> {
8    let mut contracts: Vec<Metadata> = Vec::new();
9    for r in store.db.iter() {
10        let (k, v) = r?;
11        if k.len() == 32 {
12            contracts.push(Metadata::decode(&mut v.as_ref())?);
13        }
14    }
15
16    let mut output: String = format!("\n\t{} {}\n", util::pad("contract", 20), "code-hash");
17    output.push_str(&format!("\t{}\n", &"-".repeat(87)));
18    contracts.iter().for_each(|c| {
19        output.push_str(&format!(
20            "\t{} {}\n",
21            &util::pad(&c.contract.name, 20),
22            &c.source.hash
23        ))
24    });
25
26    println!("{}", output);
27    Ok(())
28}