file-folder-helper/ADO2024/PI3/Helper-2024-08-05.cs
2024-10-11 09:15:32 -07:00

93 lines
3.5 KiB
C#

using Microsoft.Extensions.Logging;
namespace File_Folder_Helper.ADO2024.PI3;
internal static partial class Helper20240805
{
private static void RenameFiles(string find, string replace, string[] ignoreFileNames, string[] confFiles)
{
string checkFile;
foreach (string confFile in confFiles)
{
if (ignoreFileNames.Contains(confFile))
continue;
checkFile = confFile.Replace(find, replace);
if (File.Exists(checkFile))
continue;
File.Move(confFile, checkFile);
}
}
private static void RenameFiles(ILogger<Worker> logger, string sourceDirectory, string[] files, string[] lines, string globalSettingsFile)
{
string to;
string old;
string from;
string what;
string concat;
string checkFile;
string extension;
string[] matches;
string[] segments;
string environment;
List<string> distinct = [];
string globalSettingsLines = File.ReadAllText(globalSettingsFile);
foreach (string line in lines)
{
segments = line.Split('|');
if (segments.Length != 7)
{
logger.LogWarning("Wrong length!");
continue;
}
to = segments[5].Trim();
old = segments[1].Trim();
from = segments[4].Trim();
what = segments[3].Trim();
environment = segments[2].Trim();
concat = string.Concat(environment, '-', what, '-', from, '-', to);
if (distinct.Contains(concat))
{
logger.LogWarning("Not distinct <{concat}>!", concat);
continue;
}
distinct.Add(concat);
globalSettingsLines = globalSettingsLines.Replace(old, concat);
matches = (from l in files where l.Contains(old) select l).ToArray();
if (matches.Length != 1)
{
logger.LogWarning("matches == {matchesLength} <{concat}>!", matches.Length, concat);
continue;
}
extension = Path.GetExtension(matches[0]);
checkFile = Path.Combine(sourceDirectory, $"{concat}{extension}");
File.Move(matches[0], checkFile);
}
File.WriteAllText(globalSettingsFile, globalSettingsLines);
}
internal static void RenameFiles(ILogger<Worker> logger, List<string> args)
{
string find = args[6];
string replace = args[7];
string sourceDirectory = Path.GetFullPath(args[0]);
string globalSettingsFile = Path.GetFullPath(args[4]);
string[] files = Directory.GetFiles(sourceDirectory, args[2], SearchOption.TopDirectoryOnly);
string[] confFiles = Directory.GetFiles(sourceDirectory, $"*{find}", SearchOption.TopDirectoryOnly);
string[] ignoreFileNames = args[8].Split(',').Select(l => Path.Combine(sourceDirectory, l)).ToArray();
RenameFiles(find, replace, ignoreFileNames, confFiles);
string checkFile = Path.Combine(sourceDirectory, args[3]);
if (files.Length == 0 || !File.Exists(checkFile))
logger.LogWarning("No found!");
else
{
string[] lines = File.ReadAllLines(checkFile);
if (lines.Length == 0)
logger.LogWarning("No lines!");
else
RenameFiles(logger, sourceDirectory, files, lines, globalSettingsFile);
}
}
}