Hinzufügen des EnvelopeGenerator.Terminal-Projekts mit CLI-Unterstützung
Die Lösung wurde aktualisiert und enthält nun ein neues Projekt `EnvelopeGenerator.Terminal` für .NET 8.0. Hinzufügen der Klassen `CommandManager` und `DependencyInjection` für die Befehlsausführung und die Injektion von Abhängigkeiten mit CommandDotNet. Die Klasse `Program` wurde eingeführt, um den Anwendungshost einzurichten und Befehle auszuführen. Hinzufügen der erforderlichen Paketverweise in der Projektdatei zur Unterstützung neuer Funktionen.
This commit is contained in:
14
EnvelopeGenerator.Terminal/CommandManager.cs
Normal file
14
EnvelopeGenerator.Terminal/CommandManager.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using CommandDotNet;
|
||||
using System.Reflection;
|
||||
|
||||
namespace EnvelopeGenerator.Terminal;
|
||||
|
||||
public class CommandManager
|
||||
{
|
||||
[DefaultCommand]
|
||||
public void Execute([Option(Description = "print envelope generator termianal version.")] bool version)
|
||||
{
|
||||
if(version)
|
||||
Console.WriteLine($"v{Assembly.GetExecutingAssembly().GetName().Version}");
|
||||
}
|
||||
}
|
||||
28
EnvelopeGenerator.Terminal/DependencyInjection.cs
Normal file
28
EnvelopeGenerator.Terminal/DependencyInjection.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using CommandDotNet.NameCasing;
|
||||
using CommandDotNet;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using CommandDotNet.IoC.MicrosoftDependencyInjection;
|
||||
|
||||
namespace EnvelopeGenerator.Terminal;
|
||||
|
||||
public static class DependencyInjection
|
||||
{
|
||||
public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, Case @case = Case.KebabCase)
|
||||
{
|
||||
return services
|
||||
.AddSingleton<CommandManager>()
|
||||
.AddSingleton(sp =>
|
||||
{
|
||||
var runner = new AppRunner<CommandManager>();
|
||||
runner.UseMicrosoftDependencyInjection(sp);
|
||||
runner.UseNameCasing(@case);
|
||||
return runner;
|
||||
});
|
||||
}
|
||||
|
||||
public static Task<int> RunCommandManagerRunner(this IServiceProvider provider, string[] args)
|
||||
{
|
||||
var runner = provider.GetRequiredService<AppRunner<CommandManager>>();
|
||||
return runner.RunAsync(args);
|
||||
}
|
||||
}
|
||||
23
EnvelopeGenerator.Terminal/EnvelopeGenerator.Terminal.csproj
Normal file
23
EnvelopeGenerator.Terminal/EnvelopeGenerator.Terminal.csproj
Normal file
@@ -0,0 +1,23 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<PublishAot>true</PublishAot>
|
||||
<InvariantGlobalization>true</InvariantGlobalization>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandDotNet" Version="8.1.1" />
|
||||
<PackageReference Include="CommandDotNet.IoC.MicrosoftDependencyInjection" Version="7.1.0" />
|
||||
<PackageReference Include="CommandDotNet.NameCasing" Version="5.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
17
EnvelopeGenerator.Terminal/Program.cs
Normal file
17
EnvelopeGenerator.Terminal/Program.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace EnvelopeGenerator.Terminal;
|
||||
|
||||
public class Program
|
||||
{
|
||||
static async Task<int> Main(string[] args)
|
||||
{
|
||||
var builder = Host.CreateApplicationBuilder(args);
|
||||
|
||||
builder.Services.AddCommandManagerRunner();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
return await app.Services.RunCommandManagerRunner(args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user