using System.Collections.ObjectModel; using Microsoft.Extensions.Logging; namespace File_Folder_Helper.ADO2025.PI5; internal static partial class Helper20250301 { internal static void PocketBaseImportWithDeno(ILogger logger, List 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 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 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 CopyFiles(char split, string workingDirectory, string directory, string[] files) { List 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(); } }