From 548c4fdcfe00e1930098002f6780fa5b51ec3c33 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Mon, 12 Mar 2018 11:14:32 -0400 Subject: [PATCH 1/4] Adding a field in Environment to locate Unity's content's path --- src/GitHub.Api/Application/ApplicationManagerBase.cs | 4 ++-- src/GitHub.Api/Platform/DefaultEnvironment.cs | 10 ++++++---- src/GitHub.Api/Platform/IEnvironment.cs | 3 ++- .../Assets/Editor/GitHub.Unity/ApplicationCache.cs | 5 ++++- .../IntegrationTests/IntegrationTestEnvironment.cs | 8 +++++--- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/GitHub.Api/Application/ApplicationManagerBase.cs b/src/GitHub.Api/Application/ApplicationManagerBase.cs index 870f82b4e..6bdb6da7c 100644 --- a/src/GitHub.Api/Application/ApplicationManagerBase.cs +++ b/src/GitHub.Api/Application/ApplicationManagerBase.cs @@ -89,8 +89,8 @@ public ITask InitializeRepository() var targetPath = NPath.CurrentDirectory; var unityYamlMergeExec = Environment.IsWindows - ? Environment.UnityApplication.Parent.Combine("Data", "Tools", "UnityYAMLMerge.exe") - : Environment.UnityApplication.Combine("Contents", "Tools", "UnityYAMLMerge"); + ? Environment.UnityApplicationContents.Parent.Combine("Tools", "UnityYAMLMerge.exe") + : Environment.UnityApplicationContents.Combine("Tools", "UnityYAMLMerge"); var yamlMergeCommand = Environment.IsWindows ? $@"'{unityYamlMergeExec}' merge -p ""$BASE"" ""$REMOTE"" ""$LOCAL"" ""$MERGED""" diff --git a/src/GitHub.Api/Platform/DefaultEnvironment.cs b/src/GitHub.Api/Platform/DefaultEnvironment.cs index f1c6f59a0..02a1dbce1 100644 --- a/src/GitHub.Api/Platform/DefaultEnvironment.cs +++ b/src/GitHub.Api/Platform/DefaultEnvironment.cs @@ -42,10 +42,11 @@ public DefaultEnvironment(ICacheContainer cacheContainer) this.CacheContainer = cacheContainer; } - public void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityPath, NPath assetsPath) + public void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityApplicationPath, NPath unityApplicationContentsPath, NPath assetsPath) { ExtensionInstallPath = extensionInstallPath; - UnityApplication = unityPath; + UnityApplication = unityApplicationPath; + UnityApplicationContents = unityApplicationContentsPath; UnityAssetsPath = assetsPath; UnityProjectPath = assetsPath.Parent; UnityVersion = unityVersion; @@ -109,6 +110,7 @@ public string GetEnvironmentVariable(string variable) public IFileSystem FileSystem { get { return NPath.FileSystem; } set { NPath.FileSystem = value; } } public string UnityVersion { get; set; } public NPath UnityApplication { get; set; } + public NPath UnityApplicationContents { get; set; } public NPath UnityAssetsPath { get; set; } public NPath UnityProjectPath { get; set; } public NPath ExtensionInstallPath { get; set; } @@ -141,8 +143,8 @@ public NPath NodeJsExecutablePath if (!nodeJsExecutablePath.IsInitialized) { nodeJsExecutablePath = IsWindows - ? UnityApplication.Parent.Combine("Data", "Tools", "nodejs", "node.exe") - : UnityApplication.Combine("Contents", "Tools", "nodejs", "node"); + ? UnityApplicationContents.Parent.Combine("Tools", "nodejs", "node.exe") + : UnityApplicationContents.Combine("Tools", "nodejs", "node"); } return nodeJsExecutablePath; diff --git a/src/GitHub.Api/Platform/IEnvironment.cs b/src/GitHub.Api/Platform/IEnvironment.cs index 9fc4a3f2b..2a8d85105 100644 --- a/src/GitHub.Api/Platform/IEnvironment.cs +++ b/src/GitHub.Api/Platform/IEnvironment.cs @@ -4,7 +4,7 @@ namespace GitHub.Unity { public interface IEnvironment { - void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityPath, NPath assetsPath); + void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityApplicationPath, NPath unityApplicationContentsPath, NPath assetsPath); void InitializeRepository(NPath? expectedRepositoryPath = null); string ExpandEnvironmentVariables(string name); string GetEnvironmentVariable(string v); @@ -20,6 +20,7 @@ public interface IEnvironment bool IsMac { get; } string UnityVersion { get; } NPath UnityApplication { get; } + NPath UnityApplicationContents { get; } NPath UnityAssetsPath { get; } NPath UnityProjectPath { get; } NPath ExtensionInstallPath { get; } diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs index 32db966a5..b7bd0d60e 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs @@ -81,6 +81,7 @@ sealed class EnvironmentCache : ScriptObjectSingleton [SerializeField] private string extensionInstallPath; [SerializeField] private string repositoryPath; [SerializeField] private string unityApplication; + [SerializeField] private string unityApplicationContents; [SerializeField] private string unityAssetsPath; [SerializeField] private string unityVersion; @@ -88,6 +89,7 @@ public void Flush() { repositoryPath = Environment.RepositoryPath; unityApplication = Environment.UnityApplication; + unityApplicationContents = Environment.UnityApplicationContents; unityAssetsPath = Environment.UnityAssetsPath; extensionInstallPath = Environment.ExtensionInstallPath; Save(true); @@ -114,11 +116,12 @@ public IEnvironment Environment { unityAssetsPath = Application.dataPath; unityApplication = EditorApplication.applicationPath; + unityApplicationContents = EditorApplication.applicationContentsPath; extensionInstallPath = DetermineInstallationPath(); unityVersion = Application.unityVersion; } environment.Initialize(unityVersion, extensionInstallPath.ToNPath(), unityApplication.ToNPath(), - unityAssetsPath.ToNPath()); + unityApplicationContents.ToNPath(), unityAssetsPath.ToNPath()); NPath? path = null; if (!String.IsNullOrEmpty(repositoryPath)) path = repositoryPath.ToNPath(); diff --git a/src/tests/IntegrationTests/IntegrationTestEnvironment.cs b/src/tests/IntegrationTests/IntegrationTestEnvironment.cs index 229ef3d49..e3c8abe44 100644 --- a/src/tests/IntegrationTests/IntegrationTestEnvironment.cs +++ b/src/tests/IntegrationTests/IntegrationTestEnvironment.cs @@ -33,7 +33,7 @@ public IntegrationTestEnvironment(ICacheContainer cacheContainer, var installPath = solutionDirectory.Parent.Parent.Combine("src", "GitHub.Api"); - Initialize(UnityVersion, installPath, solutionDirectory, repoPath.Combine("Assets")); + Initialize(UnityVersion, installPath, solutionDirectory, NPath.Default, repoPath.Combine("Assets")); if (initializeRepository) InitializeRepository(); @@ -47,9 +47,9 @@ public IntegrationTestEnvironment(ICacheContainer cacheContainer, } } - public void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityPath, NPath assetsPath) + public void Initialize(string unityVersion, NPath extensionInstallPath, NPath unityPath, NPath unityContentsPath, NPath assetsPath) { - defaultEnvironment.Initialize(unityVersion, extensionInstallPath, unityPath, assetsPath); + defaultEnvironment.Initialize(unityVersion, extensionInstallPath, unityPath, unityContentsPath, assetsPath); } public void InitializeRepository(NPath? expectedPath = null) @@ -114,6 +114,8 @@ public NPath GitExecutablePath public NPath UnityApplication => defaultEnvironment.UnityApplication; + public NPath UnityApplicationContents => defaultEnvironment.UnityApplicationContents; + public NPath UnityAssetsPath => defaultEnvironment.UnityAssetsPath; public NPath UnityProjectPath => defaultEnvironment.UnityProjectPath; From 29b418d67029daaf67d6bf2eec6557ce4a8141ec Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 15 Mar 2018 09:38:40 -0700 Subject: [PATCH 2/4] Remove unintentional Parent --- src/GitHub.Api/Platform/DefaultEnvironment.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitHub.Api/Platform/DefaultEnvironment.cs b/src/GitHub.Api/Platform/DefaultEnvironment.cs index 02a1dbce1..e5dd48bfe 100644 --- a/src/GitHub.Api/Platform/DefaultEnvironment.cs +++ b/src/GitHub.Api/Platform/DefaultEnvironment.cs @@ -143,7 +143,7 @@ public NPath NodeJsExecutablePath if (!nodeJsExecutablePath.IsInitialized) { nodeJsExecutablePath = IsWindows - ? UnityApplicationContents.Parent.Combine("Tools", "nodejs", "node.exe") + ? UnityApplicationContents.Combine("Tools", "nodejs", "node.exe") : UnityApplicationContents.Combine("Tools", "nodejs", "node"); } From eaefb1dc941d8478808a88faddb31e844044bf24 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 15 Mar 2018 11:15:00 -0700 Subject: [PATCH 3/4] Simplifying path expression --- src/GitHub.Api/Platform/DefaultEnvironment.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/GitHub.Api/Platform/DefaultEnvironment.cs b/src/GitHub.Api/Platform/DefaultEnvironment.cs index e5dd48bfe..2a461685c 100644 --- a/src/GitHub.Api/Platform/DefaultEnvironment.cs +++ b/src/GitHub.Api/Platform/DefaultEnvironment.cs @@ -142,9 +142,8 @@ public NPath NodeJsExecutablePath { if (!nodeJsExecutablePath.IsInitialized) { - nodeJsExecutablePath = IsWindows - ? UnityApplicationContents.Combine("Tools", "nodejs", "node.exe") - : UnityApplicationContents.Combine("Tools", "nodejs", "node"); + nodeJsExecutablePath = + UnityApplicationContents.Combine("Tools", "nodejs", "node" + ExecutableExtension); } return nodeJsExecutablePath; @@ -209,7 +208,7 @@ public static bool OnMac } set { onMac = value; } } - public string ExecutableExtension { get { return IsWindows ? ".exe" : null; } } + public string ExecutableExtension { get { return IsWindows ? ".exe" : string.Empty; } } protected static ILogging Logger { get; } = LogHelper.GetLogger(); } } \ No newline at end of file From ca4f1e1bd485f8aba0ed87d6b8edea1fe4737382 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 15 Mar 2018 11:18:05 -0700 Subject: [PATCH 4/4] Correcting and simplifying another path expression --- src/GitHub.Api/Application/ApplicationManagerBase.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/GitHub.Api/Application/ApplicationManagerBase.cs b/src/GitHub.Api/Application/ApplicationManagerBase.cs index 6bdb6da7c..2bc1cd8c2 100644 --- a/src/GitHub.Api/Application/ApplicationManagerBase.cs +++ b/src/GitHub.Api/Application/ApplicationManagerBase.cs @@ -88,9 +88,7 @@ public ITask InitializeRepository() var targetPath = NPath.CurrentDirectory; - var unityYamlMergeExec = Environment.IsWindows - ? Environment.UnityApplicationContents.Parent.Combine("Tools", "UnityYAMLMerge.exe") - : Environment.UnityApplicationContents.Combine("Tools", "UnityYAMLMerge"); + var unityYamlMergeExec = Environment.UnityApplicationContents.Combine("Tools", "UnityYAMLMerge" + Environment.ExecutableExtension); var yamlMergeCommand = Environment.IsWindows ? $@"'{unityYamlMergeExec}' merge -p ""$BASE"" ""$REMOTE"" ""$LOCAL"" ""$MERGED"""