Skip to content

Commit f4e56d6

Browse files
committed
fix(vpm): Empty depeneencies block of locked section in vpm-manifest.json is removed
1 parent 68a708a commit f4e56d6

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

vrc-get-vpm/src/unity_project.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::version::{UnityVersion, Version, VersionRange};
1818
use futures::future::try_join;
1919
use futures::prelude::*;
2020
use indexmap::IndexMap;
21+
use lazy_static::lazy_static;
2122
use std::collections::HashMap;
2223
use std::path::{Path, PathBuf};
2324

@@ -184,7 +185,7 @@ impl<IO: ProjectIo> UnityProject<IO> {
184185
.unlocked_packages
185186
.iter()
186187
.filter_map(|(_, json)| json.as_ref())
187-
.map(|x| LockedDependencyInfo::new(x.name(), x.version(), x.vpm_dependencies()));
188+
.map(|x| LockedDependencyInfo::new(x.name(), x.version(), Some(x.vpm_dependencies())));
188189

189190
dependencies_locked.chain(dependencies_unlocked)
190191
}
@@ -237,12 +238,15 @@ impl<'a> LockedDependencyInfo<'a> {
237238
fn new(
238239
name: &'a str,
239240
version: &'a Version,
240-
dependencies: &'a IndexMap<Box<str>, VersionRange>,
241+
dependencies: Option<&'a IndexMap<Box<str>, VersionRange>>,
241242
) -> Self {
243+
lazy_static! {
244+
static ref EMPTY_DEPENDENCIES: IndexMap<Box<str>, VersionRange> = IndexMap::new();
245+
}
242246
Self {
243247
name,
244248
version,
245-
dependencies,
249+
dependencies: dependencies.unwrap_or(&*EMPTY_DEPENDENCIES),
246250
}
247251
}
248252

vrc-get-vpm/src/unity_project/resolve.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ impl<IO: ProjectIo> UnityProject<IO> {
177177
for x in changes.get_all_installing() {
178178
virtual_locked_dependencies.insert(
179179
x.name(),
180-
LockedDependencyInfo::new(x.name(), x.version(), x.vpm_dependencies()),
180+
LockedDependencyInfo::new(x.name(), x.version(), Some(x.vpm_dependencies())),
181181
);
182182
}
183183

vrc-get-vpm/src/unity_project/vpm_manifest.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ struct VpmDependency {
2525
#[derive(Serialize, Deserialize, Debug, Clone)]
2626
struct VpmLockedDependency {
2727
pub version: Version,
28-
#[serde(default, skip_serializing_if = "indexmap::IndexMap::is_empty")]
29-
pub dependencies: IndexMap<Box<str>, VersionRange>,
28+
#[serde(default, skip_serializing_if = "Option::is_none")]
29+
pub dependencies: Option<IndexMap<Box<str>, VersionRange>>,
3030
}
3131

3232
#[derive(Debug)]
@@ -59,15 +59,17 @@ impl VpmManifest {
5959

6060
pub(super) fn all_locked(&self) -> impl Iterator<Item = LockedDependencyInfo> {
6161
self.controller.locked.iter().map(|(name, dep)| {
62-
LockedDependencyInfo::new(name.as_ref(), &dep.version, &dep.dependencies)
62+
LockedDependencyInfo::new(name.as_ref(), &dep.version, dep.dependencies.as_ref())
6363
})
6464
}
6565

6666
pub(super) fn get_locked(&self, package: &str) -> Option<LockedDependencyInfo> {
6767
self.controller
6868
.locked
6969
.get_key_value(package)
70-
.map(|(package, x)| LockedDependencyInfo::new(package, &x.version, &x.dependencies))
70+
.map(|(package, x)| {
71+
LockedDependencyInfo::new(package, &x.version, x.dependencies.as_ref())
72+
})
7173
}
7274

7375
pub(super) fn add_dependency(&mut self, name: &str, version: DependencyRange) {
@@ -87,7 +89,7 @@ impl VpmManifest {
8789
name.into(),
8890
VpmLockedDependency {
8991
version,
90-
dependencies,
92+
dependencies: Some(dependencies),
9193
},
9294
);
9395
}

0 commit comments

Comments
 (0)