Remove duplicated unity project entries

This commit is contained in:
Piotr Siuszko 2023-03-02 17:18:26 +01:00
parent e98924eb0c
commit 664926cb6d
2 changed files with 9 additions and 1 deletions

View File

@ -2,6 +2,7 @@ use crate::{config::Configuration, unity_editor::UnityEditor, unity_project::Uni
use dpc_pariter::IteratorExt; use dpc_pariter::IteratorExt;
use std::{path::PathBuf, process::Command}; use std::{path::PathBuf, process::Command};
use walkdir::WalkDir; use walkdir::WalkDir;
use std::collections::HashSet;
#[derive(Debug, Serialize, Deserialize, Clone)] #[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Hub { pub struct Hub {
@ -20,6 +21,12 @@ impl Hub {
} }
pub fn update_projects_info(&mut self) { pub fn update_projects_info(&mut self) {
let mut registry = UnityProject::get_projects_from_registry()
.into_iter()
.filter(|p| !self.projects.contains(p))
.collect();
self.projects.append(&mut registry);
self.projects = self.projects.iter().cloned().collect::<HashSet<UnityProject>>().into_iter().collect();
self.projects.iter_mut().for_each(|project| { self.projects.iter_mut().for_each(|project| {
project.update_info(); project.update_info();
}); });

View File

@ -2,7 +2,7 @@ use std::{ops::Sub, path::Path, str};
use crate::consts; use crate::consts;
#[derive(Debug, Serialize, Deserialize, Clone)] #[derive(Debug, Serialize, Deserialize, Clone, Hash, Eq)]
pub struct UnityProject { pub struct UnityProject {
pub path: String, pub path: String,
pub title: String, pub title: String,
@ -12,6 +12,7 @@ pub struct UnityProject {
pub edit_time: std::time::SystemTime, pub edit_time: std::time::SystemTime,
} }
impl PartialEq for UnityProject { impl PartialEq for UnityProject {
fn eq(&self, other: &Self) -> bool { fn eq(&self, other: &Self) -> bool {
self.path == other.path self.path == other.path