93 lines
3.5 KiB
C#
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);
|
|
}
|
|
}
|
|
|
|
} |