1use crate::{util, Result, Storage};
3use inkpad_support::types::Metadata;
4use parity_scale_codec::Decode;
5
6pub 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}