diff --git a/MultiversalDiplomacy/CommandLine/AdjudicateOptions.cs b/MultiversalDiplomacy/CommandLine/AdjudicateOptions.cs new file mode 100644 index 0000000..67fca84 --- /dev/null +++ b/MultiversalDiplomacy/CommandLine/AdjudicateOptions.cs @@ -0,0 +1,15 @@ +using CommandLine; + +namespace MultiversalDiplomacy.CommandLine; + +[Verb("adjudicate", HelpText = "Adjudicate a Multiversal Diplomacy game state.")] +public class AdjudicateOptions +{ + [Value(0, HelpText = "Input file describing the game state to adjudicate, or - to read from stdin.")] + public string? InputFile { get; set; } + + public static void Execute(AdjudicateOptions args) + { + throw new NotImplementedException(); + } +} diff --git a/MultiversalDiplomacy/CommandLine/ImageOptions.cs b/MultiversalDiplomacy/CommandLine/ImageOptions.cs new file mode 100644 index 0000000..972ac9b --- /dev/null +++ b/MultiversalDiplomacy/CommandLine/ImageOptions.cs @@ -0,0 +1,15 @@ +using CommandLine; + +namespace MultiversalDiplomacy.CommandLine; + +[Verb("image", HelpText = "Generate an image of a game state.")] +public class ImageOptions +{ + [Value(0, HelpText = "Input file describing the game state to visualize, or - to read from stdin.")] + public string? InputFile { get; set; } + + public static void Execute(ImageOptions args) + { + throw new NotImplementedException(); + } +} diff --git a/MultiversalDiplomacy/CommandLine/ReplOptions.cs b/MultiversalDiplomacy/CommandLine/ReplOptions.cs new file mode 100644 index 0000000..d675ff0 --- /dev/null +++ b/MultiversalDiplomacy/CommandLine/ReplOptions.cs @@ -0,0 +1,12 @@ +using CommandLine; + +namespace MultiversalDiplomacy.CommandLine; + +[Verb("repl", HelpText = "Begin an interactive 5dplomacy session.")] +public class ReplOptions +{ + public static void Execute(ReplOptions args) + { + throw new NotImplementedException(); + } +} diff --git a/MultiversalDiplomacy/MultiversalDiplomacy.csproj b/MultiversalDiplomacy/MultiversalDiplomacy.csproj index 76512ea..cc12987 100644 --- a/MultiversalDiplomacy/MultiversalDiplomacy.csproj +++ b/MultiversalDiplomacy/MultiversalDiplomacy.csproj @@ -13,4 +13,8 @@ + + + + diff --git a/MultiversalDiplomacy/Program.cs b/MultiversalDiplomacy/Program.cs index f6d0fcb..692a259 100644 --- a/MultiversalDiplomacy/Program.cs +++ b/MultiversalDiplomacy/Program.cs @@ -1,12 +1,32 @@ -using System; +using CommandLine; -namespace MultiversalDiplomacy +using MultiversalDiplomacy.CommandLine; + +namespace MultiversalDiplomacy; + +internal class Program { - internal class Program + [Verb("stab", HelpText = "stab")] + private class StabOptions { - static void Main(string[] args) - { - Console.WriteLine("stab"); - } + public static void Execute(StabOptions _) + => Console.WriteLine("stab"); } -} \ No newline at end of file + + static void Main(string[] args) + { + var parser = Parser.Default; + var parseResult = parser.ParseArguments( + args, + typeof(AdjudicateOptions), + typeof(ImageOptions), + typeof(ReplOptions), + typeof(StabOptions)); + + parseResult + .WithParsed(AdjudicateOptions.Execute) + .WithParsed(ImageOptions.Execute) + .WithParsed(ReplOptions.Execute) + .WithParsed(StabOptions.Execute); + } +}