about summary refs log tree commit diff
path: root/pkgs/games/build-support/monogame-patcher/src/patcher.cs
diff options
context:
space:
mode:
authoraszlig <aszlig@nix.build>2018-07-17 07:33:46 +0200
committeraszlig <aszlig@nix.build>2018-07-19 06:35:18 +0200
commit6ed68d3e6d7bfd519293e772de794c3b3460773e (patch)
treecbdc1049575f10b6127e048ddfd45a0b4e7c87c6 /pkgs/games/build-support/monogame-patcher/src/patcher.cs
parent7aa950748713fa296ea36387e8de1ba35b4196c6 (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.cs12
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;