Moved to ADO2024 PI#
Ran SortCodeMethods
This commit is contained in:
65
ADO2024/PI3/Helper-2024-09-25.cs
Normal file
65
ADO2024/PI3/Helper-2024-09-25.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
namespace File_Folder_Helper.ADO2024.PI3;
|
||||
|
||||
internal static partial class Helper20240925
|
||||
{
|
||||
|
||||
public record Test(string Name,
|
||||
long Value);
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||
[JsonSerializable(typeof(ReadOnlyCollection<Test>))]
|
||||
internal partial class TestCollectionSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
|
||||
private static ReadOnlyCollection<Test> GetTests(string sourceDirectory, string searchPattern, string searchPatternB)
|
||||
{
|
||||
List<Test> results = [];
|
||||
long test;
|
||||
string[] lines;
|
||||
string[] segments;
|
||||
string[] segmentsB;
|
||||
List<long> distinct = [];
|
||||
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
|
||||
foreach (string file in files)
|
||||
{
|
||||
lines = File.ReadAllLines(file);
|
||||
foreach (string line in lines)
|
||||
{
|
||||
segments = line.Split(searchPatternB);
|
||||
if (segments.Length < 2)
|
||||
continue;
|
||||
segmentsB = segments[1].Split(',');
|
||||
if (segmentsB.Length < 2)
|
||||
continue;
|
||||
if (!long.TryParse(segmentsB[0], out test))
|
||||
continue;
|
||||
if (distinct.Contains(test))
|
||||
continue;
|
||||
distinct.Add(test);
|
||||
results.Add(new(segmentsB[1].Trim('"'), test));
|
||||
}
|
||||
}
|
||||
return (from l in results orderby l.Name.Length, l.Name select l).ToArray().AsReadOnly();
|
||||
}
|
||||
|
||||
internal static void DistinctTests(ILogger<Worker> logger, List<string> args)
|
||||
{
|
||||
string searchPattern = args[2];
|
||||
string searchPatternB = args[3];
|
||||
string destinationDirectory = args[4];
|
||||
string sourceDirectory = Path.GetFullPath(args[0]);
|
||||
if (!Directory.Exists(destinationDirectory))
|
||||
_ = Directory.CreateDirectory(destinationDirectory);
|
||||
ReadOnlyCollection<Test> tests = GetTests(sourceDirectory, searchPattern, searchPatternB);
|
||||
logger.LogInformation("Found {files} file(s)", tests.Count);
|
||||
string json = JsonSerializer.Serialize(tests, TestCollectionSourceGenerationContext.Default.ReadOnlyCollectionTest);
|
||||
string fileName = Path.Combine(destinationDirectory, ".json");
|
||||
File.WriteAllText(fileName, json);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user