fix(installer): write pinned package dependencies
Publish UPM package / publish (push) Successful in 2s

This commit is contained in:
2026-08-26 06:37:53 +08:00
parent 7de7bbbcdc
commit 6fa2ad2623
6 changed files with 78 additions and 48 deletions
+41 -1
View File
@@ -27,6 +27,28 @@ namespace ShrinkSDK.Installer
internal static void EnsureShrinkSdkRegistry()
{
var manifest = ReadManifest();
EnsureShrinkSdkRegistry(manifest);
AtomicWrite(manifest.ToString(Formatting.Indented) + Environment.NewLine);
}
internal static void EnsurePackageInstallation(ShrinkSdkPackageEntry package)
{
var manifest = ReadManifest();
EnsureShrinkSdkRegistry(manifest);
EnsurePinnedDependency(manifest, package.PackageName, package.Version);
if (package.RequiresUniTask)
{
EnsurePinnedDependency(
manifest,
ShrinkSdkPackageCatalog.UniTaskPackageName,
ShrinkSdkPackageCatalog.UniTaskGitUrl);
}
AtomicWrite(manifest.ToString(Formatting.Indented) + Environment.NewLine);
}
private static void EnsureShrinkSdkRegistry(JObject manifest)
{
var registries = manifest["scopedRegistries"] as JArray;
if (registries == null)
{
@@ -71,8 +93,26 @@ namespace ShrinkSDK.Installer
registry["scopes"] = scopes;
}
}
AtomicWrite(manifest.ToString(Formatting.Indented) + Environment.NewLine);
private static void EnsurePinnedDependency(JObject manifest, string packageName, string version)
{
var dependencies = manifest["dependencies"] as JObject;
if (dependencies == null)
{
dependencies = new JObject();
manifest["dependencies"] = dependencies;
}
var existing = dependencies[packageName];
if (existing != null && !string.Equals(existing.Value<string>(), version, StringComparison.Ordinal))
{
throw new InvalidOperationException(
"Packages/manifest.json already pins " + packageName + " to " + existing.Value<string>() +
". ShrinkSDK requires the fixed version " + version + ".");
}
dependencies[packageName] = version;
}
private static JObject ReadManifest()