using System.CommandLine; namespace GSS2.Commands; public static class UI { public enum RenderingModes { X11, DRM } public static readonly RootCommand RootCommand; public static readonly Command Command; public static readonly Option Fullscreen; public static readonly Option RenderingMode; public static readonly Option HideConsole; static UI() { // Создаём команды, опции, аргументы и пр. RootCommand = new("Запустить графическое приложение"); Command = new("ui") { Description = "Запустить графическое приложение" }; Fullscreen = new("--fullscreen", ["-f"]) { Description = "Запустить приложение в полноэкранном режиме", }; RenderingMode = new("--mode", ["--rendering-mode", "-m"]) { Description = "Режим рендеринга", DefaultValueFactory = (_) => RenderingModes.X11 }; HideConsole = new("--hide-console", ["--no-console", "-c"]) { Description = "Отключить вывод в консоль", DefaultValueFactory = (result) => result.GetValue(RenderingMode) == RenderingModes.DRM }; // Изменяем описания стандартных опций Helper.TranslateDefaultOptionDescriptions(RootCommand); // Наполняем команды RootCommand.Add(Fullscreen); RootCommand.Add(RenderingMode); RootCommand.Add(HideConsole); RootCommand.SetAction(CommandAction); Command.Add(Fullscreen); Command.Add(RenderingMode); Command.Add(HideConsole); Command.SetAction(CommandAction); } /// /// Получить команду как корневую /// public static RootCommand GetCommand() => RootCommand; /// /// Зарегистрировать команду как подкоманду /// /// Команда в которой необходимо зарегистрировать подкоманду public static void RegisterCommand(Command command) => command.Add(Command); private static void CommandAction(ParseResult result) { } }