-
-
Notifications
You must be signed in to change notification settings - Fork 379
/
KnownDiffTools.cs
72 lines (61 loc) · 2.95 KB
/
KnownDiffTools.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#if ShouldMatchApproved
using System.IO;
using JetBrains.Annotations;
namespace Shouldly.Configuration
{
public class KnownDiffTools
{
[UsedImplicitly]
public readonly DiffTool KDiff3 = new DiffTool("KDiff3", @"KDiff3\kdiff3.exe", KDiffArgs);
[UsedImplicitly]
public readonly DiffTool BeyondCompare3 = new DiffTool("Beyond Compare 3", @"Beyond Compare 3\BCompare.exe", BeyondCompareArgs);
[UsedImplicitly]
public readonly DiffTool BeyondCompare4 = new DiffTool("Beyond Compare 4", @"Beyond Compare 4\BCompare.exe", BeyondCompareArgs);
[UsedImplicitly]
public readonly DiffTool CodeCompare = new DiffTool("Code Compare", @"Devart\Code Compare\CodeMerge.exe", CodeCompareArgs);
[UsedImplicitly]
public readonly DiffTool P4Merge = new DiffTool("P4Merge", @"Perforce\p4merge.exe", P4MergeArgs);
[UsedImplicitly]
public readonly DiffTool TortoiseGitMerge = new DiffTool("Tortoise Git Merge", @"TortoiseGit\bin\TortoiseGitMerge.exe", TortoiseGitMergeArgs);
[UsedImplicitly]
public readonly DiffTool WinMerge = new DiffTool("WinMerge", @"WinMerge\WinMergeU.exe", WinMergeArgs);
[UsedImplicitly]
public readonly DiffTool CurrentVisualStudio = new CurrentlyRunningVisualStudioDiffTool();
public static KnownDiffTools Instance { get; } = new KnownDiffTools();
static string BeyondCompareArgs(string received, string approved, bool approvedExists)
{
return approvedExists
? $"\"{received}\" \"{approved}\" /mergeoutput=\"{approved}\""
: $"\"{received}\" /mergeoutput=\"{approved}\"";
}
static string KDiffArgs(string received, string approved, bool approvedExists)
{
return approvedExists
? $"\"{received}\" \"{approved}\" -o \"{approved}\""
: $"\"{received}\" -o \"{approved}\"";
}
static string CodeCompareArgs(string received, string approved, bool approvedExists)
{
return $"/BF=\"{approved}\" /TF=\"{approved}\" /MF=\"{received}\" /RF=\"{approved}\"";
}
static string P4MergeArgs(string received, string approved, bool approvedExists)
{
if (!approvedExists)
File.AppendAllText(approved, string.Empty);
return $"\"{approved}\" \"{approved}\" \"{received}\" \"{approved}\"";
}
static string TortoiseGitMergeArgs(string received, string approved, bool approvedExists)
{
if (!approvedExists)
File.AppendAllText(approved, string.Empty);
return $"\"{received}\" \"{approved}\"";
}
static string WinMergeArgs(string received, string approved, bool approvedExists)
{
if (!approvedExists)
File.AppendAllText(approved, string.Empty);
return $"/u /wl \"{received}\" \"{approved}\" \"{approved}\"";
}
}
}
#endif