|
1 | 1 | using ConsoleAppFramework; |
| 2 | +using Microsoft.Extensions.DependencyInjection; |
| 3 | +using System.Threading.Tasks.Dataflow; |
2 | 4 |
|
3 | | - |
4 | | -args = "some-command hello --global-flag flag-value -- more args here".Split(" "); |
| 5 | +// args = "some-command hello --global-flag flag-value -- more args here".Split(" "); |
5 | 6 |
|
6 | 7 | var app = ConsoleApp.Create(); |
| 8 | +app.ConfigureServices(services => services.AddSingleton<MyService>()); |
7 | 9 |
|
8 | | -app.ConfigureGlobalOptions((ref ConsoleApp.GlobalOptionsBuilder builder) => |
9 | | -{ |
10 | | - var flag = builder.AddGlobalOption<string>("--global-flag"); |
11 | | - return new GlobalOptions(flag); |
12 | | -}); |
13 | | - |
14 | | -app.UseFilter<SomeFilter>(); |
15 | | -app.Add<Commands>(); |
16 | | -app.Run(args); |
| 10 | +app.UseFilter<MyFilter>(); |
| 11 | +app.Run(["cmd", "test"]); |
17 | 12 |
|
18 | | -internal record GlobalOptions(string Flag); |
| 13 | +public class MyService |
| 14 | +{ |
| 15 | + public void Test() => Console.WriteLine("Test"); |
| 16 | +} |
19 | 17 |
|
20 | | -internal class Commands |
| 18 | +internal class MyFilter(ConsoleAppFilter next, MyService myService) : ConsoleAppFilter(next) |
21 | 19 | { |
22 | | - [Command("some-command")] |
23 | | - public void SomeCommand([Argument] string commandArg, ConsoleAppContext context) |
| 20 | + public override async Task InvokeAsync(ConsoleAppContext context, CancellationToken cancellationToken) |
24 | 21 | { |
25 | | - Console.WriteLine($"ARG: {commandArg}"); |
26 | | - Console.WriteLine($"ESCAPED: {string.Join(", ", context.EscapedArguments.ToArray()!)}"); |
| 22 | + myService.Test(); |
| 23 | + await Next.InvokeAsync(context, cancellationToken); |
27 | 24 | } |
28 | 25 | } |
29 | 26 |
|
30 | | -internal class SomeFilter(ConsoleAppFilter next) : ConsoleAppFilter(next) |
| 27 | +[RegisterCommands("cmd")] |
| 28 | +public class MyCommand |
31 | 29 | { |
32 | | - public override async Task InvokeAsync(ConsoleAppContext context, CancellationToken cancellationToken) |
| 30 | + [Command("test")] |
| 31 | + public int Test() |
33 | 32 | { |
34 | | - Console.WriteLine($"FLAG: {((GlobalOptions)context.GlobalOptions!).Flag}"); |
35 | | - await Next.InvokeAsync(context, cancellationToken); |
| 33 | + return 1; |
36 | 34 | } |
37 | 35 | } |
0 commit comments