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(); } }
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); }
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); } }
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)); }