Skip to content

Commit 674f739

Browse files
committed
using c#8 switch expressions
1 parent 5a9b713 commit 674f739

File tree

8 files changed

+57
-96
lines changed

8 files changed

+57
-96
lines changed

src/GitVersionCore/Configuration/Init/BuildServer/AppVeyorSetup.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,12 @@ protected override StepResult HandleResult(string result, Queue<ConfigInitWizard
4545

4646
private static string GetGVCommand(ProjectVisibility visibility)
4747
{
48-
switch (visibility)
48+
return visibility switch
4949
{
50-
case ProjectVisibility.Public:
51-
return " - ps: gitversion /l console /output buildserver /updateAssemblyInfo";
52-
case ProjectVisibility.Private:
53-
return " - ps: gitversion $env:APPVEYOR_BUILD_FOLDER /l console /output buildserver /updateAssemblyInfo /nofetch /b $env:APPVEYOR_REPO_BRANCH";
54-
default:
55-
return "";
56-
}
50+
ProjectVisibility.Public => " - ps: gitversion /l console /output buildserver /updateAssemblyInfo",
51+
ProjectVisibility.Private => " - ps: gitversion $env:APPVEYOR_BUILD_FOLDER /l console /output buildserver /updateAssemblyInfo /nofetch /b $env:APPVEYOR_REPO_BRANCH",
52+
_ => ""
53+
};
5754
}
5855

5956
private void GenerateBasicConfig(string workingDirectory)

src/GitVersionCore/Extensions/AssemblyVersionsGenerator.cs

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,42 +9,30 @@ public static string GetAssemblyVersion(
99
this SemanticVersion sv,
1010
AssemblyVersioningScheme scheme)
1111
{
12-
switch (scheme)
12+
return scheme switch
1313
{
14-
case AssemblyVersioningScheme.Major:
15-
return $"{sv.Major}.0.0.0";
16-
case AssemblyVersioningScheme.MajorMinor:
17-
return $"{sv.Major}.{sv.Minor}.0.0";
18-
case AssemblyVersioningScheme.MajorMinorPatch:
19-
return $"{sv.Major}.{sv.Minor}.{sv.Patch}.0";
20-
case AssemblyVersioningScheme.MajorMinorPatchTag:
21-
return $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}";
22-
case AssemblyVersioningScheme.None:
23-
return null;
24-
default:
25-
throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme));
26-
}
14+
AssemblyVersioningScheme.Major => $"{sv.Major}.0.0.0",
15+
AssemblyVersioningScheme.MajorMinor => $"{sv.Major}.{sv.Minor}.0.0",
16+
AssemblyVersioningScheme.MajorMinorPatch => $"{sv.Major}.{sv.Minor}.{sv.Patch}.0",
17+
AssemblyVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}",
18+
AssemblyVersioningScheme.None => null,
19+
_ => throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme))
20+
};
2721
}
2822

2923
public static string GetAssemblyFileVersion(
3024
this SemanticVersion sv,
3125
AssemblyFileVersioningScheme scheme)
3226
{
33-
switch (scheme)
27+
return scheme switch
3428
{
35-
case AssemblyFileVersioningScheme.Major:
36-
return $"{sv.Major}.0.0.0";
37-
case AssemblyFileVersioningScheme.MajorMinor:
38-
return $"{sv.Major}.{sv.Minor}.0.0";
39-
case AssemblyFileVersioningScheme.MajorMinorPatch:
40-
return $"{sv.Major}.{sv.Minor}.{sv.Patch}.0";
41-
case AssemblyFileVersioningScheme.MajorMinorPatchTag:
42-
return $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}";
43-
case AssemblyFileVersioningScheme.None:
44-
return null;
45-
default:
46-
throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme));
47-
}
29+
AssemblyFileVersioningScheme.Major => $"{sv.Major}.0.0.0",
30+
AssemblyFileVersioningScheme.MajorMinor => $"{sv.Major}.{sv.Minor}.0.0",
31+
AssemblyFileVersioningScheme.MajorMinorPatch => $"{sv.Major}.{sv.Minor}.{sv.Patch}.0",
32+
AssemblyFileVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}",
33+
AssemblyFileVersioningScheme.None => null,
34+
_ => throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme))
35+
};
4836
}
4937
}
5038
}

src/GitVersionCore/IncrementStrategy.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,14 @@ public static class IncrementStrategyExtensions
2121
{
2222
public static VersionField ToVersionField(this IncrementStrategy strategy)
2323
{
24-
switch (strategy)
24+
return strategy switch
2525
{
26-
case IncrementStrategy.None:
27-
return VersionField.None;
28-
case IncrementStrategy.Major:
29-
return VersionField.Major;
30-
case IncrementStrategy.Minor:
31-
return VersionField.Minor;
32-
case IncrementStrategy.Patch:
33-
return VersionField.Patch;
34-
default:
35-
throw new ArgumentOutOfRangeException(nameof(strategy), strategy, null);
36-
}
26+
IncrementStrategy.None => VersionField.None,
27+
IncrementStrategy.Major => VersionField.Major,
28+
IncrementStrategy.Minor => VersionField.Minor,
29+
IncrementStrategy.Patch => VersionField.Patch,
30+
_ => throw new ArgumentOutOfRangeException(nameof(strategy), strategy, null)
31+
};
3732
}
3833
}
3934
}

src/GitVersionCore/SemanticVersioning/SemanticVersionBuildMetaData.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,14 @@ public string ToString(string format, IFormatProvider formatProvider = null)
104104

