示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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);
            }
        }