Skip to content

Commit 110d834

Browse files
committed
Update System.CommandLine to beta6.
1 parent 2e2bf8f commit 110d834

3 files changed

Lines changed: 50 additions & 27 deletions

File tree

src/Demo/Demo.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
15+
<PackageReference Include="System.CommandLine" Version="2.0.0-beta6.25358.103" />
1616
</ItemGroup>
1717

1818
</Project>

src/Demo/Program.cs

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,64 @@
44
using Demo.Generator;
55
using OldBit.Beep;
66

7-
var audioFormatOption = new Option<string>("--format", () => "f32le", "The format of the output file")
8-
.FromAmong("f32le", "s16le", "u8");
9-
audioFormatOption.AddAlias("-f");
7+
var audioFormatOption = new Option<string>("--format", "-f")
8+
{
9+
Description = "The format of the output file",
10+
DefaultValueFactory = _ => "f32le"
11+
}
12+
.AcceptOnlyFromAmong("f32le", "s16le", "u8");
1013

11-
var sampleRateOption = new Option<int>("--rate", () => 44100, "The sample rate");
12-
sampleRateOption.AddAlias("-r");
14+
var sampleRateOption = new Option<int>("--rate", "-r")
15+
{
16+
Description = "The sample rate",
17+
DefaultValueFactory = _ => 44100
18+
};
1319

14-
var channelsOption = new Option<int>("--channels", () => 2, "The number of channels");
15-
channelsOption.AddAlias("-c");
20+
var channelsOption = new Option<int>("--channels", "-c")
21+
{
22+
Description = "The number of channels",
23+
DefaultValueFactory = _ => 2
24+
};
1625

17-
var waveOption = new Option<string>("--wave", () => "sine", "The type of wave to generate")
18-
.FromAmong("sine", "square");
19-
waveOption.AddAlias("-w");
26+
var waveOption = new Option<string>("--wave", "-w")
27+
{
28+
Description = "The type of wave to generate",
29+
DefaultValueFactory = _ => "sine"
30+
}
31+
.AcceptOnlyFromAmong("sine", "square");
2032

21-
var volumeOption = new Option<int>("--vol", () => 50, "The volume level");
22-
volumeOption.AddValidator(result =>
33+
var volumeOption = new Option<int>("--vol", "-v")
34+
{
35+
Description = "The volume level",
36+
DefaultValueFactory = _ => 50
37+
};
38+
volumeOption.Validators.Add(result =>
2339
{
24-
var volume = result.GetValueForOption(volumeOption);
40+
var volume = result.GetValue(volumeOption);
41+
2542
if (volume is < 0 or > 100)
2643
{
27-
result.ErrorMessage = "Volume must be between 0 and 100";
44+
result.AddError("Volume must be between 0 and 100");
2845
}
2946
});
30-
volumeOption.AddAlias("-v");
3147

3248
var rootCommand = new RootCommand("Plays a demo audio.");
33-
rootCommand.AddOption(audioFormatOption);
34-
rootCommand.AddOption(sampleRateOption);
35-
rootCommand.AddOption(channelsOption);
36-
rootCommand.AddOption(waveOption);
37-
rootCommand.AddOption(volumeOption);
49+
rootCommand.Options.Add(audioFormatOption);
50+
rootCommand.Options.Add(sampleRateOption);
51+
rootCommand.Options.Add(channelsOption);
52+
rootCommand.Options.Add(waveOption);
53+
rootCommand.Options.Add(volumeOption);
3854

39-
rootCommand.SetHandler(async (audioFormat, sampleRate, channels, waveType, volume) =>
55+
rootCommand.SetAction(async parseResult =>
4056
{
57+
var audioFormat = parseResult.GetRequiredValue(audioFormatOption);
58+
var sampleRate = parseResult.GetRequiredValue(sampleRateOption);
59+
var channels = parseResult.GetRequiredValue(channelsOption);
60+
var waveType = parseResult.GetRequiredValue(waveOption);
61+
var volume = parseResult.GetRequiredValue(volumeOption);
62+
4163
Console.WriteLine("Playing demo audio...");
42-
Console.WriteLine($"Format: {audioFormat} Sample rate: {sampleRate} Channels: {channels} WaveType: {waveType} Volume: {volume}");
64+
Console.WriteLine($"Format: {audioFormat} | Sample rate: {sampleRate} | Channels: {channels} | WaveType: {waveType} | Volume: {volume}");
4365

4466
var parsedAudioFormat = audioFormat switch
4567
{
@@ -56,7 +78,8 @@
5678
await demoPlayer.PlayAsync();
5779

5880
Console.WriteLine($"Finished playing audio in {timer.ElapsedMilliseconds}ms.");
81+
});
5982

60-
}, audioFormatOption, sampleRateOption, channelsOption, waveOption, volumeOption);
83+
var parseResult = rootCommand.Parse(args);
6184

62-
await rootCommand.InvokeAsync(args);
85+
await parseResult.InvokeAsync();

tests/Beep.Tests/Beep.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
1616
<PackageReference Include="Shouldly" Version="4.3.0" />
1717
<PackageReference Include="xunit" Version="2.9.3" />
18-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0">
18+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
<PrivateAssets>all</PrivateAssets>
2121
</PackageReference>

0 commit comments

Comments
 (0)