105105
return CommitsSinceTag != null ? CommitsSinceTag.Value.ToString("D" + padding) : string.Empty;
106106
}
107-
108-
switch (format.ToLower())
107+
108+
return format.ToLower() switch
109109
{
110-
case "b":
111-
return CommitsSinceTag.ToString();
112-
case "s":
113-
return $"{CommitsSinceTag}{(string.IsNullOrEmpty(Sha) ? null : ".Sha." + Sha)}".TrimStart('.');
114-
case "f":
115-
return $"{CommitsSinceTag}{(string.IsNullOrEmpty(Branch) ? null : ".Branch." + FormatMetaDataPart(Branch))}{(string.IsNullOrEmpty(Sha) ? null : ".Sha." + Sha)}{(string.IsNullOrEmpty(OtherMetaData) ? null : "." + FormatMetaDataPart(OtherMetaData))}"
116-
.TrimStart('.');
117-
default:
118-
throw new ArgumentException("Unrecognised format", nameof(format));
119-
}
110+
"b" => CommitsSinceTag.ToString(),
111+
"s" => $"{CommitsSinceTag}{(string.IsNullOrEmpty(Sha) ? null : ".Sha." + Sha)}".TrimStart('.'),
112+
"f" => $"{CommitsSinceTag}{(string.IsNullOrEmpty(Branch) ? null : ".Branch." + FormatMetaDataPart(Branch))}{(string.IsNullOrEmpty(Sha) ? null : ".Sha." + Sha)}{(string.IsNullOrEmpty(OtherMetaData) ? null : "." + FormatMetaDataPart(OtherMetaData))}".TrimStart('.'),
113+
_ => throw new ArgumentException("Unrecognised format", nameof(format))
114+
};
120115
}
121116

122117
public static bool operator ==(SemanticVersionBuildMetaData left, SemanticVersionBuildMetaData right)

src/GitVersionCore/SemanticVersioning/SemanticVersionPreReleaseTag.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,12 @@ public string ToString(string format, IFormatProvider formatProvider = null)
166166
return Number.HasValue ? FormatLegacy(GetLegacyName(), Number.Value.ToString("D" + padding)) : FormatLegacy(GetLegacyName());
167167
}
168168

169-
170-
switch (format)
169+
return format switch
171170
{
172-
case "t":
173-
return Number.HasValue ? $"{Name}.{Number}" : Name;
174-
case "l":
175-
return Number.HasValue ? FormatLegacy(GetLegacyName(), Number.Value.ToString()) : FormatLegacy(GetLegacyName());
176-
default:
177-
throw new ArgumentException("Unknown format", nameof(format));
178-
}
171+
"t" => (Number.HasValue ? $"{Name}.{Number}" : Name),
172+
"l" => (Number.HasValue ? FormatLegacy(GetLegacyName(), Number.Value.ToString()) : FormatLegacy(GetLegacyName())),
173+
_ => throw new ArgumentException("Unknown format", nameof(format))
174+
};
179175
}
180176

181177
private string FormatLegacy(string tag, string number = "")
Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
using System;
1+
using System;
22

33
namespace GitVersion.VersioningModes
44
{
55
public static class VersioningModeExtension
66
{
77
public static VersioningModeBase GetInstance(this VersioningMode _this)
88
{
9-
switch (_this)
9+
return _this switch
1010
{
11-
case VersioningMode.ContinuousDelivery:
12-
return new ContinuousDeliveryMode();
13-
case VersioningMode.ContinuousDeployment:
14-
return new ContinuousDeploymentMode();
15-
default:
16-
throw new ArgumentException("No instance exists for this versioning mode.");
17-
}
11+
VersioningMode.ContinuousDelivery => (VersioningModeBase) new ContinuousDeliveryMode(),
12+
VersioningMode.ContinuousDeployment => new ContinuousDeploymentMode(),
13+
_ => throw new ArgumentException("No instance exists for this versioning mode.")
14+
};
1815
}
1916
}
20-
}
17+
}

src/GitVersionExe/ArgumentParser.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,11 @@ public Arguments ParseArguments(string[] commandLineArguments)
325325
}
326326

327327
var optionKey = keyAndValue[0].ToLowerInvariant();
328-
switch (optionKey)
328+
arguments.OverrideConfig.TagPrefix = optionKey switch
329329
{
330-
case "tag-prefix":
331-
arguments.OverrideConfig.TagPrefix = keyAndValue[1];
332-
break;
333-
default:
334-
throw new WarningException($"Could not parse /overrideconfig option: {optionKey}. Currently supported only 'tag-prefix' option");
335-
}
330+
"tag-prefix" => keyAndValue[1],
331+
_ => throw new WarningException($"Could not parse /overrideconfig option: {optionKey}. Currently supported only 'tag-prefix' option")
332+
};
336333
}
337334

338335
continue;

src/GitVersionTask/FileHelper.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,13 @@ public static void DeleteTempFiles()
6363

6464
public static string GetFileExtension(string language)
6565
{
66-
switch (language)
66+
return language switch
6767
{
68-
case "C#":
69-
return "cs";
70-
case "F#":
71-
return "fs";
72-
case "VB":
73-
return "vb";
74-
default:
75-
throw new ArgumentException($"Unknown language detected: '{language}'");
76-
}
68+
"C#" => "cs",
69+
"F#" => "fs",
70+
"VB" => "vb",
71+
_ => throw new ArgumentException($"Unknown language detected: '{language}'")
72+
};
7773
}
7874

7975
public static void CheckForInvalidFiles(IEnumerable<ITaskItem> compileFiles, string projectFile)

0 commit comments

Comments
 (0)