Skip to content

Commit

Permalink
feat: update package with locked branch name
Browse files Browse the repository at this point in the history
  • Loading branch information
mob-sakai committed Jan 28, 2020
1 parent 9189251 commit 7b35a50
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions Packages/com.coffee.upm-git-extension/Editor/Scripts/Utils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,18 +135,19 @@ public static class PackageUtils
public static void InstallPackage(string packageName, string repoUrl, string refName)
{
Debug.Log(kHeader, "[PackageUtils.InstallPackage] packageName = {0}, repoUrl = {1}, refName = {2}", packageName, repoUrl, refName);
UpdateManifestJson(dependencies =>
UpdateManifestJson(manifest =>
{
var dependencies = manifest["dependencies"] as Dictionary<string, object>;
// Remove from dependencies.
dependencies.Remove(packageName);
if (!string.IsNullOrEmpty(repoUrl))
{
// Add to dependencies.
if (!string.IsNullOrEmpty(refName))
dependencies.Add(packageName, repoUrl + "#" + refName);
else
dependencies.Add(packageName, repoUrl);
}
dependencies?.Remove(packageName);

// Add to dependencies.
dependencies?.Add(packageName, repoUrl + "#" + refName);

// Unlock git revision.
var locks = manifest["lock"] as Dictionary<string, object>;
if (locks != null && locks.ContainsKey(packageName))
locks.Remove(packageName);
});
}

Expand All @@ -157,19 +158,25 @@ public static void InstallPackage(string packageName, string repoUrl, string ref
public static void UninstallPackage(string packageName)
{
Debug.Log(kHeader, "[PackageUtils.UninstallPackage] packageName = {0}", packageName);
UpdateManifestJson(dependencies => dependencies.Remove(packageName));
UpdateManifestJson(manifest =>
{
var dependencies = manifest["dependencies"] as Dictionary<string, object>;
dependencies?.Remove(packageName);
});
}

/// <summary>
/// Update manifest.json
/// </summary>
/// <param name="actionForDependencies">Action for dependencies</param>
static void UpdateManifestJson(Action<Dictionary<string, object>> actionForDependencies)
/// <param name="action">Action for manifest</param>
static void UpdateManifestJson(Action<Dictionary<string, object>> action)
{
Debug.Log(kHeader, "[PackageUtils.UpdateManifestJson]");
const string manifestPath = "Packages/manifest.json";
var manifest = Json.Deserialize(File.ReadAllText(manifestPath)) as Dictionary<string, object>;
actionForDependencies(manifest["dependencies"] as Dictionary<string, object>);

if(manifest != null && action != null)
action(manifest);

// Save manifest.json.
File.WriteAllText(manifestPath, Json.Serialize(manifest, true));
Expand Down

0 comments on commit 7b35a50

Please sign in to comment.