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(); } }
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(); } }
internal void Store(PackageManifest manifest) { JObject manifestJSON = JObject.Parse(HalodiPackageCreatorController.GetPackageManifestObject(manifest).text); JObject author = new JObject( new JProperty("name", manifest.author.name), new JProperty("email", manifest.author.email), new JProperty("url", manifest.author.url)); manifestJSON["author"] = author; manifestJSON["license"] = manifest.license; JObject publicationConfig = new JObject( new JProperty("registry", manifest.publishConfig.registry) ); manifestJSON["publishConfig"] = publicationConfig; if (string.IsNullOrWhiteSpace(manifest.repository.url)) { manifest.repository.type = ""; } else { manifest.repository.type = "git"; } JObject repo = new JObject( new JProperty("type", manifest.repository.type), new JProperty("url", manifest.repository.url) ); manifestJSON["repository"] = repo; AssetDatabaseUtilities.CreateTextFile(manifestJSON.ToString(), HalodiPackageCreatorController.GetPackageDirectory(manifest), Paths.PackageManifest); AssetDatabaseUtilities.UpdateAssetDatabase(); }
internal static void AddSample(PackageManifest manifest, PackageManifest.Sample sample) { string assetDirectory = GetAssetDirectory(manifest); string samplesDirectory = GetAssetsSampleDirectory(manifest); if (!sample.path.StartsWith(Paths.PackageSamplesFolder + "/")) { throw new System.Exception("Invalid sample directory"); } Directory.CreateDirectory(samplesDirectory); string sampleFolderName = sample.path.Substring(Paths.PackageSamplesFolder.Length + 1); string sampleFolder = Path.Combine(samplesDirectory, sampleFolderName); Directory.CreateDirectory(sampleFolder); CreateGitKeep.Create(sampleFolder); JObject manifestJSON = JObject.Parse(GetPackageManifestObject(manifest).text); var samplesJSON = (JArray)manifestJSON["samples"]; JObject next = new JObject( new JProperty("displayName", sample.displayName), new JProperty("description", sample.description), new JProperty("path", sample.path)); samplesJSON.Add(next); AssetDatabaseUtilities.CreateTextFile(manifestJSON.ToString(), GetPackageDirectory(manifest), Paths.PackageManifest); AssetDatabaseUtilities.UpdateAssetDatabase(); }