/// <summary> /// Launch a diff tool for the given paths. /// </summary> public static Task <LaunchResult> Launch(string tempFile, string targetFile) { GuardFiles(tempFile, targetFile); if (Disabled) { return(Task.FromResult(LaunchResult.Disabled)); } var extension = Extensions.GetExtension(tempFile); if (!DiffTools.TryFind(extension, out var diffTool)) { return(Task.FromResult(LaunchResult.NoDiffToolFound)); } return(Launch(diffTool, tempFile, targetFile)); }
/// <summary> /// Find and kill a diff tool process. /// </summary> public static void Kill(string path1, string path2) { Guard.AgainstNullOrEmpty(path1, nameof(path1)); Guard.AgainstNullOrEmpty(path2, nameof(path2)); var extension = Extensions.GetExtension(path1); if (!DiffTools.TryFind(extension, out var diffTool)) { return; } var command = diffTool.BuildCommand(path1, path2); if (diffTool.IsMdi) { return; } ProcessCleanup.Kill(command); }
/// <summary> /// Launch a diff tool for the given paths. /// </summary> public static void Launch(string path1, string path2) { Guard.AgainstNullOrEmpty(path1, nameof(path1)); Guard.AgainstNullOrEmpty(path2, nameof(path2)); var extension = Extensions.GetExtension(path1); if (launchedInstances >= maxInstancesToLaunch) { return; } if (!DiffTools.TryFind(extension, out var diffTool)) { return; } //TODO: throw if both dont exist if (!File.Exists(path1)) { if (!AllFiles.TryCreateFile(path1, true)) { return; } } if (!File.Exists(path2)) { if (!AllFiles.TryCreateFile(path2, true)) { return; } } launchedInstances++; Launch(diffTool, path1, path2); }