UnityConfigurationChecker.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System.IO;
  2. using Codice.Client.Common;
  3. using Codice.CM.Common;
  4. using Codice.Utils;
  5. using Unity.PlasticSCM.Editor.Tool;
  6. namespace Unity.PlasticSCM.Editor
  7. {
  8. internal static class UnityConfigurationChecker
  9. {
  10. internal static bool NeedsConfiguration()
  11. {
  12. string plasticClientBinDir = PlasticInstallPath.GetClientBinDir();
  13. if (!string.IsNullOrEmpty(plasticClientBinDir))
  14. SetupUnityEditionToken.FromPlasticInstallation(plasticClientBinDir);
  15. if (ConfigurationChecker.NeedConfiguration())
  16. return true;
  17. if (ClientConfig.Get().GetClientConfigData().WorkingMode == "SSOWorkingMode" &&
  18. !CmConnection.Get().IsAnyTokenConfigured())
  19. return true;
  20. return false;
  21. }
  22. }
  23. internal static class SetupUnityEditionToken
  24. {
  25. internal static void CreateCloudEditionTokenIfNeeded()
  26. {
  27. string toolPath = PlasticInstallPath.GetPlasticExePath();
  28. if (!string.IsNullOrEmpty(toolPath))
  29. return;
  30. string tokenFilePath = UserConfigFolder.GetConfigFile(
  31. EditionToken.CLOUD_EDITION_FILE_NAME);
  32. File.Create(tokenFilePath).Dispose();
  33. }
  34. internal static void FromPlasticInstallation(string plasticClientBinDir)
  35. {
  36. bool isCloudPlasticInstall = IsPlasticInstallOfEdition(
  37. plasticClientBinDir,
  38. EditionToken.CLOUD_EDITION_FILE_NAME);
  39. bool isDvcsPlasticInstall = IsPlasticInstallOfEdition(
  40. plasticClientBinDir,
  41. EditionToken.DVCS_EDITION_FILE_NAME);
  42. SetupTokenFiles(
  43. isCloudPlasticInstall,
  44. isDvcsPlasticInstall);
  45. }
  46. static void SetupTokenFiles(
  47. bool isCloudPlasticInstall,
  48. bool isDvcsPlasticInstall)
  49. {
  50. string unityCloudEditionTokenFile = UserConfigFolder.GetConfigFile(
  51. EditionToken.CLOUD_EDITION_FILE_NAME);
  52. string unityDvcsEditionTokenFile = UserConfigFolder.GetConfigFile(
  53. EditionToken.DVCS_EDITION_FILE_NAME);
  54. CreateOrDeleteTokenFile(isCloudPlasticInstall, unityCloudEditionTokenFile);
  55. CreateOrDeleteTokenFile(isDvcsPlasticInstall, unityDvcsEditionTokenFile);
  56. }
  57. static void CreateOrDeleteTokenFile(bool isEdition, string editionTokenFile)
  58. {
  59. if (isEdition && !File.Exists(editionTokenFile))
  60. {
  61. File.Create(editionTokenFile).Dispose();
  62. return;
  63. }
  64. if (!isEdition && File.Exists(editionTokenFile))
  65. {
  66. File.Delete(editionTokenFile);
  67. return;
  68. }
  69. }
  70. static bool IsPlasticInstallOfEdition(
  71. string plasticClientBinDir,
  72. string editionFileName)
  73. {
  74. return File.Exists(Path.Combine(
  75. plasticClientBinDir,
  76. editionFileName));
  77. }
  78. }
  79. }