file-folder-helper/ADO2025/PI5/Helper-2025-03-01.cs

62 lines
2.5 KiB
C#

using Microsoft.Extensions.Logging;
using System.Collections.ObjectModel;
namespace File_Folder_Helper.ADO2025.PI5;
internal static partial class Helper20250301
{
private static ReadOnlyCollection<string> CopyFiles(char split, string workingDirectory, string directory, string[] files)
{
List<string> results = [];
string fileName;
string checkFile;
string checkDirectory = Path.Combine(workingDirectory, directory);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
foreach (string file in files)
{
fileName = Path.GetFileName(file).Split(split)[^1];
checkFile = Path.Combine(checkDirectory, fileName);
if (File.Exists(checkFile))
File.Delete(checkFile);
File.Copy(file, checkFile);
results.Add(fileName);
}
return results.AsReadOnly();
}
private static void PocketBaseImportWithDeno(ILogger<Worker> logger, char split, string workingDirectory, string scriptName, string directory, string[] files)
{
string checkFile = Path.Combine(workingDirectory, scriptName);
if (!File.Exists(checkFile))
logger.LogWarning("<{checkFile}> doesn't exist!", checkFile);
else
{
ReadOnlyCollection<string> fileNames = CopyFiles(split, workingDirectory, directory, files);
if (fileNames.Count == 0)
logger.LogWarning("<{fileNames}>(s)", fileNames.Count);
else
{
foreach (string fileName in fileNames)
logger.LogInformation("deno run --unstable --allow-read --allow-env --allow-net {scriptName} --id=true --input={fileName}", scriptName, fileName);
}
}
}
internal static void PocketBaseImportWithDeno(ILogger<Worker> logger, List<string> args)
{
char split = args[3][0];
string directory = args[6];
string scriptName = args[5];
string searchPattern = args[2];
string sourceDirectory = Path.GetFullPath(args[0]);
string workingDirectory = Path.GetFullPath(args[4]);
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
if (files.Length == 0)
logger.LogWarning("<{files}>(s)", files.Length);
else
PocketBaseImportWithDeno(logger, split, workingDirectory, scriptName, directory, files);
}
}