using Develop;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Smart.CommandLine.Hosting;
// Command host
var builder = CommandHost.CreateBuilder(args);
Console.WriteLine($"Application: {builder.Environment.ApplicationName}");
Console.WriteLine($"Environment: {builder.Environment.EnvironmentName}");
// Logging
builder.Services.AddLogging(logging =>
{
logging.AddSimpleConsole(options =>
{
options.SingleLine = true;
options.TimestampFormat = "HH:mm:ss.fff ";
options.IncludeScopes = true;
});
});
// Services
builder.Services.AddSingleton();
builder.Services.AddScoped();
// Commands
builder.ConfigureCommands(commands =>
{
commands.ConfigureRootCommand(root =>
{
root.WithDescription("Sample CLI tool");
});
commands.AddGlobalFilter(order: -100);
commands.AddGlobalFilter(order: Int32.MaxValue);
commands.AddCommand();
commands.AddCommand();
commands.AddCommand();
commands.AddCommand();
commands.AddCommand();
commands.AddCommand(user =>
{
user.AddSubCommand();
user.AddSubCommand();
user.AddSubCommand(role =>
{
role.AddSubCommand();
role.AddSubCommand();
});
});
});
var host = builder.Build();
var exitCode = await host.RunAsync();
Console.WriteLine($"ExitCode: {exitCode}");
return exitCode;