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