junobuild_cdn/storage/
assert.rs

1use crate::storage::errors::{
2    JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_DESCRIPTION,
3    JUNO_CDN_STORAGE_ERROR_MISSING_RELEASES_DESCRIPTION,
4};
5use junobuild_shared::assert::assert_version;
6use junobuild_shared::regex::build_regex;
7use junobuild_storage::types::config::StorageConfig;
8use junobuild_storage::types::interface::SetStorageConfig;
9
10pub fn assert_releases_description(description: &Option<String>) -> Result<(), String> {
11    let desc = description
12        .as_deref()
13        .ok_or(JUNO_CDN_STORAGE_ERROR_MISSING_RELEASES_DESCRIPTION)?;
14
15    let desc_re = build_regex(r"^change=\d+;version=[^;]+$")?;
16    if !desc_re.is_match(desc) {
17        return Err(format!(
18            "{JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_DESCRIPTION} ({desc})"
19        ));
20    }
21
22    Ok(())
23}
24
25pub fn assert_set_config(
26    proposed_config: &SetStorageConfig,
27    current_config: &StorageConfig,
28) -> Result<(), String> {
29    assert_version(proposed_config.version, current_config.version)?;
30
31    Ok(())
32}