ETPackageCreateHelper.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using System;
  2. using System.IO;
  3. using UnityEngine;
  4. namespace ET.PackageManager.Editor
  5. {
  6. public static partial class ETPackageCreateHelper
  7. {
  8. private const string Pattern = "[^a-z]";
  9. public static string ETPackageCreateTemplatePath = "Packages/cn.etetet.packagemanager/Editor/Window/CreateModule/Template";
  10. public static string GetPackagePath(ref string packageName)
  11. {
  12. if (string.IsNullOrEmpty(packageName))
  13. {
  14. Debug.LogError($"包名不能为空");
  15. return "";
  16. }
  17. packageName = packageName.ToLower();
  18. packageName = System.Text.RegularExpressions.Regex.Replace(packageName, Pattern, "");
  19. var packagepath = $"Packages/cn.etetet.{packageName}";
  20. return packagepath;
  21. }
  22. public static bool CreateDirectory(string path, bool force = true)
  23. {
  24. if (Directory.Exists(path))
  25. {
  26. if (force)
  27. {
  28. Directory.Delete(path, true);
  29. }
  30. else
  31. {
  32. return false;
  33. }
  34. }
  35. Directory.CreateDirectory(path);
  36. return true;
  37. }
  38. public static void CreatePackage(ETPackageCreateData data)
  39. {
  40. var createTypeValues = Enum.GetValues(typeof(EPackageCreateType));
  41. foreach (var value in createTypeValues)
  42. {
  43. var createType = (EPackageCreateType)value;
  44. if ((int)createType <= 0)
  45. {
  46. continue;
  47. }
  48. var hasReslut = data.PackageCreateType.HasFlag(createType);
  49. if (hasReslut)
  50. {
  51. switch (createType)
  52. {
  53. case EPackageCreateType.Runtime:
  54. new ETPackageCreatePackageAsmdefCode(data);
  55. break;
  56. case EPackageCreateType.Editor:
  57. new ETPackageCreatePackageAsmdefEditorCode(data);
  58. break;
  59. case EPackageCreateType.Hotfix:
  60. var hotfixClient = data.FolderType.HasFlag(EPackageCreateFolderType.Client);
  61. if (hotfixClient)
  62. {
  63. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Hotfix/Client"));
  64. }
  65. var hotfixServer = data.FolderType.HasFlag(EPackageCreateFolderType.Server);
  66. if (hotfixServer)
  67. {
  68. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Hotfix/Server"));
  69. }
  70. var hotfixShare = data.FolderType.HasFlag(EPackageCreateFolderType.Share);
  71. if (hotfixShare)
  72. {
  73. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Hotfix/Share"));
  74. }
  75. break;
  76. case EPackageCreateType.HotfixView:
  77. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/HotfixView/Client"));
  78. break;
  79. case EPackageCreateType.Model:
  80. var modelClient = data.FolderType.HasFlag(EPackageCreateFolderType.Client);
  81. if (modelClient)
  82. {
  83. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Model/Client"));
  84. }
  85. var modelServer = data.FolderType.HasFlag(EPackageCreateFolderType.Server);
  86. if (modelServer)
  87. {
  88. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Model/Server"));
  89. }
  90. var modelShare = data.FolderType.HasFlag(EPackageCreateFolderType.Share);
  91. if (modelShare)
  92. {
  93. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/Model/Share"));
  94. }
  95. break;
  96. case EPackageCreateType.ModelView:
  97. CreateDirectory(EditorHelper.GetProjPath($"{data.PackagePath}/Scripts/ModelView/Client"));
  98. break;
  99. default:
  100. Debug.LogError($"未实现的功能 {createType}");
  101. break;
  102. }
  103. }
  104. }
  105. new ETPackageCreatePackageIgnoreAsmdefCode(data);
  106. new ETPackageCreatePackageJsonCode(data);
  107. new ETPackageCreatePackageGitCode(data);
  108. }
  109. }
  110. }