Utils/Editor/PackageUpdater.cs
2021-08-16 04:45:10 +02:00

52 lines
1.6 KiB
C#

using System.IO;
using UnityEditor;
using UnityEngine;
namespace Utils
{
public class PackgeUpdater
{
private static string ManifestPath
{
get
{
var projectPath = Directory.GetParent(Application.dataPath).FullName;
var manifestPath = Path.Combine(projectPath, "Packages", "manifest.json");
return manifestPath;
}
}
public static string GetIdentifier(string input, char charFrom, char charTo)
{
var first = input.IndexOf(charFrom);
var second = input.IndexOf(charTo, first + 1);
var posFrom = input.IndexOf(charFrom, second + 1);
if (posFrom != -1) //if found char
{
var posTo = input.IndexOf(charTo, posFrom + 1);
if (posTo != -1) //if found char
{
return input.Substring(posFrom + 1, posTo - posFrom - 1);
}
}
return string.Empty;
}
[MenuItem("Assets/Update Git Packages", false, 1000)]
private static void UpdateGitPackages()
{
var lines = File.ReadAllLines(ManifestPath);
foreach (var line in lines)
{
if (line.Contains("git"))
{
var identifier = GetIdentifier(line, '"', '"');
Debug.Log("Checking for updates " + identifier);
UnityEditor.PackageManager.Client.Add(identifier);
}
}
}
}
}