Skip to content

Commit db84558

Browse files
committed
cli: export scripts and types on inspection as separate files
1 parent 81d98ae commit db84558

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

cli/src/command.rs

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use std::path::PathBuf;
2525
use std::str::FromStr;
2626

2727
use amplify::confinement::{SmallOrdMap, TinyOrdMap, TinyOrdSet, U16};
28+
use baid58::ToBaid58;
2829
use bp_util::{BpCommand, Config, Exec};
2930
use bpstd::Sats;
3031
use psbt::{Psbt, PsbtVer};
@@ -40,6 +41,7 @@ use rgbstd::invoice::{Beneficiary, RgbInvoice, RgbInvoiceBuilder, XChainNet};
4041
use rgbstd::persistence::{Inventory, Stash};
4142
use rgbstd::schema::SchemaId;
4243
use rgbstd::validation::Validity;
44+
use rgbstd::vm::RgbIsa;
4345
use rgbstd::{AssetTag, AssignmentType, BundleId, OutputSeal, XChain, XOutputSeal};
4446
use seals::txout::CloseMethod;
4547
use serde_crate::{Deserialize, Serialize};
@@ -804,17 +806,36 @@ impl Exec for RgbArgs {
804806
};
805807
if let Some((contract, sigs)) = contract {
806808
let mut map = map![
807-
s!("genesis") => serde_yaml::to_string(&contract.genesis)?,
808-
s!("schema") => serde_yaml::to_string(&contract.schema)?,
809-
s!("bundles") => serde_yaml::to_string(&contract.bundles)?,
810-
s!("extensions") => serde_yaml::to_string(&contract.extensions)?,
811-
s!("sigs") => serde_yaml::to_string(&sigs)?
809+
s!("genesis.yaml") => serde_yaml::to_string(&contract.genesis)?,
810+
s!("schema.yaml") => serde_yaml::to_string(&contract.schema)?,
811+
s!("bundles.yaml") => serde_yaml::to_string(&contract.bundles)?,
812+
s!("extensions.yaml") => serde_yaml::to_string(&contract.extensions)?,
813+
s!("sigs.yaml") => serde_yaml::to_string(&sigs)?,
814+
s!("schema-types.sty") => contract.schema.types.to_string(),
812815
];
816+
for (id, lib) in &contract.schema.script.as_alu_script().libs {
817+
let mut buf = Vec::new();
818+
lib.print_disassemble::<RgbIsa>(&mut buf)?;
819+
map.insert(format!("{}.aluasm", id.to_baid58().mnemonic()), unsafe {
820+
String::from_utf8_unchecked(buf)
821+
});
822+
}
813823
for (_, pair) in contract.ifaces {
814824
map.insert(
815-
format!("iface-{}", pair.iface.name),
825+
format!("iface-{}.yaml", pair.iface.name),
816826
serde_yaml::to_string(&pair)?,
817827
);
828+
map.insert(
829+
format!("iface-{}.sty", pair.iface.name),
830+
pair.iface.types.to_string(),
831+
);
832+
for (id, lib) in &pair.iimpl.script.as_alu_script().libs {
833+
let mut buf = Vec::new();
834+
lib.print_disassemble::<RgbIsa>(&mut buf)?;
835+
map.insert(format!("{}.aluasm", id.to_baid58().mnemonic()), unsafe {
836+
String::from_utf8_unchecked(buf)
837+
});
838+
}
818839
}
819840
let contract = ConsignmentInspection {
820841
version: contract.version,
@@ -824,11 +845,11 @@ impl Exec for RgbArgs {
824845
supplements: contract.supplements,
825846
signatures: contract.signatures,
826847
};
827-
map.insert(s!("consignment-meta"), serde_yaml::to_string(&contract)?);
848+
map.insert(s!("consignment-meta.yaml"), serde_yaml::to_string(&contract)?);
828849
let path = path.as_ref().expect("required by clap");
829850
fs::create_dir_all(path)?;
830851
for (file, value) in map {
831-
fs::write(format!("{}/{file}.yaml", path.display()), value)?;
852+
fs::write(format!("{}/{file}", path.display()), value)?;
832853
}
833854
}
834855
None

0 commit comments

Comments
 (0)