![]() |
VOOZH | about |
dotnet add package 42.CLI.Toolkit --version 1.0.1
NuGet\Install-Package 42.CLI.Toolkit -Version 1.0.1
<PackageReference Include="42.CLI.Toolkit" Version="1.0.1" />
<PackageVersion Include="42.CLI.Toolkit" Version="1.0.1" />Directory.Packages.props
<PackageReference Include="42.CLI.Toolkit" />Project file
paket add 42.CLI.Toolkit --version 1.0.1
#r "nuget: 42.CLI.Toolkit, 1.0.1"
#:package 42.CLI.Toolkit@1.0.1
#addin nuget:?package=42.CLI.Toolkit&version=1.0.1Install as a Cake Addin
#tool nuget:?package=42.CLI.Toolkit&version=1.0.1Install as a Cake Tool
The text-base UI is the best user interface ever made❣️
This library combines multiple .net libraries into one package to simplify the creation of a CLI application. The result is easy to use because it has a nice interface, is IoC-friendly, and uses the IHostBuilder principle.
return await new HostBuilder()
.UseCommandLineApplication<ToolCommand>(args)
.UseStartup<Startup>()
.Build()
.RunCommandLineApplicationAsync();
Use the Startup class for configuration and building service provider:
public class Startup : IStartup
{
public void ConfigureApplication(IConfigurationBuilder builder)
{
// add any configuration here
// builder.AddJsonFile("appsettings.json", false, false);
}
public void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
services.AddCliToolkit(); // register the toolkit (IExtendedConsole, IRenderer, IPrompter, IProgressReporter)
// register your services here
}
}
[Subcommand(typeof(ExampleCommand))]
[Command("tool", Description = "Description in help.")]
public class ToolCommand : BaseCommand
{
public ToolCommand(IExtendedConsole console)
: base(console)
{
// no operation
}
[VersionOption("-v|--version", "", Description = "Display version of this tool.")]
public bool IsVersionRequested { get; set; }
public Task<int> OnExecuteAsync()
{
Console.WriteLine("Hello world!")
return Task.FromResult(0);
}
}
The complete documentation on how to structure commands and sub-commands is on GitHub: https://github.com/natemcmaster/CommandLineUtils
For total control, use the IExtendedConsole type from the IoC container; the system of commands uses injection through the constructor.
If needed, there are more specialized interfaces:
IRenderer
WriteLine(params object[] elements)WriteTree<T>(IComposition<T> root, Func<T, IConsoleOutput> nodeRenderFunction)WriteTable<T>(IEnumerable<T> rows, Func<T, IEnumerable<Cell>> rowRenderFunction, IEnumerable<IHeaderColumn>? headers = null)Write(Document document)IPrompter
T Input<T>(InputOptions<T> options)bool Confirm(ConfirmOptions options)IEnumerable<T> List<T>(ListOptions<T> options)T Select<T>(SelectOptions<T> options)IProgressReporter
IProgressBar StartProgressBar(string message, ProgressBarOptions? options = null)A simple demo application is available at: https://github.com/akobr/mono.me/tree/main/src/Libraries/CLI/Toolkit.Example/src
A complex CLI application: https://github.com/akobr/mono.me/tree/main/src/Monorepo/Cli/src
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.