Compare commits
4 commits
34976a66d2
...
344dc0c7e7
| Author | SHA1 | Date | |
|---|---|---|---|
|
344dc0c7e7 |
|||
|
4eb2d8d092 |
|||
|
14264931dd |
|||
|
f70e3b8690 |
4 changed files with 20 additions and 20 deletions
|
|
@ -13,15 +13,18 @@ fn get_loaders(lockfile: &LockFile) -> Vec<String> {
|
||||||
|
|
||||||
pub fn create_all_platforms()
|
pub fn create_all_platforms()
|
||||||
-> Result<HashMap<String, Box<dyn crate::platform::PlatformClient>>> {
|
-> Result<HashMap<String, Box<dyn crate::platform::PlatformClient>>> {
|
||||||
|
const MODRINTH: &str = "modrinth";
|
||||||
|
const CURSEFORGE: &str = "curseforge";
|
||||||
|
|
||||||
let mut platforms = HashMap::new();
|
let mut platforms = HashMap::new();
|
||||||
|
|
||||||
if let Ok(platform) = create_platform("modrinth", None) {
|
if let Ok(platform) = create_platform(MODRINTH, None) {
|
||||||
platforms.insert("modrinth".to_string(), platform);
|
platforms.insert(MODRINTH.to_owned(), platform);
|
||||||
}
|
}
|
||||||
if let Ok(platform) =
|
if let Ok(platform) =
|
||||||
create_platform("curseforge", std::env::var("CURSEFORGE_API_KEY").ok())
|
create_platform(CURSEFORGE, std::env::var("CURSEFORGE_API_KEY").ok())
|
||||||
{
|
{
|
||||||
platforms.insert("curseforge".to_string(), platform);
|
platforms.insert(CURSEFORGE.to_owned(), platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(platforms)
|
Ok(platforms)
|
||||||
|
|
|
||||||
|
|
@ -103,9 +103,13 @@ impl std::fmt::Display for UpdateStrategy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(
|
||||||
|
Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize,
|
||||||
|
)]
|
||||||
#[serde(rename_all = "lowercase")]
|
#[serde(rename_all = "lowercase")]
|
||||||
pub enum ReleaseType {
|
pub enum ReleaseType {
|
||||||
|
// Order matters: Release < Beta < Alpha for sorting (we want Release first)
|
||||||
|
// But we want reverse order, so we'll use reverse() or handle in comparison
|
||||||
Release,
|
Release,
|
||||||
Beta,
|
Beta,
|
||||||
Alpha,
|
Alpha,
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,15 @@ mod tests {
|
||||||
let mut id_map = HashMap::new();
|
let mut id_map = HashMap::new();
|
||||||
id_map.insert("modrinth".to_string(), pakku_id.to_string());
|
id_map.insert("modrinth".to_string(), pakku_id.to_string());
|
||||||
|
|
||||||
|
let slug_map = name_map.clone();
|
||||||
|
|
||||||
Project {
|
Project {
|
||||||
pakku_id: Some(pakku_id.to_string()),
|
pakku_id: Some(pakku_id.to_string()),
|
||||||
pakku_links: HashSet::new(),
|
pakku_links: HashSet::new(),
|
||||||
r#type: ProjectType::Mod,
|
r#type: ProjectType::Mod,
|
||||||
side: ProjectSide::Both,
|
side: ProjectSide::Both,
|
||||||
slug: name_map.clone(),
|
slug: slug_map,
|
||||||
name: name_map.clone(),
|
name: name_map,
|
||||||
id: id_map,
|
id: id_map,
|
||||||
update_strategy: UpdateStrategy::Latest,
|
update_strategy: UpdateStrategy::Latest,
|
||||||
redistributable: true,
|
redistributable: true,
|
||||||
|
|
|
||||||
|
|
@ -261,20 +261,11 @@ impl Project {
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort by release type (release > beta > alpha) and date
|
// Sort by release type (Release < Beta < Alpha) and date (newest first)
|
||||||
let mut sorted_files = compatible_files.clone();
|
let mut sorted_files = compatible_files.to_vec();
|
||||||
sorted_files.sort_by(|a, b| {
|
sorted_files.sort_by(|a, b| {
|
||||||
use super::enums::ReleaseType;
|
a.release_type
|
||||||
let type_order = |rt: &ReleaseType| {
|
.cmp(&b.release_type)
|
||||||
match rt {
|
|
||||||
ReleaseType::Release => 0,
|
|
||||||
ReleaseType::Beta => 1,
|
|
||||||
ReleaseType::Alpha => 2,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
type_order(&a.release_type)
|
|
||||||
.cmp(&type_order(&b.release_type))
|
|
||||||
.then_with(|| b.date_published.cmp(&a.date_published))
|
.then_with(|| b.date_published.cmp(&a.date_published))
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue