Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"csharpier": {
"version": "1.3.0",
"version": "1.4.0",
"commands": [
"csharpier"
],
Expand Down Expand Up @@ -31,7 +31,7 @@
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.5.12",
"version": "5.6.0",
"commands": [
"reportgenerator"
],
Expand Down
8 changes: 4 additions & 4 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<ItemGroup>
<PackageVersion Include="AwesomeAssertions" Version="9.6.0" />
<PackageVersion Include="CliWrap" Version="3.10.5" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.11.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.403" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.11.1" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="11.0.100" />
<!-- The MTP-native coverage extension WORKFLOW.md D1.2 requires of an MTP-based test project.
It replaces coverlet.MTP here, the interim choice made before ptr727/ProjectTemplate#1088
resolved the fleet on this package. The baseline it displaces further back is the VSTest
Expand All @@ -20,14 +20,14 @@
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.12.0" />
<PackageVersion Include="NEbml" Version="1.1.0.5" />
<PackageVersion Include="ptr727.LanguageTags" Version="1.5.214" />
<PackageVersion Include="ptr727.Utilities" Version="4.1.109" />
<PackageVersion Include="ptr727.Utilities" Version="4.1.112" />
<PackageVersion Include="Serilog" Version="4.4.0" />
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" />
<PackageVersion Include="System.CommandLine" Version="2.0.14" />
<PackageVersion Include="System.CommandLine" Version="3.0.0" />
<PackageVersion Include="Utf8JsonAsyncStreamReader" Version="2.1.0" />
<PackageVersion Include="xunit.analyzers" Version="2.3.0" />
<PackageVersion Include="xunit.v3" Version="4.0.3" />
Expand Down
43 changes: 20 additions & 23 deletions PlexCleaner/ConfigFileJsonSchema.cs
Original file line number Diff line number Diff line change
Expand Up @@ -266,9 +266,10 @@ private static string ToJson(ConfigFileJsonSchema json) =>
private static ConfigFileJsonSchema FromJson(string json)
{
// Deserialize the base class to get the schema version
ConfigFileJsonSchemaBase configFileJsonSchemaBase =
JsonSerializer.Deserialize(json, ConfigFileJsonContext.Default.ConfigFileJsonSchemaBase)
?? throw new JsonException("Failed to deserialize ConfigFileJsonSchemaBase");
ConfigFileJsonSchemaBase configFileJsonSchemaBase = JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchemaBase
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchemaBase");

if (configFileJsonSchemaBase.SchemaVersion != Version)
{
Expand All @@ -283,32 +284,28 @@ private static ConfigFileJsonSchema FromJson(string json)
switch (configFileJsonSchemaBase.SchemaVersion)
{
case ConfigFileJsonSchema1.Version:
ConfigFileJsonSchema1 configFileJsonSchema1 =
JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema1
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema1");
ConfigFileJsonSchema1 configFileJsonSchema1 = JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema1
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema1");
return new ConfigFileJsonSchema(configFileJsonSchema1);
case ConfigFileJsonSchema2.Version:
ConfigFileJsonSchema2 configFileJsonSchema2 =
JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema2
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema2");
ConfigFileJsonSchema2 configFileJsonSchema2 = JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema2
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema2");
return new ConfigFileJsonSchema(configFileJsonSchema2);
case ConfigFileJsonSchema3.Version:
ConfigFileJsonSchema3 configFileJsonSchema3 =
JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema3
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema3");
ConfigFileJsonSchema3 configFileJsonSchema3 = JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema3
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema3");
return new ConfigFileJsonSchema(configFileJsonSchema3);
case Version:
ConfigFileJsonSchema configFileJsonSchema4 =
JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema4
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema4");
ConfigFileJsonSchema configFileJsonSchema4 = JsonSerializer.Deserialize(
json,
ConfigFileJsonContext.Default.ConfigFileJsonSchema4
) ?? throw new JsonException("Failed to deserialize ConfigFileJsonSchema4");
return configFileJsonSchema4;
default:
throw new NotSupportedException(
Expand Down
105 changes: 50 additions & 55 deletions PlexCleaner/Process.cs
Original file line number Diff line number Diff line change
Expand Up @@ -558,66 +558,61 @@ public static bool ProcessFiles(List<string> fileList, out bool writeFailed)
// Process all the files
ProcessResultJsonSchema resultsJson = new();
Lock resultLock = new();
bool ret = ProcessDriver.ProcessFiles(
fileList,
nameof(ProcessFiles),
false,
fileName =>
{
// Process the file
bool processResult = ProcessFile(
fileName,
out bool modified,
out bool ignored,
out SidecarFile.StatesType state,
out string processName,
out string? failedOperation,
out string? invalidReason
);

// Cancelled
if (Program.IsCancelled())
{
return false;
}
bool ret = ProcessDriver.ProcessFiles(fileList, nameof(ProcessFiles), false, fileName =>
{
// Process the file
bool processResult = ProcessFile(
fileName,
out bool modified,
out bool ignored,
out SidecarFile.StatesType state,
out string processName,
out string? failedOperation,
out string? invalidReason
);

// Ignored do not add to results
if (ignored)
{
return processResult;
}
// Cancelled
if (Program.IsCancelled())
{
return false;
}

// Per-outcome metrics: this is the only place the State flags are known
Metrics.RecordStates(state);
if (modified)
{
Metrics.RecordModified();
}
if ((state & SidecarFile.StatesType.VerifyFailed) != 0)
{
Metrics.RecordVerifyFailed();
}
// Ignored do not add to results
if (ignored)
{
return processResult;
}

// Save result
lock (resultLock)
{
resultsJson.Results.Results.Add(
new()
{
Result = processResult,
OriginalFileName = fileName,
NewFileName = processName,
Modified = modified,
State = state,
FailedOperation = failedOperation,
InvalidReason = invalidReason,
}
);
}
// Per-outcome metrics: this is the only place the State flags are known
Metrics.RecordStates(state);
if (modified)
{
Metrics.RecordModified();
}
if ((state & SidecarFile.StatesType.VerifyFailed) != 0)
{
Metrics.RecordVerifyFailed();
}

return processResult;
// Save result
lock (resultLock)
{
resultsJson.Results.Results.Add(
new()
{
Result = processResult,
OriginalFileName = fileName,
NewFileName = processName,
Modified = modified,
State = state,
FailedOperation = failedOperation,
InvalidReason = invalidReason,
}
);
}
);

return processResult;
});

writeFailed = !FinishProcessing(resultsJson);
return ret;
Expand Down
Loading
Loading