Skip to content
Snippets Groups Projects
Unverified Commit 00d4ed05 authored by bgallois's avatar bgallois
Browse files

refactor doc generation

parent b43399d6
No related branches found
No related tags found
No related merge requests found
Pipeline #35134 passed
...@@ -255,46 +255,14 @@ pub(super) fn gen_doc() -> Result<()> { ...@@ -255,46 +255,14 @@ pub(super) fn gen_doc() -> Result<()> {
println!("Metadata successfully loaded!"); println!("Metadata successfully loaded!");
let mut runtime = if let frame_metadata::RuntimeMetadata::V14(ref metadata_v14) = metadata.1 { let (mut runtime, max_weight) =
get_from_metadata_v14(metadata_v14.clone())? if let frame_metadata::RuntimeMetadata::V14(ref metadata_v14) = metadata.1 {
} else { (
bail!("unsuported metadata version") get_from_metadata_v14(metadata_v14.clone())?,
}; get_max_weight_from_metadata_v14(metadata_v14.clone())?,
// Compute the weights from the weight files.
// Require the `pallet_xxx.rs` weights,
// the `paritydb_weights.rs` and the `extrinsic_weights.rs`
let max_weight = if let frame_metadata::RuntimeMetadata::V14(metadata_v14) = metadata.1 {
let block_weights = metadata_v14
.pallets
.iter()
.find(|pallet| pallet.name == "System")
.expect("Can't find System pallet metadata")
.constants
.iter()
.find(|constant| constant.name == "BlockWeights")
.expect("Can't find BlockWeights");
let block_weights = scale_value::scale::decode_as_type(
&mut &*block_weights.value,
block_weights.ty.id,
&metadata_v14.types,
) )
.expect("Can't decode max_weight")
.value;
let max_weight: u128 =
if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) = block_weights
&& let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) = &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
&& let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) = &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
{
*k
} else {
0u128
};
max_weight
} else { } else {
0u128 bail!("unsuported metadata version")
}; };
let mut weights = get_weights(max_weight); let mut weights = get_weights(max_weight);
...@@ -360,6 +328,40 @@ pub(super) fn gen_doc() -> Result<()> { ...@@ -360,6 +328,40 @@ pub(super) fn gen_doc() -> Result<()> {
Ok(()) Ok(())
} }
fn get_max_weight_from_metadata_v14(
metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
) -> Result<u128> {
// Compute the weights from the weight files.
// Require the `pallet_xxx.rs` weights,
// the `paritydb_weights.rs` and the `extrinsic_weights.rs`
let block_weights = metadata_v14
.pallets
.iter()
.find(|pallet| pallet.name == "System")
.expect("Can't find System pallet metadata")
.constants
.iter()
.find(|constant| constant.name == "BlockWeights")
.expect("Can't find BlockWeights");
let block_weights = scale_value::scale::decode_as_type(
&mut &*block_weights.value,
block_weights.ty.id,
&metadata_v14.types,
)
.expect("Can't decode max_weight")
.value;
if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) = block_weights
&& let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) = &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
&& let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) = &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
{
Ok(*k)
} else {
bail!("Invalid max_weight")
}
}
fn get_from_metadata_v14( fn get_from_metadata_v14(
metadata_v14: frame_metadata::v14::RuntimeMetadataV14, metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
) -> Result<RuntimePallets> { ) -> Result<RuntimePallets> {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment