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);
+ }
+}