Empty file ISO Add date back for just .kanbn Removed HardcodedFileSearchAndSort Sync with 01-23 JsonToTsv System.Text.Json White-List Ready to move to Move Helper Remove Whitelist Force Start At Check for .git directory before ls Optional Allow root for unc path nuget bump PreVerify EnforceCodeStyleInBuild dotnet_analyzer_diagnostic HelperGit searchDelegate Host File AlertIfNewDeviceIsConnected AOT SetFrontMatterAndH1 Match Error Unknown with better logging Undo 04-05 WriteAppendToHostConfFile MonA IsKanbanIndex Dotnet Format Pre-commit NPM CreateWindowsShortcut Working directory Split description Copy tests Ready to test Delete after a couple of days GitConfigCleanUp knb Files
47 lines
2.1 KiB
C#
47 lines
2.1 KiB
C#
using DiscUtils.Iso9660;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace File_Folder_Helper.Day;
|
|
|
|
internal static partial class Helper20240107
|
|
{
|
|
|
|
private static void DirectoryToISO(ILogger<Worker> logger, string destinationDirectory, bool mapOnly, string directory)
|
|
{
|
|
byte[] bytes = [];
|
|
string relativePath;
|
|
string directoryName = Path.GetFileName(directory);
|
|
CDBuilder builder = new() { UseJoliet = true, VolumeIdentifier = directoryName.Length < 25 ? directoryName : directoryName[..25] };
|
|
IEnumerable<string> files = Directory.EnumerateFiles(directory, "*", new EnumerationOptions { IgnoreInaccessible = true, RecurseSubdirectories = true });
|
|
foreach (string file in files)
|
|
{
|
|
relativePath = Path.GetRelativePath(directory, file).Replace(';', '_');
|
|
if (!mapOnly)
|
|
_ = builder.AddFile(relativePath, file);
|
|
else
|
|
_ = builder.AddFile(relativePath, bytes);
|
|
}
|
|
logger.LogInformation(destinationDirectory);
|
|
builder.Build(Path.Combine(destinationDirectory, $"{directoryName}.iso"));
|
|
logger.LogInformation(directoryName);
|
|
}
|
|
|
|
internal static void DirectoryToISO(ILogger<Worker> logger, List<string> args)
|
|
{
|
|
string sourceDirectory = args[0];
|
|
int directories = int.Parse(args[2]);
|
|
string destinationDirectory = args[3];
|
|
logger.LogInformation(sourceDirectory);
|
|
if (sourceDirectory == "C:/ProgramData")
|
|
sourceDirectory = destinationDirectory;
|
|
bool mapOnly = sourceDirectory.Length == 2;
|
|
if (!Directory.Exists(destinationDirectory))
|
|
_ = Directory.CreateDirectory(destinationDirectory);
|
|
string[] subDirectories = directories == 1 ? [sourceDirectory] : Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
|
|
if (subDirectories.Length != directories)
|
|
throw new Exception($"{directories} != {subDirectories.Length}");
|
|
foreach (string directory in subDirectories)
|
|
DirectoryToISO(logger, destinationDirectory, mapOnly, directory);
|
|
}
|
|
|
|
} |