using Spectre.Console; using Spectre.Console.Cli; namespace NetAdmin.Host; /// /// 启动类 /// public abstract class Startup : AppStartup { /// /// 程序入口 /// public static void Entry(IEnumerable args, Action commandConfig = null) where T : class, ICommand { ShowBanner(); var app = new CommandApp(); if (commandConfig != null) { app.Configure(commandConfig); } _ = app.Run(args); } /// /// 打印Banner /// private static void ShowBanner() { AnsiConsole.WriteLine(); var gridInfo = new Grid().AddColumn(new GridColumn().NoWrap().Width(50).PadRight(10)) .AddColumn(new GridColumn().NoWrap()) .Expand(); foreach (var kv in ApplicationHelper.GetEnvironmentInfo().OrderBy(x => x.Key)) { _ = gridInfo.AddRow(kv.Key, kv.Value.ToString()!.EscapeMarkup()); } var gridWrap = new Grid().AddColumn(); var entryAssembly = Assembly.GetEntryAssembly(); var assemblyName = entryAssembly!.GetName(); _ = gridWrap.AddRow(new FigletText(assemblyName.Name!).Color(Color.Green)); _ = gridWrap.AddRow(gridInfo); AnsiConsole.Write(new Panel(gridWrap).Header(GlobalStatic.ProductVersion).Expand()); AnsiConsole.WriteLine(); } }