Redpoint.CommandLine
2024.1093.520
Prefix Reserved
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 Redpoint.CommandLine --version 2024.1093.520
NuGet\Install-Package Redpoint.CommandLine -Version 2024.1093.520
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="Redpoint.CommandLine" Version="2024.1093.520" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Redpoint.CommandLine --version 2024.1093.520
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Redpoint.CommandLine, 2024.1093.520"
#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 Redpoint.CommandLine as a Cake Addin #addin nuget:?package=Redpoint.CommandLine&version=2024.1093.520 // Install Redpoint.CommandLine as a Cake Tool #tool nuget:?package=Redpoint.CommandLine&version=2024.1093.520
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Redpoint.CommandLine
This library provides APIs for building dependency injected console applications, with both commands and option declarations being dependency injected.
To use this library, first define your command:
internal class SomeAction
{
public class Options
{
public Option<string> SomeOpt = new Option<string>("--opt", "My option description.");
// Add more fields or properties that use Option<> or Argument<> and they'll be automatically
// registered to the command line parser.
}
public static Command CreateCommand(ICommandBuilder builder)
{
return new Command("some-action", "The description of your some-action command.");
}
public class CommandInstance : ICommandInstance
{
private readonly ILogger<CommandInstance> _logger;
private readonly Options _options;
public CommandInstance(
ILogger<CommandInstance> logger,
Options options)
{
_logger = logger;
_options = options;
}
public Task<int> ExecuteAsync(ICommandInvocationContext context)
{
// Example on how to access an option's value.
var value = context.ParseResult.GetValueForOption(_options.SomeOpt);
// ... implement your command here ...
_logger.LogInformation("Hello world!");
// Return the exit code for the application.
return Task.FromResult(0);
}
}
}
To register and execute commands, in your Program.Main:
// Use the command line builder APIs to build the root command.
var rootCommand = CommandLineBuilder.NewBuilder()
.AddGlobalRuntimeServices((builder, services) =>
{
// Register global runtime services here, such as services.AddLogging(...)
})
.SetGlobalExecutionHandler(async (sp, executeCommand) =>
{
// Can be used to wrap execution of all commands, such as capturing
// exceptions and logging them:
var logger = sp.GetRequiredService<ILogger<Program>>();
try
{
return await executeCommand().ConfigureAwait(true);
}
catch (Exception ex)
{
logger.LogError(ex, $"Uncaught exception during command execution: {ex}");
return 1;
}
})
// Add each of your commands like this:
.AddCommand<SomeAction.CommandInstance, SomeAction.Options>(SomeAction.CreateCommand)
// Then build the root command to use below.
.Build("My console application description.");
// Parse and execute the command.
var exitCode = await rootCommand.InvokeAsync(args).ConfigureAwait(false);
await Console.Out.FlushAsync().ConfigureAwait(false);
await Console.Error.FlushAsync().ConfigureAwait(false);
Environment.Exit(exitCode);
throw new BadImageFormatException();
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.DependencyInjection (>= 8.0.0)
- Redpoint.Concurrency (>= 2024.1093.520)
- Redpoint.ThirdParty.System.CommandLine (>= 2024.1093.520)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2024.1306.225 | 31 | 11/1/2024 |
2024.1306.199 | 29 | 11/1/2024 |
2024.1306.171 | 27 | 11/1/2024 |
2024.1306.117 | 28 | 11/1/2024 |
2024.1305.506 | 31 | 10/31/2024 |
2024.1305.502 | 29 | 10/31/2024 |
2024.1305.465 | 29 | 10/31/2024 |
2024.1305.442 | 31 | 10/31/2024 |
2024.1305.399 | 32 | 10/31/2024 |
2024.1299.1070 | 62 | 10/25/2024 |
2024.1289.621 | 68 | 10/15/2024 |
2024.1289.338 | 68 | 10/15/2024 |
2024.1277.836 | 76 | 10/5/2024 |
2024.1277.711 | 71 | 10/3/2024 |
2024.1277.695 | 70 | 10/3/2024 |
2024.1270.409 | 83 | 9/26/2024 |
2024.1269.621 | 99 | 9/25/2024 |
2024.1269.619 | 83 | 9/25/2024 |
2024.1269.605 | 87 | 9/25/2024 |
2024.1242.282 | 96 | 8/29/2024 |
2024.1242.261 | 78 | 8/29/2024 |
2024.1242.233 | 100 | 8/29/2024 |
2024.1238.829 | 97 | 8/25/2024 |
2024.1238.327 | 113 | 8/25/2024 |
2024.1225.297 | 111 | 8/12/2024 |
2024.1205.140 | 65 | 7/23/2024 |
2024.1204.110 | 98 | 7/22/2024 |
2024.1204.62 | 67 | 7/22/2024 |
2024.1190.491 | 100 | 7/8/2024 |
2024.1177.305 | 100 | 6/25/2024 |
2024.1168.700 | 82 | 6/16/2024 |
2024.1168.649 | 97 | 6/16/2024 |
2024.1168.535 | 84 | 6/16/2024 |
2024.1167.643 | 91 | 6/15/2024 |
2024.1166.989 | 101 | 6/14/2024 |
2024.1166.818 | 76 | 6/14/2024 |
2024.1166.535 | 79 | 6/14/2024 |
2024.1166.422 | 95 | 6/14/2024 |
2024.1166.362 | 81 | 6/14/2024 |
2024.1166.360 | 81 | 6/14/2024 |
2024.1165.1212 | 86 | 6/13/2024 |
2024.1165.1160 | 75 | 6/13/2024 |
2024.1165.1019 | 89 | 6/13/2024 |
2024.1165.978 | 96 | 6/13/2024 |
2024.1165.920 | 88 | 6/13/2024 |
2024.1165.908 | 76 | 6/13/2024 |
2024.1165.873 | 75 | 6/13/2024 |
2024.1165.830 | 98 | 6/13/2024 |
2024.1165.806 | 91 | 6/13/2024 |
2024.1165.794 | 74 | 6/13/2024 |
2024.1165.792 | 90 | 6/13/2024 |
2024.1165.761 | 88 | 6/13/2024 |
2024.1165.743 | 89 | 6/13/2024 |
2024.1165.735 | 75 | 6/13/2024 |
2024.1165.713 | 99 | 6/13/2024 |
2024.1165.640 | 78 | 6/13/2024 |
2024.1165.574 | 95 | 6/13/2024 |
2024.1165.466 | 91 | 6/13/2024 |
2024.1165.417 | 99 | 6/13/2024 |
2024.1165.392 | 95 | 6/13/2024 |
2024.1164.341 | 67 | 6/12/2024 |
2024.1155.941 | 104 | 6/3/2024 |
2024.1140.783 | 104 | 5/19/2024 |
2024.1140.692 | 100 | 5/19/2024 |
2024.1140.673 | 81 | 5/19/2024 |
2024.1129.506 | 106 | 5/8/2024 |
2024.1128.831 | 119 | 5/7/2024 |
2024.1124.465 | 75 | 5/3/2024 |
2024.1123.1162 | 72 | 5/2/2024 |
2024.1123.1117 | 53 | 5/2/2024 |
2024.1123.1050 | 64 | 5/2/2024 |
2024.1122.352 | 103 | 5/1/2024 |
2024.1122.233 | 90 | 5/1/2024 |
2024.1115.1101 | 113 | 4/24/2024 |
2024.1115.1048 | 89 | 4/24/2024 |
2024.1115.932 | 95 | 4/24/2024 |
2024.1115.858 | 79 | 4/24/2024 |
2024.1115.665 | 94 | 4/24/2024 |
2024.1115.648 | 113 | 4/24/2024 |
2024.1115.591 | 83 | 4/24/2024 |
2024.1101.390 | 92 | 4/10/2024 |
2024.1100.741 | 107 | 4/9/2024 |
2024.1099.526 | 88 | 4/8/2024 |
2024.1099.466 | 93 | 4/8/2024 |
2024.1098.573 | 110 | 4/7/2024 |
2024.1095.977 | 90 | 4/4/2024 |
2024.1095.847 | 85 | 4/4/2024 |
2024.1095.604 | 94 | 4/4/2024 |
2024.1095.485 | 106 | 4/4/2024 |
2024.1094.930 | 87 | 4/3/2024 |
2024.1094.910 | 102 | 4/3/2024 |
2024.1094.387 | 103 | 4/3/2024 |
2024.1094.313 | 105 | 4/3/2024 |
2024.1093.520 | 104 | 4/2/2024 |
2024.1092.240 | 98 | 4/1/2024 |
2024.1089.1425 | 108 | 3/29/2024 |
2024.1089.983 | 94 | 3/29/2024 |
2024.1089.942 | 87 | 3/29/2024 |
2024.1089.2 | 92 | 3/29/2024 |
2024.1088.1343 | 118 | 3/28/2024 |
2024.1088.1139 | 110 | 3/28/2024 |
2024.1088.875 | 104 | 3/28/2024 |
2024.1088.700 | 124 | 3/28/2024 |
2024.1088.603 | 111 | 3/28/2024 |
2024.1088.590 | 85 | 3/28/2024 |
2024.1088.575 | 113 | 3/28/2024 |
2024.1088.561 | 115 | 3/28/2024 |
2024.1088.506 | 94 | 3/28/2024 |
2024.1088.18 | 93 | 3/28/2024 |
2024.1087.1181 | 126 | 3/27/2024 |
2024.1087.1173 | 94 | 3/27/2024 |
2024.1087.1143 | 112 | 3/27/2024 |
2024.1087.1108 | 100 | 3/27/2024 |
2024.1087.950 | 129 | 3/27/2024 |
2024.1087.939 | 105 | 3/27/2024 |
2024.1087.252 | 107 | 3/27/2024 |
2024.1070.736 | 126 | 3/10/2024 |
2024.1049.1437 | 135 | 2/19/2024 |
2024.1036.571 | 125 | 2/5/2024 |
2024.1036.508 | 87 | 2/5/2024 |
2024.1032.1204 | 100 | 2/1/2024 |
2024.1032.1133 | 89 | 2/1/2024 |
2024.1032.1122 | 102 | 2/1/2024 |
2024.1032.1071 | 83 | 2/1/2024 |
2024.1032.940 | 107 | 2/1/2024 |
2024.1031.912 | 104 | 1/31/2024 |
2024.1031.893 | 86 | 1/31/2024 |
2024.1031.851 | 103 | 1/31/2024 |
2024.1031.829 | 99 | 1/31/2024 |
2024.1031.386 | 114 | 1/31/2024 |
2024.1031.318 | 107 | 1/31/2024 |
2024.1017.460 | 115 | 1/17/2024 |
2024.1017.420 | 103 | 1/17/2024 |
2024.1017.163 | 106 | 1/17/2024 |
2024.1016.414 | 293 | 1/16/2024 |
2024.1012.167 | 124 | 1/12/2024 |
2024.1011.406 | 107 | 1/11/2024 |
2024.1010.315 | 114 | 1/10/2024 |
2023.1358.326 | 145 | 12/24/2023 |
2023.1351.473 | 133 | 12/17/2023 |
2023.1351.445 | 104 | 12/17/2023 |
2023.1351.432 | 111 | 12/17/2023 |
2023.1350.478 | 105 | 12/16/2023 |
2023.1344.600 | 114 | 12/10/2023 |
2023.1344.529 | 120 | 12/10/2023 |
2023.1339.582 | 152 | 12/5/2023 |
2023.1338.1072 | 124 | 12/4/2023 |
2023.1336.844 | 125 | 12/2/2023 |
2023.1335.378 | 131 | 12/1/2023 |
2023.1335.236 | 130 | 12/1/2023 |
2023.1335.203 | 126 | 12/1/2023 |
2023.1334.814 | 120 | 11/30/2023 |
2023.1332.652 | 116 | 11/28/2023 |
2023.1332.622 | 129 | 11/28/2023 |
2023.1332.524 | 146 | 11/28/2023 |
2023.1331.1073 | 101 | 11/27/2023 |
2023.1331.423 | 117 | 11/27/2023 |
2023.1328.513 | 125 | 11/24/2023 |
2023.1327.985 | 134 | 11/23/2023 |
2023.1325.593 | 128 | 11/21/2023 |
2023.1325.551 | 130 | 11/21/2023 |
2023.1325.529 | 120 | 11/21/2023 |