summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs')
-rw-r--r--Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs137
1 files changed, 0 insertions, 137 deletions
diff --git a/Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs b/Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs
deleted file mode 100644
index 609d2cd..0000000
--- a/Library/PackageCache/com.unity.ide.vscode@1.1.4/Editor/VSCodeDiscovery.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using Unity.CodeEditor;
-
-namespace VSCodeEditor
-{
- public interface IDiscovery
- {
- CodeEditor.Installation[] PathCallback();
- }
-
- public class VSCodeDiscovery : IDiscovery
- {
- List<CodeEditor.Installation> m_Installations;
-
- public CodeEditor.Installation[] PathCallback()
- {
- if (m_Installations == null)
- {
- m_Installations = new List<CodeEditor.Installation>();
- FindInstallationPaths();
- }
-
- return m_Installations.ToArray();
- }
-
- void FindInstallationPaths()
- {
- string[] possiblePaths =
-#if UNITY_EDITOR_OSX
- {
- "/Applications/Visual Studio Code.app",
- "/Applications/Visual Studio Code - Insiders.app"
- };
-#elif UNITY_EDITOR_WIN
- {
- GetProgramFiles() + @"/Microsoft VS Code/bin/code.cmd",
- GetProgramFiles() + @"/Microsoft VS Code/Code.exe",
- GetProgramFiles() + @"/Microsoft VS Code Insiders/bin/code-insiders.cmd",
- GetProgramFiles() + @"/Microsoft VS Code Insiders/Code.exe",
- GetLocalAppData() + @"/Programs/Microsoft VS Code/bin/code.cmd",
- GetLocalAppData() + @"/Programs/Microsoft VS Code/Code.exe",
- GetLocalAppData() + @"/Programs/Microsoft VS Code Insiders/bin/code-insiders.cmd",
- GetLocalAppData() + @"/Programs/Microsoft VS Code Insiders/Code.exe",
- };
-#else
- {
- "/usr/bin/code",
- "/bin/code",
- "/usr/local/bin/code",
- "/var/lib/flatpak/exports/bin/com.visualstudio.code",
- "/snap/current/bin/code"
- };
-#endif
- var existingPaths = possiblePaths.Where(VSCodeExists).ToList();
- if (!existingPaths.Any())
- {
- return;
- }
-
- var lcp = GetLongestCommonPrefix(existingPaths);
- switch (existingPaths.Count)
- {
- case 1:
- {
- var path = existingPaths.First();
- m_Installations = new List<CodeEditor.Installation>
- {
- new CodeEditor.Installation
- {
- Path = path,
- Name = path.Contains("Insiders")
- ? "Visual Studio Code Insiders"
- : "Visual Studio Code"
- }
- };
- break;
- }
- case 2 when existingPaths.Any(path => !(path.Substring(lcp.Length).Contains("/") || path.Substring(lcp.Length).Contains("\\"))):
- {
- goto case 1;
- }
- default:
- {
- m_Installations = existingPaths.Select(path => new CodeEditor.Installation
- {
- Name = $"Visual Studio Code Insiders ({path.Substring(lcp.Length)})",
- Path = path
- }).ToList();
-
- break;
- }
- }
- }
-
-#if UNITY_EDITOR_WIN
- static string GetProgramFiles()
- {
- return Environment.GetEnvironmentVariable("ProgramFiles")?.Replace("\\", "/");
- }
-
- static string GetLocalAppData()
- {
- return Environment.GetEnvironmentVariable("LOCALAPPDATA")?.Replace("\\", "/");
- }
-#endif
-
- static string GetLongestCommonPrefix(List<string> paths)
- {
- var baseLength = paths.First().Length;
- for (var pathIndex = 1; pathIndex < paths.Count; pathIndex++)
- {
- baseLength = Math.Min(baseLength, paths[pathIndex].Length);
- for (var i = 0; i < baseLength; i++)
- {
- if (paths[pathIndex][i] == paths[0][i]) continue;
-
- baseLength = i;
- break;
- }
- }
-
- return paths[0].Substring(0, baseLength);
- }
-
- static bool VSCodeExists(string path)
- {
-#if UNITY_EDITOR_OSX
- return System.IO.Directory.Exists(path);
-#else
- return new FileInfo(path).Exists;
-#endif
- }
- }
-}