Esempio n. 1
0
        internal static void CreatePackage(PackageManifest manifest)
        {   
            manifest.OnBeforeSerialize();

            try
            {
                AssetDatabase.StartAssetEditing();
                string PackageFolderName = manifest.package_name;
                string packageFolder = AssetDatabaseUtilities.CreateFolder(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), PackageFolderName);


                AssemblyDefinition runtime = AssetDatabaseUtilities.CreateAssemblyFolder(packageFolder, Paths.RuntimeFolder, manifest.name, false, false, null);
                AssemblyDefinition editor = AssetDatabaseUtilities.CreateAssemblyFolder(packageFolder, Paths.EditorFolder, manifest.name, false, true, new List<string>{ runtime.name });

                string testFolder = AssetDatabaseUtilities.CreateFolder(packageFolder, Paths.TestFolder);


                AssemblyDefinition runtimeTests = AssetDatabaseUtilities.CreateAssemblyFolder(testFolder, Paths.RuntimeFolder, manifest.name, true, false, new List<string> { runtime.name });
                AssetDatabaseUtilities.CreateAssemblyFolder(testFolder, Paths.EditorFolder, manifest.name, true, true, new List<string> { runtime.name, editor.name });


                AssetDatabaseUtilities.CreateJSONFile(manifest, packageFolder, Paths.PackageManifest);
                AssetDatabaseUtilities.CreateTextFile(CreateReadme(manifest), packageFolder, Paths.Readme);
                AssetDatabaseUtilities.CreateTextFile(CreateLicense(manifest), packageFolder, Paths.License);
                AssetDatabaseUtilities.CreateTextFile(CreateChangelog(manifest), packageFolder, Paths.Changelog);

            }
            finally
            {
                AssetDatabase.StopAssetEditing();
                AssetDatabaseUtilities.UpdateAssetDatabase();
            }

            
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        internal static void Pack(PackageManifest manifest)
        {
            try
            {
                // Make sure the version information is updated before publishing
                VersionMaintainer.UpdateVersionInformation(true);

                CopySamples(manifest);
                manifest.OnAfterDeserialize();
                string packageFolder = Path.Combine(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), manifest.package_name);


                string folder = FileUtil.GetUniqueTempPathInProject();


                try
                {
                    string tarballPath = PackageTarball.Create(packageFolder, folder);
                    EditorUtility.RevealInFinder(tarballPath);
                }
                catch (Exception e)
                {
                    EditorUtility.DisplayDialog("Failure", e.Message, "OK");
                }
            }
            finally
            {
                EmptySamplesDirectory(manifest);
            }
        }
Esempio n. 4
0
        internal static void Publish(PackageManifest manifest, string registry)
        {
            try
            {
                CopySamples(manifest);

                manifest.OnAfterDeserialize();
                string PackageFolder = Path.Combine(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), manifest.package_name);

                NPMPublish.Publish(PackageFolder, registry);
            }
            finally
            {
                EmptySamplesDirectory(manifest);
            }
        }
        internal static void EmbedPackageFromGit(PackageManifest manifest)
        {
            string targetDirectory = Path.Combine(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), manifest.package_name);

            if (File.Exists(targetDirectory))
            {
                Debug.LogWarning("Package directory " + targetDirectory + " already exists");
                return;
            }

            string gitCommand = "clone \"" + manifest.repository.url + "\"" + " " + "\"" + targetDirectory + "\"";

            try
            {
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                process.StartInfo.UseShellExecute        = false;
                process.StartInfo.FileName               = "git";
                process.StartInfo.Arguments              = gitCommand;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError  = true;

                process.OutputDataReceived += StdOut;
                process.ErrorDataReceived  += StdErr;


                process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                EditorApplication.delayCall += () => EmbedPackageProgress(process, manifest);
            }
            catch (Exception e)
            {
                Debug.Log("Cannot find git executable: " + e.Message);
            }
        }
 private static string GetGroupConfigFile()
 {
     return(Path.Combine(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), CommonConfig));
 }