Termino.Logging
1.0.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Termino.Logging --version 1.0.2
NuGet\Install-Package Termino.Logging -Version 1.0.2
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="Termino.Logging" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Termino.Logging --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Termino.Logging, 1.0.2"
#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 Termino.Logging as a Cake Addin #addin nuget:?package=Termino.Logging&version=1.0.2 // Install Termino.Logging as a Cake Tool #tool nuget:?package=Termino.Logging&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Contents
Termino
A very simple but cool looking, customizable and interactive text UI for your console tools.
Installation
dotnet add package Termino
Interface interaction
You only need 3 keys to interact with it: Up, Down, Enter. Use the Up and Down arrow keys to navigate through options, then press Enter to select an option.
Customization
If you are not satisfied with the default theme you can tweak it's options using the Termino.Models.Themes.TerminoTheme
class.
Some of the customization options are:
- Colors (for title, options, currently selected option)
- Top margin
- Left margin
- Options indicator character
- Display/Hide cursor
- Loop navigation between options
Code Examples
Print and interact with a menu
// Create an instance of TerminoUI
var terminoUI = new TerminoUI();
// Print a menu to the user
terminoUI.PrintMenu(TerminoMenu.Create("Choose an action", "Action 1", "Action 2", "Action 3"));
// Process the user selected option
var actionAnswer = terminoUI.ReadUserInput().Name;
switch (actionAnswer)
{
case "Action 1":
// TODO: Execute action 1
break;
case "Action 2":
// TODO: Execute action 2
break;
}
Change default theme options
// Create an instance of TerminoUI
var terminoUI = new TerminoUI();
// Declare a theme with custom options
var theme = new TerminoTheme
{
TitleForegroundColor = ConsoleColor.DarkYellow
};
// Set the theme
terminoUI.SetTheme(theme);
// Print a menu to the user
terminoUI.PrintMenu(TerminoMenu.Create("Choose an action", "Action 1", "Action 2", "Action 3"));
// Process the user selected option
var actionAnswer = terminoUI.ReadUserInput().Name;
switch (actionAnswer)
{
case "Action 1":
// TODO: Execute action 1
break;
case "Action 2":
// TODO: Execute action 2
break;
}
Termino.Logging
- Integrates Termino with with
Microsoft.Extensions.Logging
. - Supports structured logging.
Installation
dotnet add package Termino.Logging
Code Examples
Setup and use Termino and Termino.Logging in apps that use Host builder
var builder = Host.CreateApplicationBuilder(args);
// Add TerminoUI and Termino.Logging to the DI container
builder.Services.AddLogging(config =>
{
config.AddTerminoLogging();
config.SetMinimumLevel(builder.Configuration.GetValue<LogLevel>("MinimumLogLevel"));
});
var host = builder.Build();
// Manually get a new instace of Termino UI.
// Note: You can also inject it into your services
using var serviceScope = host.Services.CreateScope();
var terminoUI = serviceScope.ServiceProvider.GetRequiredService<TerminoUI>();
// Print a menu to the user
terminoUI.PrintMenu(TerminoMenu.Create("Choose an action", "Action 1", "Action 2", "Action 3"));
// Process the user selected option
var actionAnswer = terminoUI.ReadUserInput().Name;
switch (actionAnswer)
{
case "Action 1":
// TODO: Execute action 1
break;
case "Action 2":
// TODO: Execute action 2
break;
}
// Get from DI an ILogger<T> in your services (e.g. via dependency injection)
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger)
{
_logger = logger;
}
// Log messages in TerminoUI
_logger.LogInformation("Hello {@name}.", name);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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.
-
net8.0
- Microsoft.Extensions.Logging (>= 8.0.1)
- Microsoft.Extensions.Options (>= 8.0.2)
- Termino (>= 1.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.