Skip to content

Commit

Permalink
Fix wrong config folder (#209)
Browse files Browse the repository at this point in the history
* Allow specifying config file as an argument.
Fix index of '/' and path to public directory in publish-filter.yml.
  • Loading branch information
henrikwidlund committed Aug 13, 2023
1 parent 2f7b529 commit 4ce02ab
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 12 deletions.
9 changes: 5 additions & 4 deletions .github/workflows/publish-filter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
generate:
runs-on: ubuntu-latest
timeout-minutes: 15
if: github.ref == 'refs/heads/main'
# if: github.ref == 'refs/heads/main'

steps:
- name: Setup .NET
Expand All @@ -48,13 +48,14 @@ jobs:
process_config() {
filename="\$1"
dotnet ./artifacts/HostsParser.dll "\$1"
CONFIG_FILE=\$(echo "\$filename" | cut -d'/' -f 3)
CONFIG_FILE=\$(echo "\$filename" | cut -d'/' -f 4)
CONFIG=\${CONFIG_FILE//json/txt}
# Default filter doesn't map to the file name of the config, it's just "filter.txt"
if [[ ! -f "\$CONFIG" ]]; then
CONFIG="filter.txt"
fi
cp "\$CONFIG" ../public/"\$CONFIG"
cp "\$CONFIG" ./public/"\$CONFIG"
}
process_config \$1
Expand Down
5 changes: 3 additions & 2 deletions src/HostsParser/ExecutionUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ public static class ExecutionUtilities
/// </summary>
/// <param name="httpClient">The <see cref="HttpClient"/> that will be used to read from external sources.</param>
/// <param name="logger">The <see cref="ILogger"/> that will be used for logging.</param>
public static async Task Execute(HttpClient httpClient, ILogger logger)
/// <param name="configurationFile">Path to the configuration file.</param>
public static async Task Execute(HttpClient httpClient, ILogger logger, string configurationFile)
{
logger.Running();
var stopWatch = new Stopwatch();
stopWatch.Start();

await using var fileStream = File.OpenRead("appsettings.json");
await using var fileStream = File.OpenRead(configurationFile);
var settings = await JsonSerializer.DeserializeAsync(fileStream, SourceGenerationContext.Default.Settings);
if (settings is null)
{
Expand Down
3 changes: 2 additions & 1 deletion src/HostsParser/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
using var httpClient = new HttpClient();
using var loggerFactory = HostsParserLogger.Create();
var logger = loggerFactory.CreateLogger();
await ExecutionUtilities.Execute(httpClient, logger);
var configurationFile = args.Length > 0 ? args[0] : "appsettings.json";
await ExecutionUtilities.Execute(httpClient, logger, configurationFile);
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void Setup()

[Benchmark]
[BenchmarkCategory(nameof(Execute), nameof(BenchmarkExecutionUtilities))]
public async Task Execute() => await ExecutionUtilities.Execute(_httpClient!, _logger!);
public async Task Execute() => await ExecutionUtilities.Execute(_httpClient!, _logger!, "appsettings.json");

[GlobalCleanup]
public void Cleanup()
Expand Down
9 changes: 5 additions & 4 deletions tests/HostsParser.IntegrationTests/ExecutionUtilitiesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@ public async Task When_Running_Execute_MultiPassFilter_Toggle_Should_Differ_At_M
using var httpClient = new HttpClient(streamHttpMessageHandler);
using var loggerFactory = new NullLoggerFactory();
var logger = loggerFactory.CreateLogger(nameof(IntegrationTests));
const string ConfigurationFile = "appsettings.json";

// Act
await ExecutionUtilities.Execute(httpClient, logger);
await ExecutionUtilities.Execute(httpClient, logger, ConfigurationFile);
var linesWithoutMultiPass = (await File.ReadAllLinesAsync("filter.txt"))[7..];
var settings = JsonSerializer.Deserialize<Settings>(await File.ReadAllBytesAsync("appsettings.json"))!;
var settings = JsonSerializer.Deserialize<Settings>(await File.ReadAllBytesAsync(ConfigurationFile))!;
settings = settings with { MultiPassFilter = true };
await File.WriteAllBytesAsync("appsettings.json", JsonSerializer.SerializeToUtf8Bytes(settings));
await ExecutionUtilities.Execute(httpClient, logger);
await File.WriteAllBytesAsync(ConfigurationFile, JsonSerializer.SerializeToUtf8Bytes(settings));
await ExecutionUtilities.Execute(httpClient, logger, ConfigurationFile);
var linesWithMultiPass = (await File.ReadAllLinesAsync("filter.txt"))[7..];

// Assert
Expand Down

0 comments on commit 4ce02ab

Please sign in to comment.