fix(packages): Attempt to fix 'cluster not found in packages map' error
This commit is contained in:
parent
7d9b11ffae
commit
f315eb95f4
3 changed files with 36 additions and 40 deletions
5
.github/workflows/release.yml
vendored
5
.github/workflows/release.yml
vendored
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue