EditorUtils.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace com.JamesMobile.editor
  6. {
  7. public class EditorUtils {
  8. public static void ExecuteCommand(string executor, string cmd) {
  9. var start = new System.Diagnostics.ProcessStartInfo();
  10. start.FileName = executor;
  11. start.Arguments = cmd;
  12. start.CreateNoWindow = true;
  13. start.ErrorDialog = true;
  14. start.UseShellExecute = false;
  15. start.RedirectStandardOutput = true;
  16. start.RedirectStandardInput = true;
  17. start.RedirectStandardError = true;
  18. //
  19. var process = System.Diagnostics.Process.Start(start);
  20. process.WaitForExit();
  21. var output = process.StandardOutput.ReadToEnd();
  22. var error = process.StandardError.ReadToEnd();
  23. process.Close();
  24. //
  25. if (string.IsNullOrEmpty(error)) Debug.Log(cmd + " :\n\n" + output);
  26. else Debug.LogError(cmd + " :\n\n" + output + "\n\n" + error);
  27. }
  28. public static int Version2Code(string version)
  29. {
  30. try
  31. {
  32. var code = 0;
  33. var parts = version.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
  34. var len = parts.Length;
  35. for (int i = 0; i < len; i++)
  36. {
  37. code += int.Parse(parts[i]) * (int)Mathf.Pow(100, len - i - 1);
  38. }
  39. return code;
  40. }
  41. catch (Exception)
  42. {
  43. // Debug.LogError(e.StackTrace);
  44. return 0;
  45. }
  46. }
  47. //
  48. public static string GetAARVersion()
  49. {
  50. var files = Directory.GetFiles(EditorConstants.AAR_DIR, "unimob-*.aar");
  51. var targetVer = string.Empty;
  52. foreach (var filePath in files)
  53. {
  54. var fileName = Path.GetFileName(filePath);
  55. var cursorVer = filePath.Split('-')[1].Substring(1);
  56. if ((string.IsNullOrEmpty(targetVer) && EditorUtils.Version2Code(cursorVer) > 0) || EditorUtils.Version2Code(targetVer) < EditorUtils.Version2Code(cursorVer))
  57. {
  58. targetVer = cursorVer;
  59. }
  60. }
  61. return targetVer;
  62. }
  63. public static void CleanAARs()
  64. {
  65. foreach(var aar in Directory.GetFiles(EditorConstants.AAR_DIR, "unimob-*.aar")) // clean
  66. {
  67. FileUtil.DeleteFileOrDirectory(aar);
  68. FileUtil.DeleteFileOrDirectory(aar + ".meta");
  69. }
  70. }
  71. public static string GetFrameworkVersion()
  72. {
  73. var versionFilePath = Path.Combine(EditorConstants.FRAMEWORK_PATH, "version.txt");
  74. if (! File.Exists(versionFilePath)) return null;
  75. return File.ReadAllText(versionFilePath).Trim();
  76. }
  77. public static void CleanFramework()
  78. {
  79. FileUtil.DeleteFileOrDirectory(EditorConstants.FRAMEWORK_PATH); // clean framework
  80. FileUtil.DeleteFileOrDirectory(EditorConstants.FRAMEWORK_PATH + ".meta"); // clean meta
  81. }
  82. // Defined Editor Prefs
  83. public static int ProxyPort
  84. {
  85. get => EditorPrefs.GetInt($"UNIMOB_BUILD_proxyPort_{Application.identifier}", 0);
  86. set => EditorPrefs.SetInt($"UNIMOB_BUILD_proxyPort_{Application.identifier}", value);
  87. }
  88. }
  89. }