using CustomHostingDemo.Logging; using Microsoft.Extensions.Configuration; using System; using System.CommandLine; using System.CommandLine.Invocation; using System.Threading.Tasks; namespace CustomHostingDemo { public class HelloCommand : CustomCommand { public HelloCommand() : base("hello", "says hello", typeof(DefaultHandler)) { AddArgument(new Argument("date", () => DateTime.Today)); AddOption(new Option("--verbose")); } public class HelloArgs : IDefaultArgs { public DateTime Date { get; set; } public bool Verbose { get; set; } } public class DefaultHandler : ICommandHandler { private readonly ICliLogger _logger; private readonly IConfiguration _config; public DefaultHandler(ICliLogger logger, IConfiguration config) { _logger = logger; _config = config; } public Task InvokeAsync(InvocationContext context, HelloArgs args) { _logger.LogContent($"Hello {_config["Hello"]}! How are you?"); _logger.LogInfo($"P: --date {args.Date}"); _logger.LogInfo($"P: --verbose {args.Verbose}"); return Task.FromResult(0); } } } }