use std::path::PathBuf;
use nitro_instance::addon::Addon;
use nitro_shared::{
minecraft::AddonKind,
pkg::{AddonOptionalHashes, ArcPkgReq},
};
#[derive(Debug, Clone)]
pub struct PackageAddon {
pub kind: AddonKind,
pub id: String,
pub file_name: String,
pub pkg: ArcPkgReq,
pub version: Option<String>,
pub modpack_format: Option<String>,
pub hashes: AddonOptionalHashes,
pub is_manual: bool,
}
impl PackageAddon {
pub fn addon(&self, storage_path: PathBuf) -> Addon {
Addon {
kind: self.kind,
file_name: self.file_name.clone(),
original_path: None,
target_paths: Vec::new(),
source: Some(storage_path),
hashes: self.hashes.clone(),
}
}
}
pub fn is_addon_version_valid(version: &str) -> bool {
if !version.is_ascii() {
return false;
}
if version.contains("..") {
return false;
}
for c in version.chars() {
if !c.is_ascii_alphanumeric() && c != '-' && c != '+' && c != '.' {
return false;
}
}
true
}