multiversx_sc_meta_lib/contract/sc_config/
sc_config_model.rs1use super::{
2 contract_variant_validate::validate_contract_variant, proxy_config::ProxyConfig,
3 ContractVariant,
4};
5
6pub const SC_CONFIG_FILE_NAMES: &[&str] = &["sc-config.toml", "multicontract.toml"];
13
14#[derive(Debug)]
18pub struct ScConfig {
19 pub contracts: Vec<ContractVariant>,
20 pub proxy_configs: Vec<ProxyConfig>,
21}
22
23impl ScConfig {
24 pub fn get_contract_by_id(&self, contract_id: &str) -> Option<&ContractVariant> {
25 self.contracts
26 .iter()
27 .find(|contract| contract.contract_id == contract_id)
28 }
29
30 pub fn get_contract_by_name(&self, contract_name: &str) -> Option<&ContractVariant> {
31 self.contracts
32 .iter()
33 .find(|contract| contract.contract_name == contract_name)
34 }
35
36 pub fn find_contract(&self, contract_name: &str) -> &ContractVariant {
38 self.contracts
39 .iter()
40 .find(|contract| contract.contract_name == contract_name)
41 .unwrap_or_else(|| panic!("contract variant {contract_name} not found"))
42 }
43
44 pub fn validate_contract_variants(&self) {
45 for contract in &self.contracts {
46 validate_contract_variant(contract).unwrap_or_else(|err| {
47 panic!("Invalid contract variant {}: {err}", contract.contract_name)
48 });
49 }
50 }
51}