From 2ff60c44c892d60dff784a1631dec6b627d83ffc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 13 Dec 2023 22:42:31 +0200 Subject: [PATCH] Update wasm crate manually for version < 0.45.1. --- .../standalone/template/contract_creator.rs | 11 +++---- .../cmd/standalone/template/repo_version.rs | 9 ++++++ .../standalone/template/template_adjuster.rs | 30 ++++++++++++++++++- framework/meta/tests/template_test.rs | 6 ++-- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/framework/meta/src/cmd/standalone/template/contract_creator.rs b/framework/meta/src/cmd/standalone/template/contract_creator.rs index 5b7932492e..d8f1caabd2 100644 --- a/framework/meta/src/cmd/standalone/template/contract_creator.rs +++ b/framework/meta/src/cmd/standalone/template/contract_creator.rs @@ -11,12 +11,13 @@ use super::{ /// Creates a new contract on disk, from a template, given a name. pub fn create_contract(args: &TemplateArgs) { let version = get_repo_version(&args.tag); + let version_tag: String = version.get_tag(); let repo_temp_download = RepoSource::download_from_github(version, std::env::temp_dir()); let target = target_from_args(args); let creator = ContractCreator::new(&repo_temp_download, args.template.clone(), target, false); - creator.create_contract(); + creator.create_contract(version_tag); } fn target_from_args(args: &TemplateArgs) -> ContractCreatorTarget { @@ -71,9 +72,9 @@ impl<'a> ContractCreator<'a> { } } - pub fn create_contract(&self) { + pub fn create_contract(&self, args_tag: String) { self.copy_template(); - self.update_dependencies(); + self.update_dependencies(args_tag); self.rename_template(); } @@ -82,8 +83,8 @@ impl<'a> ContractCreator<'a> { .copy_template(self.target.contract_dir()); } - pub fn update_dependencies(&self) { - self.adjuster.update_dependencies(); + pub fn update_dependencies(&self, args_tag: String) { + self.adjuster.update_dependencies(args_tag); } pub fn rename_template(&self) { diff --git a/framework/meta/src/cmd/standalone/template/repo_version.rs b/framework/meta/src/cmd/standalone/template/repo_version.rs index 3eb798a66f..150c2bebc3 100644 --- a/framework/meta/src/cmd/standalone/template/repo_version.rs +++ b/framework/meta/src/cmd/standalone/template/repo_version.rs @@ -1,3 +1,5 @@ +use crate::version_history::LAST_TEMPLATE_VERSION; + pub enum RepoVersion { Master, Tag(String), @@ -23,4 +25,11 @@ impl RepoVersion { }, } } + + pub fn get_tag(&self) -> String { + match self { + RepoVersion::Master => LAST_TEMPLATE_VERSION.to_string(), + RepoVersion::Tag(tag) => tag.to_string(), + } + } } diff --git a/framework/meta/src/cmd/standalone/template/template_adjuster.rs b/framework/meta/src/cmd/standalone/template/template_adjuster.rs index 188871f0e0..7c23471766 100644 --- a/framework/meta/src/cmd/standalone/template/template_adjuster.rs +++ b/framework/meta/src/cmd/standalone/template/template_adjuster.rs @@ -5,11 +5,14 @@ use crate::{ }; use convert_case::{Case, Casing}; use ruplacer::Query; +use rustc_version::Version; use toml::value::Table; const TEST_DIRECTORY: &str = "./tests"; const ROOT_CARGO_TOML: &str = "./Cargo.toml"; const META_CARGO_TOML: &str = "./meta/Cargo.toml"; +const WASM_CARGO_TOML: &str = "./wasm/Cargo.toml"; +const TARGET_VERSION_0_45_1: Version = Version::new(0, 45, 1); pub struct TemplateAdjuster { pub metadata: TemplateMetadata, @@ -17,9 +20,10 @@ pub struct TemplateAdjuster { pub keep_paths: bool, } impl TemplateAdjuster { - pub fn update_dependencies(&self) { + pub fn update_dependencies(&self, args_tag: String) { self.update_dependencies_root(); self.update_dependencies_meta(); + self.update_dependencies_wasm(args_tag); } fn update_dependencies_root(&self) { @@ -46,6 +50,23 @@ impl TemplateAdjuster { toml.save_to_file(&cargo_toml_path); } + fn update_dependencies_wasm(&self, args_tag: String) { + if is_version_at_least_0_45_1(args_tag) { + println!(">>>>>>>>>>>>YES"); + return; + } + println!(">>>>>>>>>>>>YESSSSSSS"); + + let cargo_toml_path = self.target.contract_dir().join(WASM_CARGO_TOML); + let mut toml = CargoTomlContents::load_from_file(&cargo_toml_path); + + if !self.keep_paths { + remove_paths_from_deps(&mut toml, &[&self.metadata.name]); + } + + toml.save_to_file(&cargo_toml_path); + } + pub fn rename_template_to(&self) { self.rename_trait_to(); self.rename_in_cargo_toml_root(); @@ -177,6 +198,13 @@ impl TemplateAdjuster { } } +fn is_version_at_least_0_45_1(args_tag: String) -> bool { + match Version::parse(&args_tag) { + Ok(version) => version >= TARGET_VERSION_0_45_1, + Err(_error) => false, + } +} + fn wasm_file_name(name: &str) -> String { format!("{name}.wasm",) } diff --git a/framework/meta/tests/template_test.rs b/framework/meta/tests/template_test.rs index e7fc4b0230..631664361b 100644 --- a/framework/meta/tests/template_test.rs +++ b/framework/meta/tests/template_test.rs @@ -5,7 +5,7 @@ use multiversx_sc_meta::{ template_names_from_repo, ContractCreator, ContractCreatorTarget, RepoSource, RepoVersion, }, find_workspace::find_current_workspace, - version_history, + version_history::{self, LAST_TEMPLATE_VERSION}, }; const TEMPLATE_TEMP_DIR_NAME: &str = "template-test"; @@ -72,7 +72,7 @@ fn template_test_current(template_name: &str, sub_path: &str, new_name: &str) { target.clone(), true, ) - .create_contract(); + .create_contract(LAST_TEMPLATE_VERSION.to_string()); if BUILD_CONTRACTS { build_contract(&target); @@ -127,7 +127,7 @@ fn template_test_released(template_name: &str, new_name: &str) { target.clone(), false, ) - .create_contract(); + .create_contract(LAST_TEMPLATE_VERSION.to_string()); if BUILD_CONTRACTS { build_contract(&target);