| using System.IO; | |
| using Codice.Client.Common; | |
| using Codice.CM.Common; | |
| using PlasticGui; | |
| namespace Unity.PlasticSCM.Editor | |
| { | |
| internal static class FindWorkspace | |
| { | |
| internal static bool HasWorkspace(string path) | |
| { | |
| string wkPath = PathForApplicationPath(path); | |
| return !string.IsNullOrEmpty(wkPath); | |
| } | |
| internal static string PathForApplicationPath(string path) | |
| { | |
| try | |
| { | |
| return FindWorkspacePath(path, ClientConfig.Get().GetWkConfigDir()); | |
| } | |
| catch (NotConfiguredClientException) | |
| { | |
| return null; | |
| } | |
| } | |
| internal static WorkspaceInfo InfoForApplicationPath(string path, IPlasticAPI plasticApi) | |
| { | |
| string wkPath = PathForApplicationPath(path); | |
| if (string.IsNullOrEmpty(wkPath)) | |
| return null; | |
| return plasticApi.GetWorkspaceFromPath(wkPath); | |
| } | |
| static string FindWorkspacePath(string path, string wkConfigDir) | |
| { | |
| while (!string.IsNullOrEmpty(path)) | |
| { | |
| if (Directory.Exists(Path.Combine(path, wkConfigDir))) | |
| return path; | |
| path = Path.GetDirectoryName(path); | |
| } | |
| return null; | |
| } | |
| } | |
| } |