Skip to content

Commit

Permalink
Use RuntimeMetadataPrefixed instead of RuntimeMetadata (#70)
Browse files Browse the repository at this point in the history
* Switch back to macos-latest

* Fix scale format output

fix #69

* Fix to ensure the json export matches the previous format

* Make clear what is prefixed and what is not
  • Loading branch information
chevdor authored May 10, 2023
1 parent a9b0b62 commit 24b924d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
env:
TARGET_DIR: target/production

runs-on: macos-10.15
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
Expand Down
20 changes: 12 additions & 8 deletions lib/src/metadata_wrapper.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::io::Write;

use color_eyre::eyre::eyre;
use frame_metadata::RuntimeMetadata;
use frame_metadata::{RuntimeMetadata, RuntimeMetadataPrefixed};
use log::debug;
use scale_info::scale::Encode;

Expand Down Expand Up @@ -35,7 +35,7 @@ impl<S: AsRef<str>> From<S> for OutputFormat {
}
}

pub struct MetadataWrapper<'a>(pub &'a RuntimeMetadata);
pub struct MetadataWrapper<'a>(pub &'a RuntimeMetadataPrefixed);

impl<'a> MetadataWrapper<'a> {
pub fn write<O: Write>(&self, fmt: OutputFormat, filter: Option<String>, out: &mut O) -> color_eyre::Result<()> {
Expand All @@ -53,29 +53,33 @@ impl<'a> MetadataWrapper<'a> {
if filter.is_some() {
return Err(eyre!("Cannot filter metadata in json format"));
} else {
serde_json::to_writer_pretty(out, &self.0)?;
let runtime_metadata = &self.0 .1;
serde_json::to_writer_pretty(out, runtime_metadata)?;
}
}
OutputFormat::Scale => {
if filter.is_some() {
return Err(eyre!("Cannot filter metadata in scale format"));
} else {
out.write_all(&self.0.encode())?;
let runtime_metadata_prefixed = &self.0;
out.write_all(&runtime_metadata_prefixed.encode())?;
}
}
OutputFormat::HexScale => {
if filter.is_some() {
return Err(eyre!("Cannot filter metadata in hex+scale format"));
} else {
let encoded = self.0.encode();
let runtime_metadata_prefixed = &self.0;
let encoded = runtime_metadata_prefixed.encode();
write!(out, "0x{}", hex::encode(encoded))?;
}
}
OutputFormat::JsonScale => {
if filter.is_some() {
return Err(eyre!("Cannot filter metadata in json+scale format"));
} else {
let encoded = self.0.encode();
let runtime_metadata_prefixed = &self.0;
let encoded = runtime_metadata_prefixed.encode();
let hex = format!("0x{}", hex::encode(encoded));
let json = serde_json::to_string_pretty(&serde_json::json!({ "result": hex }))?;
write!(out, "{json}")?;
Expand All @@ -89,7 +93,7 @@ impl<'a> MetadataWrapper<'a> {
/// Starting with V12, modules are identified by indexes so
/// the order they appear in the metadata no longer matters and we sort them by indexes.
pub fn write_modules_list<O: Write>(&self, out: &mut O) -> color_eyre::Result<()> {
match &self.0 {
match &self.0 .1 {
RuntimeMetadata::V12(v12) => {
let mut modules = convert(&v12.modules).clone();
modules.sort_by(|a, b| a.index.cmp(&b.index));
Expand Down Expand Up @@ -121,7 +125,7 @@ impl<'a> MetadataWrapper<'a> {
pub fn write_single_module<O: Write>(&self, filter: &str, out: &mut O) -> color_eyre::Result<()> {
debug!("metadata_wapper::write_module with filter: {:?}", filter);

match &self.0 {
match &self.0 .1 {
RuntimeMetadata::V12(v12) => {
write_module!(convert(&v12.modules), filter, out);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/src/subwasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ impl Subwasm {
out: &mut O,
) -> color_eyre::Result<()> {
let metadata = self.testbed.runtime_metadata_prefixed();
let wrapper = MetadataWrapper(&metadata.1);
let wrapper = MetadataWrapper(metadata);
wrapper.write(fmt, filter, out)
}
}

0 comments on commit 24b924d

Please sign in to comment.