Kritikos.SpectreCli.Logging 0.1.10

dotnet add package Kritikos.SpectreCli.Logging --version 0.1.10
NuGet\Install-Package Kritikos.SpectreCli.Logging -Version 0.1.10
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kritikos.SpectreCli.Logging" Version="0.1.10" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kritikos.SpectreCli.Logging --version 0.1.10
#r "nuget: Kritikos.SpectreCli.Logging, 0.1.10"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kritikos.SpectreCli.Logging as a Cake Addin
#addin nuget:?package=Kritikos.SpectreCli.Logging&version=0.1.10

// Install Kritikos.SpectreCli.Logging as a Cake Tool
#tool nuget:?package=Kritikos.SpectreCli.Logging&version=0.1.10

Spectre.Hosting

An opinionated set of extensions and infrastructure for the excelent Spectre.Console.Cli, mainly covering the integration with Dependency Injection and logging via Serilog.

Usage

CommandBuilder and Extensions

Creates a CommandApp with a fluent builder pattern, with the following options provided:

  • Using ICommandAppStartup for configuration:
    public class CommandStartup : ICommandStartup
    { ... }
    
    var app = CommandBuilder.CreateDefaultBuilder()
      .UseStartup<CommandStartup>;
    
  • Make all CommandSettings available for dependency injection:
    public class CommandStartup : ICommandStartup
    { ... }
    
    var app = CommandBuilder.CreateDefaultBuilder()
      .RegisterSettingsFromAssemblyContaining<CommandStartup>();
    
      // OR
    
    var app = CommandBuilder.CreateDefaultBuilder()
      .RegisterSettingsFromAssembly(typeof(CommandStartup).Assembly);
    
  • Adds logging to file via Serilog:
    // Additionally, make sure your CommandSettings inherit from LogCommandSettings
    // in order to include the verbosity level and the path to the log file
    var app = CommandBuilder.CreateDefaultBuilder()
      .AddFileLogging();
    

For ease of use, the extension method CommandBuilder.CreateDefaultCommandApp<T>() is provided, where T is an implementation of ICommandStartup. This method will ensure you get a command app with all the above options enabled. A sample implementation follows:

public class Startup : ICommandAppStartup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddRefitClient<IAzureDevOpsApi>(_=>new RefitSettings(), string.Empty);
  }

   public void Configure(IConfigurator appConfiguration)
  {
    ArgumentNullException.ThrowIfNull(appConfiguration);
    appConfiguration
      .SetApplicationName("devops-cli")
      .CaseSensitivity(CaseSensitivity.None);

    appConfiguration.AddCommand<FooCommand>("foo");
  }
}

Dependency Injection

Provide a proper IServiceCollection implementation to TypeRegistrar and use it when constructing your CommandApp:

var services = new ServiceCollection();
var app = new CommandApp(new TypeRegistrar(services));

Logging

Predefined logging settings include settable verbosity at run time and logging to a file writer.

Alternatively, create your own implementations of the above classes.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Kritikos.SpectreCli.Logging:

Package Downloads
Kritikos.SpectreCli.Infrastructure

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.10 631 9/27/2023