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

refactor doc generation

parent 06e9be76
No related branches found
No related tags found
1 merge request!222Automatic weights documentation
...@@ -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