diff options
author | aszlig <aszlig@nix.build> | 2018-07-17 07:33:46 +0200 |
---|---|---|
committer | aszlig <aszlig@nix.build> | 2018-07-19 06:35:18 +0200 |
commit | 6ed68d3e6d7bfd519293e772de794c3b3460773e (patch) | |
tree | cbdc1049575f10b6127e048ddfd45a0b4e7c87c6 /pkgs/games/build-support/monogame-patcher/src/patcher.cs | |
parent | 7aa950748713fa296ea36387e8de1ba35b4196c6 (diff) |
monogame-patcher: Work around terminal width issue
If the command is not executed inside a terminal the value of Console.WindowWidth is 0 and thus we will get an exception from CommandLineParser: Unhandled Exception: System.ArgumentOutOfRangeException: Length cannot be less than zero. Parameter name: length at System.String.Substring ... at CommandLine.Text.HelpText.AddOption ... ... So let's initialize the parser with settings and if WindowWidth is 0 we just add 80 as the width. Signed-off-by: aszlig <aszlig@nix.build>
Diffstat (limited to 'pkgs/games/build-support/monogame-patcher/src/patcher.cs')
-rw-r--r-- | pkgs/games/build-support/monogame-patcher/src/patcher.cs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pkgs/games/build-support/monogame-patcher/src/patcher.cs b/pkgs/games/build-support/monogame-patcher/src/patcher.cs index cac60250..b35e44d6 100644 --- a/pkgs/games/build-support/monogame-patcher/src/patcher.cs +++ b/pkgs/games/build-support/monogame-patcher/src/patcher.cs @@ -128,7 +128,17 @@ class ReplaceCall : Command { public class patcher { public static int Main(string[] args) { - Parser.Default.ParseArguments<FixFileStreamsCmd, ReplaceCallCmd>(args) + var parser = new Parser((settings) => { + settings.EnableDashDash = true; + settings.HelpWriter = Console.Error; + + // XXX: When not running in a terminal the width is 0, but the + // CommandLine library expects it to be greater than zero. + if (Console.WindowWidth == 0) + settings.MaximumDisplayWidth = 80; + }); + + parser.ParseArguments<FixFileStreamsCmd, ReplaceCallCmd>(args) .WithParsed<FixFileStreamsCmd>(opts => new FixFileStreams(opts)) .WithParsed<ReplaceCallCmd>(opts => new ReplaceCall(opts)); return 0; |