internal static List <PackageManifest> LoadPackages() { DirectoryInfo packageDirectory = new DirectoryInfo(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder)); List <PackageManifest> packages = new List <PackageManifest>(); foreach (DirectoryInfo directory in packageDirectory.EnumerateDirectories()) { string manifestPath = Path.Combine(packageDirectory.ToString(), directory.Name); if (File.Exists(Path.Combine(manifestPath, Paths.PackageManifest))) { string halodiPackage = AssetDatabaseUtilities.ReadTextFile(manifestPath, Paths.PackageManifest); if (halodiPackage == null) { continue; } else { PackageManifest manifest = JsonUtility.FromJson <PackageManifest>(halodiPackage); manifest.OnAfterDeserialize(); manifest.filesystem_location = manifestPath; packages.Add(manifest); } } } return(packages); }
static MoveFromAssetsToPackagesFolder() { string packageText = AssetDatabaseUtilities.ReadTextFile(Application.dataPath, "HalodiPackage.json"); if (packageText != null) { HalodiPackage packageDescription = JsonUtility.FromJson <HalodiPackage>(packageText); string dir = Path.Combine(Application.dataPath, packageDescription.PackageFolder); string manifest = Path.Combine(dir, Paths.PackageManifest); if (File.Exists(manifest)) { Debug.Log("Found package in Assets/" + packageDescription.PackageFolder + ". Moving to Packages/."); string target = Path.Combine(AssetDatabaseUtilities.GetProjectRoot(), Paths.PackagesFolder); if (!Directory.Exists(target)) { Directory.CreateDirectory(target); } string targetPackageFolder = Path.Combine(target, packageDescription.PackageFolder); if (Directory.Exists(targetPackageFolder)) { Debug.LogError("Found package " + packageDescription.PackageFolder + " in Assets/, but cannot move to Packages/ because a package with the same directory name already exists."); return; } Directory.Move(dir, targetPackageFolder); } File.Delete(Path.Combine(Application.dataPath, "HalodiPackage.json")); AssetDatabaseUtilities.UpdateAssetDatabase(); } }
private static void UpdateManifest(UnityEditor.PackageManager.PackageInfo package) { JObject manifestJSON = JObject.Parse(AssetDatabaseUtilities.ReadTextFile(Paths.PackagesFolder, Paths.ProjectManifest)); var dependencies = (JObject)manifestJSON["dependencies"]; bool changed = false; string changes = ""; if (dependencies.ContainsKey(package.name)) { string version = dependencies[package.name].ToObject <string>(); if (SemVer.Parse(version).ToString() == version) { if (package.version != version) { changes += "\t" + package.name + "@" + version + "=>" + package.version; dependencies[package.name] = package.version; changed = true; } } } else { changes += "+\t" + package.name + "@" + package.version; JProperty property = new JProperty(package.name, package.version); dependencies.Add(property); changed = true; } if (changed) { AssetDatabaseUtilities.CreateTextFile(manifestJSON.ToString(), Paths.PackagesFolder, Paths.ProjectManifest); Debug.Log("Updated project dependencies" + Environment.NewLine + changes); } }