fix(packages): Attempt to fix 'cluster not found in packages map' error

This commit is contained in:
LynithDev 2024-10-20 15:38:21 +02:00
parent 7d9b11ffae
commit f315eb95f4
3 changed files with 36 additions and 40 deletions

View file

@ -38,10 +38,11 @@ jobs:
- uses: tauri-apps/tauri-action@v0 - uses: tauri-apps/tauri-action@v0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
with: with:
tagName: onelauncher-__VERSION__ tagName: onelauncher-__VERSION__
releaseName: OneLauncher __VERSION__ releaseName: OneLauncher __VERSION__
releaseDraft: true releaseDraft: false
prerelease: false prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
tauriScript: pnpm desktop tauriScript: pnpm desktop
args: ${{ matrix.args }} args: ${{ matrix.args }}

View file

@ -123,6 +123,9 @@ pub async fn create_cluster(
} }
State::sync().await?; 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()) Ok(cluster.cluster_path())
} }

View file

@ -200,27 +200,31 @@ pub struct Packages {
impl Packages { impl Packages {
pub async fn initialize(dirs: &Directories, clusters: &Clusters) -> Self { 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 // TODO: This should probably not clone and store the cluster path in like 2 areas
for cluster_path in clusters.0.keys() { for cluster_path in clusters.0.keys() {
let mgr = PackageManager::initialize(dirs, cluster_path.clone()).await; this.add_cluster(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
);
}
};
} }
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] #[must_use]
@ -384,29 +388,17 @@ impl PackageManager {
#[tracing::instrument(skip(self, dirs))] #[tracing::instrument(skip(self, dirs))]
pub async fn sync_packages(&mut self, dirs: &Directories) { pub async fn sync_packages(&mut self, dirs: &Directories) {
tracing::info!("syncing packages for cluster {}", self.cluster_path); tracing::info!("syncing packages for cluster {}", self.cluster_path);
if let Err(err) = &self.sync_packages_by_type(dirs, PackageType::Mod).await { let package_types = vec![
tracing::error!("failed to sync mods: {}", err); PackageType::Mod,
} PackageType::DataPack,
PackageType::ResourcePack,
PackageType::ShaderPack,
];
if let Err(err) = &self for package_type in package_types {
.sync_packages_by_type(dirs, PackageType::DataPack) if let Err(err) = &self.sync_packages_by_type(dirs, package_type).await {
.await tracing::error!("failed to sync package {}: {}", package_type.get_name(), err);
{ }
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);
} }
} }