Files
file-folder-helper/ADO2024/PI2/Helper-2024-04-29.cs

54 lines
2.1 KiB
C#

using Microsoft.Extensions.Logging;
using System.Diagnostics;
namespace File_Folder_Helper.ADO2024.PI2;
internal static partial class Helper20240429 {
internal static void GitConfigCleanUp(ILogger<Worker> logger, List<string> args) {
string[] files;
Process? process;
string? directory;
string standardError;
string ignoreError = args[5];
string searchPattern = args[3];
ProcessStartInfo processStartInfo;
string root = Path.GetFullPath(args[0]);
string[] removeRemotes = args[4].Split(',');
string systemVolumeInformation = Path.Combine(root, args[2]);
string[] subDirectories = Directory.GetDirectories(root, "*", SearchOption.TopDirectoryOnly);
foreach (string subDirectory in subDirectories) {
if (subDirectory == systemVolumeInformation) {
continue;
}
files = Directory.GetFiles(subDirectory, searchPattern, SearchOption.AllDirectories);
foreach (string file in files) {
directory = Path.GetDirectoryName(file);
if (directory is null) {
continue;
}
foreach (string removeRemote in removeRemotes) {
processStartInfo = new() {
FileName = "git",
WorkingDirectory = directory,
Arguments = $"remote rm {removeRemote}",
RedirectStandardError = true
};
process = Process.Start(processStartInfo);
if (process is null) {
continue;
}
#pragma warning disable IDE0058
process.WaitForExit(7000);
#pragma warning restore IDE0058
standardError = process.StandardError.ReadToEnd();
if (!standardError.Contains(ignoreError)) {
logger.LogInformation(standardError);
}
logger.LogInformation("for <{directoryName}> remote rm {removeRemote}", directory, removeRemote);
}
}
}
}
}