From 04dc695aea253407ce21a866bb33cc5b9c3980a2 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 13 Apr 2023 18:15:35 +0300 Subject: [PATCH] codegen: Use v15 for codegen Signed-off-by: Alexandru Vasile --- codegen/src/api/calls.rs | 4 ++-- codegen/src/api/constants.rs | 4 ++-- codegen/src/api/events.rs | 2 +- codegen/src/api/mod.rs | 15 ++++++++++++--- codegen/src/api/storage.rs | 8 ++++---- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/codegen/src/api/calls.rs b/codegen/src/api/calls.rs index dae3f124b3..37fe1e0e66 100644 --- a/codegen/src/api/calls.rs +++ b/codegen/src/api/calls.rs @@ -7,7 +7,7 @@ use crate::{ types::{CompositeDefFields, TypeGenerator}, CratePath, }; -use frame_metadata::{v14::RuntimeMetadataV14, PalletMetadata}; +use frame_metadata::v15::{PalletMetadata, RuntimeMetadataV15}; use heck::{ToSnakeCase as _, ToUpperCamelCase as _}; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; @@ -23,7 +23,7 @@ use scale_info::form::PortableForm; /// - `pallet` - Pallet metadata from which the calls are generated. /// - `types_mod_ident` - The ident of the base module that we can use to access the generated types from. pub fn generate_calls( - metadata: &RuntimeMetadataV14, + metadata: &RuntimeMetadataV15, type_gen: &TypeGenerator, pallet: &PalletMetadata, types_mod_ident: &syn::Ident, diff --git a/codegen/src/api/constants.rs b/codegen/src/api/constants.rs index 58dca550f9..c08745e826 100644 --- a/codegen/src/api/constants.rs +++ b/codegen/src/api/constants.rs @@ -3,7 +3,7 @@ // see LICENSE for license details. use crate::{types::TypeGenerator, CratePath}; -use frame_metadata::{v14::RuntimeMetadataV14, PalletMetadata}; +use frame_metadata::v15::{PalletMetadata, RuntimeMetadataV15}; use heck::ToSnakeCase as _; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; @@ -35,7 +35,7 @@ use super::CodegenError; /// - `pallet` - Pallet metadata from which the calls are generated. /// - `types_mod_ident` - The ident of the base module that we can use to access the generated types from. pub fn generate_constants( - metadata: &RuntimeMetadataV14, + metadata: &RuntimeMetadataV15, type_gen: &TypeGenerator, pallet: &PalletMetadata, types_mod_ident: &syn::Ident, diff --git a/codegen/src/api/events.rs b/codegen/src/api/events.rs index fce8b77f7d..01f46e989d 100644 --- a/codegen/src/api/events.rs +++ b/codegen/src/api/events.rs @@ -3,7 +3,7 @@ // see LICENSE for license details. use crate::{types::TypeGenerator, CratePath}; -use frame_metadata::PalletMetadata; +use frame_metadata::v15::PalletMetadata; use proc_macro2::TokenStream as TokenStream2; use quote::quote; use scale_info::form::PortableForm; diff --git a/codegen/src/api/mod.rs b/codegen/src/api/mod.rs index 308f2a03ce..5427436f18 100644 --- a/codegen/src/api/mod.rs +++ b/codegen/src/api/mod.rs @@ -9,6 +9,7 @@ mod constants; mod events; mod storage; +use frame_metadata::v15::RuntimeMetadataV15; use subxt_metadata::get_metadata_per_pallet_hash; use super::DerivesRegistry; @@ -20,7 +21,7 @@ use crate::{ CratePath, }; use codec::Decode; -use frame_metadata::{v14::RuntimeMetadataV14, RuntimeMetadata, RuntimeMetadataPrefixed}; +use frame_metadata::{RuntimeMetadata, RuntimeMetadataPrefixed}; use heck::ToSnakeCase as _; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; @@ -152,7 +153,7 @@ pub fn generate_runtime_api_from_bytes( /// Create the API for interacting with a Substrate runtime. pub struct RuntimeGenerator { - metadata: RuntimeMetadataV14, + metadata: RuntimeMetadataV15, } impl RuntimeGenerator { @@ -161,9 +162,17 @@ impl RuntimeGenerator { /// **Note:** If you have the metadata path, URL or bytes to hand, prefer to use /// one of the `generate_runtime_api_from_*` functions for generating the runtime API /// from that. + /// + /// # Panics + /// + /// If the metadata version is not supported by subxt. + /// Only v14 and v15 versions are supported. pub fn new(metadata: RuntimeMetadataPrefixed) -> Self { match metadata.1 { - RuntimeMetadata::V14(v14) => Self { metadata: v14 }, + RuntimeMetadata::V14(v14) => Self { + metadata: subxt_metadata::metadata_v14_to_latest(v14), + }, + RuntimeMetadata::V15(v15) => Self { metadata: v15 }, _ => panic!("Unsupported metadata version {:?}", metadata.1), } } diff --git a/codegen/src/api/storage.rs b/codegen/src/api/storage.rs index a4d3a7f214..058730db43 100644 --- a/codegen/src/api/storage.rs +++ b/codegen/src/api/storage.rs @@ -3,8 +3,8 @@ // see LICENSE for license details. use crate::{types::TypeGenerator, CratePath}; -use frame_metadata::{ - v14::RuntimeMetadataV14, PalletMetadata, StorageEntryMetadata, StorageEntryModifier, +use frame_metadata::v15::{ + PalletMetadata, RuntimeMetadataV15, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, }; use heck::ToSnakeCase as _; @@ -24,7 +24,7 @@ use super::CodegenError; /// - `pallet` - Pallet metadata from which the storages are generated. /// - `types_mod_ident` - The ident of the base module that we can use to access the generated types from. pub fn generate_storage( - metadata: &RuntimeMetadataV14, + metadata: &RuntimeMetadataV15, type_gen: &TypeGenerator, pallet: &PalletMetadata, types_mod_ident: &syn::Ident, @@ -64,7 +64,7 @@ pub fn generate_storage( } fn generate_storage_entry_fns( - metadata: &RuntimeMetadataV14, + metadata: &RuntimeMetadataV15, type_gen: &TypeGenerator, pallet: &PalletMetadata, storage_entry: &StorageEntryMetadata,