diff --git a/Tholus.Console/ModBags.cs b/Tholus.Console/ModBags.cs new file mode 100644 index 0000000..3da6166 --- /dev/null +++ b/Tholus.Console/ModBags.cs @@ -0,0 +1,36 @@ +using Cocona; + +namespace Tholus.Console; + +public class ModBags { + + [Command("add", Description = "Add a mod to a bag")] + public void Add(ModBagParameters bag, ModSourceParameters mod) { + System.Console.WriteLine($"TODO: Add new mod to bag: '{bag}' '{mod}'"); + } + + [Command("remove", Description = "Remove a mod from a bag")] + public void Remove(ModBagParameters bag, ModParameters mod) { + System.Console.WriteLine($"TODO: Remove mod from bag: '{bag}' '{mod}'"); + } + + [Command("list", Description = "List the mods contained in a bag")] + public void List(ModBagParameters bag) { + System.Console.WriteLine($"TODO: List mods of bag: '{bag}'"); + } + + [Command("apply", Description = "Apply a mod bag to an installation")] + public void Apply(ModBagParameters bag, InstallParameters install) { + System.Console.WriteLine($"TODO: Apply bag: '{bag}' '{install}'"); + } + + [Command("create", Description = "Create a new empty mod bag")] + public void Create(ModBagParameters bag) { + System.Console.WriteLine($"TODO: Create bag: '{bag}'"); + } + + [Command("destroy", Description = "Destroy an existing mod bag")] + public void Destroy(ModBagParameters bag) { + System.Console.WriteLine($"TODO: Destroy bag: '{bag}'"); + } +} diff --git a/Tholus.Console/Mods.cs b/Tholus.Console/Mods.cs new file mode 100644 index 0000000..fec78d4 --- /dev/null +++ b/Tholus.Console/Mods.cs @@ -0,0 +1,46 @@ +using Cocona; + +namespace Tholus.Console; + +public class Mods { + + [Command("add", Description = "Add a mod to an installation")] + public void Add(ModSourceParameters mod, InstallParameters install) { + System.Console.WriteLine($"TODO: Add new mod: '{install}' '{mod}'"); + } + + [Command("remove", Description = "Remove a mod from an installation")] + public void Remove(ModParameters mod, InstallParameters install) { + System.Console.WriteLine($"TODO: Remove mod: '{install}' '{mod}'"); + } + + [Command("list", Description = "List all mods enabled for an installation")] + public void List(InstallParameters install) { + System.Console.WriteLine($"TODO: List mods: '{install}'"); + } + + [Command("enable", Description = "Enable a mod for an installation")] + public void Enable(ModParameters mod, InstallParameters install) { + System.Console.WriteLine($"TODO: Enable mod: '{install}' '{mod}'"); + } + + [Command("disable", Description = "Disable a mod for an installation")] + public void Disable(ModParameters mod, InstallParameters install) { + System.Console.WriteLine($"TODO: Disable mod: '{install}' '{mod}'"); + } + + [Command("create", Description = "Create a new mod from a template")] + public void Create(ModParameters mod, [Argument(Description = "Template for the mod")] string template, InstallParameters install) { + System.Console.WriteLine($"TODO: Create mod: '{install}' '{template}' '{mod}'"); + } + + [Command("build", Description = "Build a mod's source code")] + public void Build(ModParameters mod, InstallParameters install) { + System.Console.WriteLine($"TODO: Build mod: '{install}' '{mod}'"); + } + + [Command("purge", Description = "Remove outdated or unused dependency mods for an installation")] + public void Purge(InstallParameters install, bool outdated, bool implicitlyInstalled) { + System.Console.WriteLine($"TODO: Purge mods: '{install}' Outdated: '{outdated}' ImplicityInstalled: {implicitlyInstalled}"); + } +} diff --git a/Tholus.Console/Program.cs b/Tholus.Console/Program.cs index 27f5b8f..e8d77d3 100644 --- a/Tholus.Console/Program.cs +++ b/Tholus.Console/Program.cs @@ -1,14 +1,71 @@ using Cocona; +using Tholus.Console; -internal class Program +public record InstallParameters( + [Argument("install", Description = "Name of the target installation")] + string? Name +) : ICommandParameterSet; + +public record ModBagParameters( + [Argument("bag", Description = "Name of the target mod bag")] + string Name +) : ICommandParameterSet; + +public record ModParameters( + [Argument("name", Description = "Name of the mod")] + string Name +) : ICommandParameterSet; + +public record ModSourceParameters( + [Argument("source", Description = "Source of the mod to be installed")] + string Source +) : ICommandParameterSet; + +[HasSubCommands(typeof(Mods), Description = "Manage individual mods of installations")] +[HasSubCommands(typeof(ModBags), Description = "Manage collections of mods which can be applied to installations")] +public class Program { public static void Main(string[] args) { - CoconaApp.Run(args); + CoconaApp.Run(args, options => + { + options.TreatPublicMethodsAsCommands = false; + }); + } + + [Command("add", Description = "Add an existing installation to the list Tholus knows about")] + public static void Add(string name, string path) + { + System.Console.WriteLine($"TODO: Add new install: '{name}' '{path}'"); + } + + [Command("remove", Description = "Remove an installation from the list Tholus knows about")] + public static void Remove(string name) + { + System.Console.WriteLine($"TODO: Remove install: '{name}'"); + } + + [Command("list", Description = "List all known installations")] + public static void List() + { + System.Console.WriteLine($"TODO: List installs"); + } + + [Command("install", Description = "Install Everest to an installation")] + public static void InstallEverest(string name, string everestVersion) + { + System.Console.WriteLine($"TODO: Install Everest: '{name}' '{everestVersion}'"); + } + + [Command("uninstall", Description = "Uninstall Everest from an installation")] + public static void UninstallEverest(string name) + { + System.Console.WriteLine($"TODO: Uninstall Everest: '{name}'"); } - public void Run() + [Command("launch", Description = "Launch an installation")] + public static void Launch(string name, bool vanilla) { - Console.WriteLine("Not yet implemented."); + System.Console.WriteLine($"TODO: Launch install: '{name}' Vanilla: {vanilla}"); } }