fix(installer): write pinned package dependencies
Publish UPM package / publish (push) Successful in 2s
Publish UPM package / publish (push) Successful in 2s
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user