diff --git a/.vscode/.UserSecrets/file-watcher.json b/.vscode/.UserSecrets/file-watcher.json
index cbf5f64..ceeda04 100644
--- a/.vscode/.UserSecrets/file-watcher.json
+++ b/.vscode/.UserSecrets/file-watcher.json
@@ -32,6 +32,10 @@
"TNSX": "(description=(address_list=(address=(protocol=tcp)(host=fimesp-db.mes.infineon.com)(port=7002)))(connect_data=(sid=fimesp)))",
"UserName": "edastag"
},
+ "IsoConfiguration": {
+ "DestinationDirectory": "D:/EAF/drssdv702.eu.infineon.com-eafdev-DeliveredPackages-IFX.EAF Kernel SEMI/v2.57.0.0",
+ "SourceDirectory": "\\\\eafdev.drs.infineon.com\\eafdev\\DeliveredPackages\\IFX.EAF Kernel SEMI\\v2.57.0.0\\EAF v2.57.0.0 API\\complete_with_adaptations"
+ },
"MetrologyConfiguration": {
"DeleteOlderThanWeeks": 16,
"DirectoriesBack": 2,
diff --git a/File-Watcher.csproj b/File-Watcher.csproj
index 920cfce..17fc4d9 100644
--- a/File-Watcher.csproj
+++ b/File-Watcher.csproj
@@ -10,34 +10,35 @@
6062c774-99a9-4f4a-b42d-a9cb7fcbd8be
-
+
+
-
-
+
+
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
\ No newline at end of file
diff --git a/Helpers/HelperISO.cs b/Helpers/HelperISO.cs
new file mode 100644
index 0000000..2983b45
--- /dev/null
+++ b/Helpers/HelperISO.cs
@@ -0,0 +1,40 @@
+using DiscUtils.Iso9660;
+using File_Watcher.Models;
+
+namespace File_Watcher.Helpers;
+
+internal static partial class HelperISO
+{
+
+ private static void DirectoryToISO(ILogger 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 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 bool DirectoryToISO(AppSettings appSettings, ILogger logger)
+ {
+ IsoConfiguration isoConfiguration = appSettings.IsoConfiguration;
+ logger.LogInformation(isoConfiguration.SourceDirectory);
+ bool mapOnly = isoConfiguration.SourceDirectory.Length == 2;
+ if (!Directory.Exists(isoConfiguration.DestinationDirectory))
+ _ = Directory.CreateDirectory(isoConfiguration.DestinationDirectory);
+ DirectoryToISO(logger, isoConfiguration.DestinationDirectory, mapOnly, isoConfiguration.SourceDirectory);
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/Models/AppSettings.cs b/Models/AppSettings.cs
index 2c69925..4b45c61 100644
--- a/Models/AppSettings.cs
+++ b/Models/AppSettings.cs
@@ -3,13 +3,14 @@ using System.Text.Json.Serialization;
namespace File_Watcher.Models;
-public record AppSettings(EAFLogConfiguration EAFLogConfiguration,
+public record AppSettings(CompassConfiguration CompassConfiguration,
+ DriveConfiguration DriveConfiguration,
+ EAFLogConfiguration EAFLogConfiguration,
EAFProgramDataConfiguration EAFProgramDataConfiguration,
EDADatabaseConfiguration EDADatabaseConfiguration,
- CompassConfiguration CompassConfiguration,
- DriveConfiguration DriveConfiguration,
- NugetConfiguration NugetConfiguration,
+ IsoConfiguration IsoConfiguration,
MetrologyConfiguration MetrologyConfiguration,
+ NugetConfiguration NugetConfiguration,
SerialConfiguration SerialConfiguration,
StratusConfiguration StratusConfiguration,
TransmissionControlProtocolConfiguration TransmissionControlProtocolConfiguration,
diff --git a/Models/Binder/AppSettings.cs b/Models/Binder/AppSettings.cs
index 8cae893..a9dd5a2 100644
--- a/Models/Binder/AppSettings.cs
+++ b/Models/Binder/AppSettings.cs
@@ -44,13 +44,14 @@ public class AppSettings
}
private static Models.AppSettings Get(AppSettings? appSettings,
- DriveConfiguration driveConfiguration,
CompassConfiguration compassConfiguration,
+ DriveConfiguration driveConfiguration,
EAFLogConfiguration eafLogConfiguration,
EAFProgramDataConfiguration eafProgramDataConfiguration,
EDADatabaseConfiguration edaDatabaseConfiguration,
- NugetConfiguration nugetConfiguration,
+ IsoConfiguration isoConfiguration,
MetrologyConfiguration metrologyConfiguration,
+ NugetConfiguration nugetConfiguration,
SerialConfiguration serialConfiguration,
StratusConfiguration stratusConfiguration,
TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration,
@@ -65,13 +66,14 @@ public class AppSettings
if (appSettings.MillisecondsDelay is null) throw new NullReferenceException(nameof(MillisecondsDelay));
if (appSettings.WatchDirectory is null) throw new NullReferenceException(nameof(WatchDirectory));
Verify(appSettings);
- result = new(eafLogConfiguration,
+ result = new(compassConfiguration,
+ driveConfiguration,
+ eafLogConfiguration,
eafProgramDataConfiguration,
edaDatabaseConfiguration,
- compassConfiguration,
- driveConfiguration,
- nugetConfiguration,
+ isoConfiguration,
metrologyConfiguration,
+ nugetConfiguration,
serialConfiguration,
stratusConfiguration,
transmissionControlProtocolConfiguration,
@@ -110,13 +112,14 @@ public class AppSettings
results = (string.IsNullOrEmpty(json) ? null : results = JsonSerializer.Deserialize(json, AppSettingsSourceGenerationContext.Default.AppSettings)) ??
throw new NullReferenceException(nameof(Models.AppSettings));
results = Get(appSettings,
- results.DriveConfiguration,
results.CompassConfiguration,
+ results.DriveConfiguration,
results.EAFLogConfiguration,
results.EAFProgramDataConfiguration,
results.EDADatabaseConfiguration,
- results.NugetConfiguration,
+ results.IsoConfiguration,
results.MetrologyConfiguration,
+ results.NugetConfiguration,
results.SerialConfiguration,
results.StratusConfiguration,
results.TransmissionControlProtocolConfiguration,
diff --git a/Models/IsoConfiguration.cs b/Models/IsoConfiguration.cs
new file mode 100644
index 0000000..0ee6c49
--- /dev/null
+++ b/Models/IsoConfiguration.cs
@@ -0,0 +1,22 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace File_Watcher.Models;
+
+public record IsoConfiguration(string DestinationDirectory,
+ string SourceDirectory)
+{
+
+ public override string ToString()
+ {
+ string result = JsonSerializer.Serialize(this, IsoConfigurationSourceGenerationContext.Default.IsoConfiguration);
+ return result;
+ }
+
+}
+
+[JsonSourceGenerationOptions(WriteIndented = true)]
+[JsonSerializable(typeof(IsoConfiguration))]
+internal partial class IsoConfigurationSourceGenerationContext : JsonSerializerContext
+{
+}
\ No newline at end of file
diff --git a/Worker.cs b/Worker.cs
index 26500e6..f96f2c4 100644
--- a/Worker.cs
+++ b/Worker.cs
@@ -33,6 +33,7 @@ public partial class Worker : BackgroundService
{
nameof(Helpers.HelperNuget) => Helpers.HelperNuget.Sync(_AppSettings, _Logger),
nameof(Helpers.HelperTCP) => Helpers.HelperTCP.ReadWrite(_AppSettings, _Logger),
+ nameof(Helpers.HelperISO) => Helpers.HelperISO.DirectoryToISO(_AppSettings, _Logger),
nameof(Helpers.HelperCompass) => Helpers.HelperCompass.CopyFile(_AppSettings, _Logger),
nameof(Helpers.HelperStratus) => Helpers.HelperStratus.MoveFile(_AppSettings, _Logger),
nameof(Helpers.HelperEAFLog) => Helpers.HelperEAFLog.DeleteFiles(_AppSettings, _Logger),