Skip to content

Commit 935bf6c

Browse files
CLT-33159 - Fixing enum value case sensitivity (commandlineparser#198) and help text formatting (commandlineparser#236) bugs.
----- 1. Added ignoreValueCase param to methods in InstanceChooser.cs. Passed this arg through call stack. 2. Modified Parser.cs to use settings.CaseInsensitiveEnumValues. 3. Added NewLine before UsageHeadingText in HelpText.cs. 4. Commented-out Trim method call in HelpText.cs.
1 parent 286b724 commit 935bf6c

File tree

7 files changed

+83
-7
lines changed

7 files changed

+83
-7
lines changed

src/CommandLine/CommandLine.nuspec

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0"?>
2+
<package>
3+
<metadata>
4+
<id>commandlineparser</id>
5+
<version>2.2.1</version>
6+
<title>bug fix version of commandlineparser</title>
7+
<authors>
8+
</authors>
9+
<owners>
10+
</owners>
11+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
12+
<description>Temporary bug fix fork of commandlineparser.</description>
13+
<releaseNotes>Fixed enum case sensitivity bug (#198) and help text formatting bug (#236).</releaseNotes>
14+
<copyright>
15+
</copyright>
16+
<tags>commandlineparser</tags>
17+
</metadata>
18+
</package>

src/CommandLine/Core/InstanceChooser.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public static ParserResult<object> Choose(
1717
IEnumerable<Type> types,
1818
IEnumerable<string> arguments,
1919
StringComparer nameComparer,
20+
bool ignoreValueCase,
2021
CultureInfo parsingCulture,
2122
IEnumerable<ErrorType> nonFatalErrors)
2223
{
@@ -36,7 +37,7 @@ public static ParserResult<object> Choose(
3637
arguments.Skip(1).FirstOrDefault() ?? string.Empty, nameComparer))
3738
: preprocCompare("version")
3839
? MakeNotParsed(types, new VersionRequestedError())
39-
: MatchVerb(tokenizer, verbs, arguments, nameComparer, parsingCulture, nonFatalErrors);
40+
: MatchVerb(tokenizer, verbs, arguments, nameComparer, ignoreValueCase, parsingCulture, nonFatalErrors);
4041
};
4142

4243
return arguments.Any()
@@ -49,6 +50,7 @@ private static ParserResult<object> MatchVerb(
4950
IEnumerable<Tuple<Verb, Type>> verbs,
5051
IEnumerable<string> arguments,
5152
StringComparer nameComparer,
53+
bool ignoreValueCase,
5254
CultureInfo parsingCulture,
5355
IEnumerable<ErrorType> nonFatalErrors)
5456
{
@@ -60,7 +62,7 @@ private static ParserResult<object> MatchVerb(
6062
tokenizer,
6163
arguments.Skip(1),
6264
nameComparer,
63-
false,
65+
ignoreValueCase,
6466
parsingCulture,
6567
nonFatalErrors)
6668
: MakeNotParsed(verbs.Select(v => v.Item2), new BadVerbSelectedError(arguments.First()));

src/CommandLine/Parser.cs

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ public ParserResult<object> ParseArguments(IEnumerable<string> args, params Type
156156
types,
157157
args,
158158
settings.NameComparer,
159+
settings.CaseInsensitiveEnumValues,
159160
settings.ParsingCulture,
160161
HandleUnknownArguments(settings.IgnoreUnknownArguments)),
161162
settings);

src/CommandLine/Publish-NuGet.ps1

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
$projectName = "CommandLine"
2+
3+
if (!(Test-Path (".\" + $projectName + ".nuspec")))
4+
{
5+
Write-Host "Nuspec file not found." -foregroundcolor "red"
6+
Write-Host ("Please run 'nuget spec " + $projectName + ".csproj' to generate nuspec file.") -foregroundcolor "yellow"
7+
Exit
8+
}
9+
10+
[xml]$xml = Get-Content (".\" + $projectName + ".nuspec")
11+
12+
$version = $xml.package.metadata.version
13+
$releaseNotes = $xml.package.metadata.releaseNotes
14+
$id = $xml.package.metadata.id
15+
16+
Write-Host ("Current package version: " + $version) -foregroundcolor "green"
17+
$newVersion = Read-Host "What is the new package version? "
18+
19+
if ([string]::IsNullOrEmpty($newVersion))
20+
{
21+
$newVersion = $version
22+
}
23+
24+
Write-Host ("Current package release notes: " + $releaseNotes) -foregroundcolor "green"
25+
$newReleaseNotes = Read-Host "What are the new release notes? "
26+
27+
if ([string]::IsNullOrEmpty($newReleaseNotes))
28+
{
29+
$newReleaseNotes = $releaseNotes
30+
}
31+
32+
$xml.package.metadata.version = [string]$newVersion
33+
$xml.package.metadata.releaseNotes = [string]$newReleaseNotes
34+
35+
$saveDir = Resolve-Path(".\" + $projectName + ".nuspec")
36+
$xml.Save($saveDir)
37+
38+
Write-Host ("Nuspec file updated.") -foregroundcolor "green"
39+
Write-Host ("Remember to check-in new version of nuspec file to source control.") -foregroundcolor "yellow"
40+
41+
Write-Host ("Building project in release mode") -foregroundcolor "green"
42+
&"C:/Program Files (x86)/MSBuild/14.0/Bin/MSBuild.exe" $projectName.csproj /p:Configuration=Release
43+
44+
Write-Host ("Creating new NuGet package.") -foregroundcolor "green"
45+
nuget pack $projectName.csproj -Prop Configuration=Release
46+
47+
$nuGetPkgName = ($projectName + "." + $newVersion + ".nupkg")
48+
49+
$nugetUrl = Read-Host "What is the NuGet server URL? "
50+
$nugetKey = Read-Host "What is the NuGet server key? "
51+
52+
Write-Host ("Pushing new NuGet package to NuGet server") -foregroundcolor "green"
53+
nuget push $nuGetPkgName -Source $nugetUrl $nugetKey
54+

src/CommandLine/Text/HelpText.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public static HelpText AutoBuild<T>(
247247

248248
if (usageAttr.IsJust() || usageLines.IsJust())
249249
{
250-
var heading = auto.SentenceBuilder.UsageHeadingText();
250+
var heading = string.Concat(Environment.NewLine, auto.SentenceBuilder.UsageHeadingText());
251251
if (heading.Length > 0)
252252
auto.AddPreOptionsLine(heading);
253253
}
@@ -636,7 +636,7 @@ internal static void AddLine(StringBuilder builder, string value, int maximumLen
636636
throw new ArgumentOutOfRangeException(nameof(value));
637637
}
638638

639-
value = value.Trim();
639+
//value = value.Trim();
640640

641641
builder.AppendWhen(builder.Length > 0, Environment.NewLine);
642642
do

src/SharedAssemblyInfo.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
[assembly: NeutralResourcesLanguage("en-US")]
99

1010
// versions are replaced during CI build
11-
[assembly: AssemblyVersion("2.2.0.0")]
12-
[assembly: AssemblyFileVersion("2.2.0.0")]
13-
[assembly: AssemblyInformationalVersion("2.2.0.0")]
11+
[assembly: AssemblyVersion("2.2.1.0")]
12+
[assembly: AssemblyFileVersion("2.2.1.0")]
13+
[assembly: AssemblyInformationalVersion("2.2.1.0")]

tests/CommandLine.Tests/Unit/Core/InstanceChooserTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ private static ParserResult<object> InvokeChoose(
2222
types,
2323
arguments,
2424
StringComparer.Ordinal,
25+
false,
2526
CultureInfo.InvariantCulture,
2627
Enumerable.Empty<ErrorType>());
2728
}

0 commit comments

Comments
 (0)