Skip to content

Commit 2eaf350

Browse files
authored
Merge pull request #18 from nils-a/feature/GH-8
(#8) added an internal logger
2 parents c8b170b + cc1d178 commit 2eaf350

File tree

13 files changed

+121
-16
lines changed

13 files changed

+121
-16
lines changed

src/JavaVersionSwitcher.Tests/JavaHomeTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
using System;
22
using System.Threading.Tasks;
33
using JavaVersionSwitcher.Adapters;
4+
using JavaVersionSwitcher.Logging;
5+
using Moq;
46
using Shouldly;
57
using Xunit;
68

79
namespace JavaVersionSwitcher.Tests
810
{
911
public class JavaHomeTests
1012
{
11-
private readonly JavaHomeAdapter _adapter = new JavaHomeAdapter();
13+
private readonly JavaHomeAdapter _adapter = new JavaHomeAdapter(new Mock<ILogger>().Object);
1214

1315
[Fact]
1416
public async Task Can_Set_per_process()

src/JavaVersionSwitcher.Tests/JavaVersionSwitcher.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
10+
<PackageReference Include="Moq" Version="4.16.1" />
1011
<PackageReference Include="Shouldly" Version="4.0.3" />
1112
<PackageReference Include="xunit" Version="2.4.1" />
1213
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

src/JavaVersionSwitcher.Tests/PathTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22
using System.Linq;
33
using System.Threading.Tasks;
44
using JavaVersionSwitcher.Adapters;
5+
using JavaVersionSwitcher.Logging;
6+
using Moq;
57
using Shouldly;
68
using Xunit;
79

810
namespace JavaVersionSwitcher.Tests
911
{
1012
public class PathTests
1113
{
12-
private readonly PathAdapter _adapter = new PathAdapter();
14+
private readonly PathAdapter _adapter = new PathAdapter(new Mock<ILogger>().Object);
1315

1416
[Fact]
1517
public async Task Can_Set_per_process()

src/JavaVersionSwitcher/Adapters/JavaHomeAdapter.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,32 @@
11
using System.Threading.Tasks;
2+
using JavaVersionSwitcher.Logging;
23

34
namespace JavaVersionSwitcher.Adapters
45
{
56
/// <inheritdoc cref="IJavaHomeAdapter"/>
67
public class JavaHomeAdapter : IJavaHomeAdapter
78
{
9+
private readonly ILogger _logger;
810
private readonly SimpleEnvironmentAdapter _adapter;
911

10-
public JavaHomeAdapter()
12+
public JavaHomeAdapter(ILogger logger)
1113
{
14+
_logger = logger;
1215
_adapter = new SimpleEnvironmentAdapter("JAVA_HOME");
1316
}
1417

1518
/// <inheritdoc cref="IJavaHomeAdapter.GetValue"/>
1619
public async Task<string> GetValue(EnvironmentScope scope)
1720
{
18-
return await _adapter.GetValue(scope);
21+
var val =await _adapter.GetValue(scope);
22+
_logger.LogVerbose($"Read JAVA_HOME: {val}");
23+
return val;
1924
}
2025

2126
/// <inheritdoc cref="IJavaHomeAdapter.SetValue"/>
2227
public async Task SetValue(string value, EnvironmentScope scope)
2328
{
29+
_logger.LogVerbose($"Setting JAVA_HOME to: {value}");
2430
await _adapter.SetValue(value, scope);
2531
}
2632
}

src/JavaVersionSwitcher/Adapters/JavaInstallationsAdapter.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Text;
77
using System.Threading.Tasks;
88
using System.Xml.Serialization;
9+
using JavaVersionSwitcher.Logging;
910
using JavaVersionSwitcher.Models;
1011
using Spectre.Console;
1112

@@ -14,6 +15,13 @@ namespace JavaVersionSwitcher.Adapters
1415
/// <inheritdoc cref="IJavaInstallationsAdapter"/>
1516
public class JavaInstallationsAdapter : IJavaInstallationsAdapter
1617
{
18+
private readonly ILogger _logger;
19+
20+
public JavaInstallationsAdapter(ILogger logger)
21+
{
22+
_logger = logger;
23+
}
24+
1725
/// <inheritdoc cref="IJavaInstallationsAdapter.GetJavaInstallations"/>
1826
public async Task<IEnumerable<JavaInstallation>> GetJavaInstallations(bool forceReScan = false)
1927
{
@@ -23,15 +31,22 @@ public async Task<IEnumerable<JavaInstallation>> GetJavaInstallations(bool force
2331
{
2432
return await LoadCacheData();
2533
}
26-
catch {/* TODO: Log?? */}
34+
catch (Exception ex)
35+
{
36+
_logger.LogVerbose($"{ex.GetType().Name} while reading cached data.");
37+
}
2738
}
2839

2940
var data = (await ForceScan()).ToList();
3041

3142
try
3243
{
3344
await SaveCacheData(data);
34-
} catch {/* TODO: Log?? */}
45+
}
46+
catch (Exception ex)
47+
{
48+
_logger.LogVerbose($"{ex.GetType().Name} while writing data cache.");
49+
}
3550

3651
return data;
3752
}
@@ -96,6 +111,9 @@ await AnsiConsole.Status()
96111
Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%")
97112
}.Distinct()
98113
.Where(x => !string.IsNullOrEmpty(x));
114+
_logger.LogVerbose(
115+
$@"Scanning for installations in:{Environment.NewLine} - {string.Join($"{Environment.NewLine} - ", start)}");
116+
99117
var javaExeFiles = await FindFileRecursive(start);
100118
foreach (var javaExeFile in javaExeFiles)
101119
{
@@ -123,7 +141,6 @@ private Task<IEnumerable<string>> FindFileRecursive(IEnumerable<string> startPat
123141
var results = new List<string>();
124142
while (queue.TryDequeue(out var item))
125143
{
126-
// log ? Console.WriteLine("Checking: "+item);
127144
try
128145
{
129146
results.AddRange(Directory.GetFiles(item, "java.exe", SearchOption.TopDirectoryOnly));
@@ -133,9 +150,9 @@ private Task<IEnumerable<string>> FindFileRecursive(IEnumerable<string> startPat
133150
queue.Enqueue(subfolder);
134151
}
135152
}
136-
catch
153+
catch (Exception ex)
137154
{
138-
// log?!
155+
_logger.LogVerbose($"{ex.GetType().Name} while accessing {item}");
139156
}
140157
}
141158

src/JavaVersionSwitcher/Adapters/PathAdapter.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Threading.Tasks;
5+
using JavaVersionSwitcher.Logging;
56

67
namespace JavaVersionSwitcher.Adapters
78
{
89
/// <inheritdoc cref="IPathAdapter"/>
910
public class PathAdapter : IPathAdapter
1011
{
12+
private readonly ILogger _logger;
1113
private readonly SimpleEnvironmentAdapter _adapter;
1214

13-
public PathAdapter()
15+
public PathAdapter(ILogger logger)
1416
{
17+
_logger = logger;
1518
_adapter = new SimpleEnvironmentAdapter("PATH");
1619
}
1720

src/JavaVersionSwitcher/Commands/CheckSettingsCommand.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Linq;
44
using System.Threading.Tasks;
55
using JavaVersionSwitcher.Adapters;
6+
using JavaVersionSwitcher.Logging;
67
using JetBrains.Annotations;
78
using Spectre.Console;
89
using Spectre.Console.Cli;
@@ -15,20 +16,23 @@ internal sealed class CheckSettingsCommand : AsyncCommand<CheckSettingsCommand.S
1516
private readonly IJavaHomeAdapter _javaHomeAdapter;
1617
private readonly IJavaInstallationsAdapter _javaInstallationsAdapter;
1718
private readonly IPathAdapter _pathAdapter;
19+
private readonly ILogger _logger;
1820

1921
public CheckSettingsCommand(
2022
IJavaHomeAdapter javaHomeAdapter,
2123
IJavaInstallationsAdapter javaInstallationsAdapter,
22-
IPathAdapter pathAdapter
24+
IPathAdapter pathAdapter,
25+
ILogger logger
2326
)
2427
{
2528
_javaHomeAdapter = javaHomeAdapter;
2629
_javaInstallationsAdapter = javaInstallationsAdapter;
2730
_pathAdapter = pathAdapter;
31+
_logger = logger;
2832
}
2933

3034
[UsedImplicitly]
31-
public sealed class Settings : CommandSettings
35+
public sealed class Settings : CommonCommandSettings
3236
{
3337
/*
3438
TODO: Implement
@@ -41,6 +45,7 @@ public sealed class Settings : CommandSettings
4145

4246
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings)
4347
{
48+
_logger.PrintVerbose = settings.Verbose;
4449
var javaHome = await _javaHomeAdapter.GetValue(EnvironmentScope.Process);
4550
if (string.IsNullOrEmpty(javaHome))
4651
{
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System.ComponentModel;
2+
using System.Threading.Tasks;
3+
using Spectre.Console.Cli;
4+
5+
namespace JavaVersionSwitcher.Commands
6+
{
7+
public abstract class CommonCommandSettings : CommandSettings
8+
{
9+
[CommandOption("--verbose")]
10+
[Description("Show verbose messages.")]
11+
[DefaultValue(false)]
12+
public bool Verbose { get; set; }
13+
}
14+
}

src/JavaVersionSwitcher/Commands/ScanJavaInstallationsCommand.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using System.Threading.Tasks;
44
using JavaVersionSwitcher.Adapters;
5+
using JavaVersionSwitcher.Logging;
56
using JetBrains.Annotations;
67
using Spectre.Console;
78
using Spectre.Console.Cli;
@@ -12,15 +13,18 @@ namespace JavaVersionSwitcher.Commands
1213
internal sealed class ScanJavaInstallationsCommand : AsyncCommand<ScanJavaInstallationsCommand.Settings>
1314
{
1415
private readonly IJavaInstallationsAdapter _javaInstallationsAdapter;
16+
private readonly ILogger _logger;
1517

1618
public ScanJavaInstallationsCommand(
17-
IJavaInstallationsAdapter javaInstallationsAdapter)
19+
IJavaInstallationsAdapter javaInstallationsAdapter,
20+
ILogger logger)
1821
{
1922
_javaInstallationsAdapter = javaInstallationsAdapter;
23+
_logger = logger;
2024
}
2125

2226
[UsedImplicitly]
23-
public sealed class Settings : CommandSettings
27+
public sealed class Settings : CommonCommandSettings
2428
{
2529
[CommandOption("--force")]
2630
[DefaultValue(false)]
@@ -30,6 +34,7 @@ public sealed class Settings : CommandSettings
3034

3135
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings)
3236
{
37+
_logger.PrintVerbose = settings.Verbose;
3338
var installations = await _javaInstallationsAdapter
3439
.GetJavaInstallations(settings.Force)
3540
.ConfigureAwait(false);

src/JavaVersionSwitcher/Commands/SwitchVersionCommand.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Threading.Tasks;
66
using JavaVersionSwitcher.Adapters;
7+
using JavaVersionSwitcher.Logging;
78
using JetBrains.Annotations;
89
using Spectre.Console;
910
using Spectre.Console.Cli;
@@ -16,20 +17,23 @@ internal sealed class SwitchVersionCommand : AsyncCommand<SwitchVersionCommand.S
1617
private readonly IJavaHomeAdapter _javaHomeAdapter;
1718
private readonly IJavaInstallationsAdapter _javaInstallationsAdapter;
1819
private readonly IPathAdapter _pathAdapter;
20+
private readonly ILogger _logger;
1921

2022
public SwitchVersionCommand(
2123
IJavaHomeAdapter javaHomeAdapter,
2224
IJavaInstallationsAdapter javaInstallationsAdapter,
23-
IPathAdapter pathAdapter
25+
IPathAdapter pathAdapter,
26+
ILogger logger
2427
)
2528
{
2629
_javaHomeAdapter = javaHomeAdapter;
2730
_javaInstallationsAdapter = javaInstallationsAdapter;
2831
_pathAdapter = pathAdapter;
32+
_logger = logger;
2933
}
3034

3135
[UsedImplicitly]
32-
public sealed class Settings : CommandSettings
36+
public sealed class Settings : CommonCommandSettings
3337
{
3438
[CommandOption("--machine")]
3539
[DefaultValue(false)]
@@ -39,6 +43,7 @@ public sealed class Settings : CommandSettings
3943

4044
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings)
4145
{
46+
_logger.PrintVerbose = settings.Verbose;
4247
var installations = await _javaInstallationsAdapter
4348
.GetJavaInstallations()
4449
.ConfigureAwait(false);

0 commit comments

Comments
 (0)