mantra_utils/
macros.rs

1/// Validates the contract version and name
2#[macro_export]
3macro_rules! validate_contract {
4    ($deps:expr, $contract_name:expr, $contract_version:expr) => {{
5        let stored_contract_name = cw2::CONTRACT.load($deps.storage)?.contract;
6        cosmwasm_std::ensure!(
7            stored_contract_name == $contract_name,
8            cosmwasm_std::StdError::generic_err("Contract name mismatch")
9        );
10
11        let version: semver::Version = $contract_version.parse()?;
12        let storage_version: semver::Version =
13            cw2::get_contract_version($deps.storage)?.version.parse()?;
14
15        cosmwasm_std::ensure!(
16            storage_version < version,
17            ContractError::MigrateInvalidVersion {
18                current_version: storage_version,
19                new_version: version,
20            }
21        );
22    }};
23}