56 lines
2.4 KiB
C#
56 lines
2.4 KiB
C#
using System.Collections.ObjectModel;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace File_Folder_Helper.ADO2025.PI5;
|
|
|
|
internal static partial class Helper20250301 {
|
|
|
|
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);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
} |