Skip to content

Commit c1ac063

Browse files
committed
(#24) added "dotnet jvs config show"
1 parent a5de41e commit c1ac063

File tree

2 files changed

+121
-0
lines changed

2 files changed

+121
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Linq;
5+
using System.Threading.Tasks;
6+
using JavaVersionSwitcher.Logging;
7+
using JavaVersionSwitcher.Services;
8+
using JetBrains.Annotations;
9+
using Spectre.Console;
10+
using Spectre.Console.Cli;
11+
12+
namespace JavaVersionSwitcher.Commands.config
13+
{
14+
[UsedImplicitly]
15+
public class ShowConfigCommand : AsyncCommand<ShowConfigCommand.Settings>
16+
{
17+
private readonly ILogger _logger;
18+
private readonly IConfigurationService _service;
19+
private readonly IEnumerable<IConfigurationProvider> _providers;
20+
21+
public ShowConfigCommand(
22+
ILogger logger,
23+
IConfigurationService service,
24+
IEnumerable<IConfigurationProvider> providers)
25+
{
26+
_logger = logger;
27+
_service = service;
28+
_providers = providers;
29+
}
30+
31+
[UsedImplicitly]
32+
public sealed class Settings : CommonCommandSettings
33+
{
34+
[CommandOption("--providers")]
35+
[Description("Show provider names only.")]
36+
[DefaultValue(false)]
37+
public bool Providers { get; [UsedImplicitly] set; }
38+
39+
[CommandOption("--provider")]
40+
[Description("Show settings for one provider only.")]
41+
public string Provider { get; [UsedImplicitly] set; }
42+
43+
public override ValidationResult Validate()
44+
{
45+
if (Providers && !string.IsNullOrEmpty(Provider))
46+
{
47+
return ValidationResult.Error("--providers and --provider are mutually exclusive.");
48+
}
49+
50+
return ValidationResult.Success();
51+
}
52+
}
53+
54+
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings)
55+
{
56+
_logger.PrintVerbose = settings.Verbose;
57+
if (settings.Providers)
58+
{
59+
return await ListProviders();
60+
}
61+
62+
if (!string.IsNullOrEmpty(settings.Provider))
63+
{
64+
return await ListSettingsForProviders(settings.Provider);
65+
}
66+
67+
return await ListAllSettings();
68+
}
69+
70+
private async Task<int> ListSettingsForProviders(string settingsProvider)
71+
{
72+
var provider = _providers.FirstOrDefault(p =>
73+
p.ProviderName.Equals(settingsProvider, StringComparison.OrdinalIgnoreCase));
74+
if (provider == null)
75+
{
76+
AnsiConsole.MarkupLine($"[red]No provider named {settingsProvider}[/]");
77+
return await Task.FromResult(1);
78+
}
79+
80+
_logger.LogVerbose($"Listing setting for {provider.ProviderName}:");
81+
foreach (var setting in provider.Settings.OrderBy(x => x))
82+
{
83+
AnsiConsole.WriteLine(setting);
84+
}
85+
86+
return await Task.FromResult(0);
87+
}
88+
89+
private async Task<int> ListAllSettings()
90+
{
91+
var table = new Table();
92+
table.AddColumn("Provider");
93+
table.AddColumn("Setting");
94+
table.AddColumn("Configured value");
95+
96+
foreach (var provider in _providers.OrderBy(p => p.ProviderName))
97+
{
98+
foreach (var setting in provider.Settings.OrderBy(x => x))
99+
{
100+
var val = await _service.GetConfiguration(provider.ProviderName, setting);
101+
table.AddRow(provider.ProviderName, setting, val);
102+
}
103+
}
104+
105+
AnsiConsole.Render(table);
106+
return 0;
107+
}
108+
109+
private async Task<int> ListProviders()
110+
{
111+
foreach (var name in _providers.Select(p => p.ProviderName).OrderBy(x => x))
112+
{
113+
AnsiConsole.WriteLine(name);
114+
}
115+
116+
return await Task.FromResult(0);
117+
}
118+
}
119+
}

src/JavaVersionSwitcher/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public static void ConfigureApp(IConfigurator config)
4141
.WithDescription("get configuration options.");
4242
cfg.AddCommand<SetConfigCommand>("set")
4343
.WithDescription("set configuration options.");
44+
cfg.AddCommand<ShowConfigCommand>("show")
45+
.WithDescription("show possible configuration options.");
4446
});
4547

4648
#if DEBUG

0 commit comments

Comments
 (0)