From f315eb95f467d960f656d79c8b2f91ad5f381af4 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Sun, 20 Oct 2024 15:38:21 +0200 Subject: [PATCH] fix(packages): Attempt to fix 'cluster not found in packages map' error --- .github/workflows/release.yml | 5 +- packages/core/src/api/cluster/create.rs | 3 ++ packages/core/src/store/package.rs | 68 +++++++++++-------------- 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 031ffb62..2c2e7408 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,10 +38,11 @@ jobs: - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }} with: tagName: onelauncher-__VERSION__ releaseName: OneLauncher __VERSION__ - releaseDraft: true - prerelease: false + releaseDraft: false + prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }} tauriScript: pnpm desktop args: ${{ matrix.args }} diff --git a/packages/core/src/api/cluster/create.rs b/packages/core/src/api/cluster/create.rs index 1dd6d715..e28262ed 100644 --- a/packages/core/src/api/cluster/create.rs +++ b/packages/core/src/api/cluster/create.rs @@ -123,6 +123,9 @@ pub async fn create_cluster( } State::sync().await?; + let state = State::get().await?; + let mut packages = state.packages.write().await; + packages.add_cluster(&state.directories, cluster.cluster_path()).await; Ok(cluster.cluster_path()) } diff --git a/packages/core/src/store/package.rs b/packages/core/src/store/package.rs index a22d2ce1..6eb92d7f 100644 --- a/packages/core/src/store/package.rs +++ b/packages/core/src/store/package.rs @@ -200,27 +200,31 @@ pub struct Packages { impl Packages { pub async fn initialize(dirs: &Directories, clusters: &Clusters) -> Self { - let mut managers = HashMap::new(); + let mut this = Self { managers: HashMap::new() }; // TODO: This should probably not clone and store the cluster path in like 2 areas for cluster_path in clusters.0.keys() { - let mgr = PackageManager::initialize(dirs, cluster_path.clone()).await; - - match mgr { - Ok(mgr) => { - managers.insert(cluster_path.clone(), mgr); - } - Err(e) => { - tracing::error!( - "failed to initialize package manager for cluster {}: {}. skipping", - cluster_path, - e - ); - } - }; + this.add_cluster(dirs, cluster_path.clone()).await; } - Self { managers } + this + } + + pub async fn add_cluster(&mut self, dirs: &Directories, cluster_path: ClusterPath) { + let mgr = PackageManager::initialize(dirs, cluster_path.clone()).await; + + match mgr { + Ok(mgr) => { + self.managers.insert(cluster_path, mgr); + } + Err(e) => { + tracing::error!( + "failed to initialize package manager for cluster {}: {}. skipping", + cluster_path, + e + ); + } + }; } #[must_use] @@ -384,29 +388,17 @@ impl PackageManager { #[tracing::instrument(skip(self, dirs))] pub async fn sync_packages(&mut self, dirs: &Directories) { tracing::info!("syncing packages for cluster {}", self.cluster_path); - if let Err(err) = &self.sync_packages_by_type(dirs, PackageType::Mod).await { - tracing::error!("failed to sync mods: {}", err); - } + let package_types = vec![ + PackageType::Mod, + PackageType::DataPack, + PackageType::ResourcePack, + PackageType::ShaderPack, + ]; - if let Err(err) = &self - .sync_packages_by_type(dirs, PackageType::DataPack) - .await - { - tracing::error!("failed to sync datapacks: {}", err); - } - - if let Err(err) = &self - .sync_packages_by_type(dirs, PackageType::ResourcePack) - .await - { - tracing::error!("failed to sync resourcepacks: {}", err); - } - - if let Err(err) = &self - .sync_packages_by_type(dirs, PackageType::ShaderPack) - .await - { - tracing::error!("failed to sync shaderpacks: {}", err); + for package_type in package_types { + if let Err(err) = &self.sync_packages_by_type(dirs, package_type).await { + tracing::error!("failed to sync package {}: {}", package_type.get_name(), err); + } } }