Switch multilevel app settings
Removed gpcl6win64 and LincPDFC just from proj file Removed package.json to clean out publish directory
This commit is contained in:
parent
84d1b07301
commit
4e6504af7e
195
.vscode/.UserSecrets/file-watcher.json
vendored
195
.vscode/.UserSecrets/file-watcher.json
vendored
@ -1,195 +0,0 @@
|
|||||||
{
|
|
||||||
"CamstarOracleConfiguration": {
|
|
||||||
"DateFormat": "yyyy-MM-dd HH:mm:ss:fff",
|
|
||||||
"DirectoryX": "C:/Users/ECUSLEOCamstarTsvc/AppData/Local/IFXApps/WinLog/Logs",
|
|
||||||
"Directory": "D:/Tmp/Phares/WinLog/Logs",
|
|
||||||
"LogFilter": "Camstar",
|
|
||||||
"MessageFilters": [
|
|
||||||
"Connection Dead",
|
|
||||||
"not connected to ORACLE"
|
|
||||||
],
|
|
||||||
"MillisecondsDelay": 90000,
|
|
||||||
"MonitorApplicationResource": "LEO_CAMSTAR_ORACLE_P21_COUNT",
|
|
||||||
"MonitorApplicationSite": "auc",
|
|
||||||
"RollingMinutes": 998877123
|
|
||||||
},
|
|
||||||
"CompassConfiguration": {
|
|
||||||
"Destination": "\\\\10.95.1.211\\Share\\RawData\\TRENDLOG",
|
|
||||||
"HoursBack": 4,
|
|
||||||
"MonthPattern": "MMM",
|
|
||||||
"Pattern": "*.csv",
|
|
||||||
"Source": "C:/Alerton/Compass/1.0/CLIMATEC/archive/trendlog",
|
|
||||||
"TriggerAppendage": ".trg",
|
|
||||||
"YearPattern": "yyyy"
|
|
||||||
},
|
|
||||||
"DriveConfiguration": {
|
|
||||||
"Letter": "s",
|
|
||||||
"Password": "zjtaxxwdEnJ/9tfXQFdj6TKiKBAmpCHWjdi6XYrflw4=",
|
|
||||||
"Share": "\\\\10.95.1.211\\Share",
|
|
||||||
"Use": true,
|
|
||||||
"User": "infineon\\ECMESEAF"
|
|
||||||
},
|
|
||||||
"EAFLogConfiguration": {
|
|
||||||
"SearchPattern": "*.log*"
|
|
||||||
},
|
|
||||||
"EAFProgramDataConfiguration": {
|
|
||||||
"Destination": "\\\\messa08ec.infineon.com\\d$\\ProgramData\\EC_Characterization_Si\\RawData",
|
|
||||||
"Source": "D:/ProgramData/EC_Characterization_Si/RawData"
|
|
||||||
},
|
|
||||||
"EDADatabaseConfiguration": {
|
|
||||||
"CSharpDateTimeFormat": "yyyy-MM-dd_hh:mm:ss tt",
|
|
||||||
"FileShare": "\\\\mesfs.infineon.com\\EC_EDA",
|
|
||||||
"Name": "Staging",
|
|
||||||
"OracleDateTimeFormat": "yyyy-MM-dd_hh:mi:ss AM",
|
|
||||||
"Password": "8vIs2nEZPkcdBUfXX0hHlA==",
|
|
||||||
"TNS": "(description=(address_list=(address=(protocol=tcp)(host=fimess-db.mes.infineon.com)(port=7001)))(connect_data=(sid=fimess)))",
|
|
||||||
"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"
|
|
||||||
},
|
|
||||||
"InfinityQSConfiguration": {
|
|
||||||
"ConnectionStringX": "Data Source=messad1001\\test1,59583;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;",
|
|
||||||
"ConnectionStringXX": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=Metrology;User ID=metrology_rouser;Password=Metrologyrouser2024!;",
|
|
||||||
"ConnectionStringXXX": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=IRMNSPC;User ID=IRMNSPC;Password=dsaf;",
|
|
||||||
"ConnectionString": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=IRMNSPC;Integrated Security=True;",
|
|
||||||
"DestinationDirectory": "L:/File-Watcher/Helper/InfinityQS",
|
|
||||||
"SubGroupTime": 1727177147,
|
|
||||||
"TestsFile": "L:/File-Watcher/Helper/InfinityQS/.json",
|
|
||||||
"Tests": [
|
|
||||||
{
|
|
||||||
"Name": "Bin2",
|
|
||||||
"Value": 1655396897
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "Thresh",
|
|
||||||
"Value": 1655396909
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "GradeStdDev",
|
|
||||||
"Value": 1656695902
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "HgCV Res Average",
|
|
||||||
"Value": 1228920625
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "3mm Edge % from R/2",
|
|
||||||
"Value": 1423499546
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "Average Sum of Defects",
|
|
||||||
"Value": 1125073605
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"MetrologyConfiguration": {
|
|
||||||
"DeleteOlderThanWeeks": 16,
|
|
||||||
"DirectoriesBack": 2,
|
|
||||||
"HardcodedValues": [
|
|
||||||
"BIORAD2",
|
|
||||||
"BIORAD3",
|
|
||||||
"BIORAD4",
|
|
||||||
"BIORAD5",
|
|
||||||
"CDE2",
|
|
||||||
"CDE3",
|
|
||||||
"CDE4",
|
|
||||||
"CDE5",
|
|
||||||
"CDE6",
|
|
||||||
"HGCV1",
|
|
||||||
"HGCV2",
|
|
||||||
"HGCV3",
|
|
||||||
"TENCOR1",
|
|
||||||
"TENCOR2",
|
|
||||||
"TENCOR3",
|
|
||||||
"SP101",
|
|
||||||
"SPV01",
|
|
||||||
"SRP",
|
|
||||||
"WC6Inch",
|
|
||||||
"WC8Inch",
|
|
||||||
"Bio-Rad"
|
|
||||||
],
|
|
||||||
"SourceDirectories": [
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08ANLYSDIFAAST230\\Source\\MET08ANLYSDIFAAST230",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08DDUPSFS6420\\Source\\MET08DDUPSFS6420",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08DDUPSP1TBI\\Source\\MET08DDUPSP1TBI",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESIHGCV\\Source\\MET08RESIHGCV",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESIMAPCDE\\Source\\MET08RESIMAPCDE",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESISRP2100\\Source\\MET08RESISRP2100",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08THFTIRQS408M\\Source\\MET08THFTIRQS408M",
|
|
||||||
"\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08THFTIRSTRATUS\\Source\\MET08THFTIRSTRATUS"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"NugetConfiguration": {
|
|
||||||
"Destination": "L:/File-Watcher/Helper/Nuget/Packages",
|
|
||||||
"KeyFileExtension": ".nuspec",
|
|
||||||
"KeyFileExtensionB": "icon",
|
|
||||||
"KeyFileExtensionC": "readme",
|
|
||||||
"RenameToLower": true,
|
|
||||||
"SearchPattern": "*.nupkg",
|
|
||||||
"Source": "C:/Users/phares/.nuget/packages"
|
|
||||||
},
|
|
||||||
"SerialConfiguration": {
|
|
||||||
"Destination": "L:/DevOps/MESA_FI/File-Watcher/.vscode",
|
|
||||||
"GhostPCLFileName": "gpcl6win64.exe",
|
|
||||||
"LincPDFCFileName": "LincPDFC.exe",
|
|
||||||
"PortName": "COM37"
|
|
||||||
},
|
|
||||||
"StratusConfiguration": {
|
|
||||||
"Days": 4,
|
|
||||||
"Destination": "D:/Tmp",
|
|
||||||
"DestinationX": "\\\\10.95.1.211\\Share\\RawData\\BIORAD4",
|
|
||||||
"FileDelimiterPattern": "Mean [0-9.]*, STDD [0-9.]*",
|
|
||||||
"WatchFile": "DataBiorad.txt"
|
|
||||||
},
|
|
||||||
"TransmissionControlProtocolConfiguration": {
|
|
||||||
"Destination": "L:/DevOps/MESA_FI/File-Watcher/.vscode",
|
|
||||||
"GhostPCLFileName": "gpcl6win64.exe",
|
|
||||||
"IPAddress": "COM37",
|
|
||||||
"IPAddresses": {
|
|
||||||
"10.95.154.19": [
|
|
||||||
"EPP-WEST",
|
|
||||||
"6INCH",
|
|
||||||
"WC6INCH3"
|
|
||||||
],
|
|
||||||
"10.95.154.43": [
|
|
||||||
"FQA",
|
|
||||||
"6INCH",
|
|
||||||
"WC6INCH1"
|
|
||||||
],
|
|
||||||
"10.95.154.44": [
|
|
||||||
"MU",
|
|
||||||
"6INCH",
|
|
||||||
"WC6INCH2"
|
|
||||||
],
|
|
||||||
"10.95.154.46": [
|
|
||||||
"EPP-EAST",
|
|
||||||
"6INCH",
|
|
||||||
"WC6INCH4"
|
|
||||||
],
|
|
||||||
"10.95.154.47": [
|
|
||||||
"FQA",
|
|
||||||
"8INCH",
|
|
||||||
"WC8INCH1"
|
|
||||||
],
|
|
||||||
"10.95.154.48": [
|
|
||||||
"MU",
|
|
||||||
"8INCH",
|
|
||||||
"WC8INCH2"
|
|
||||||
],
|
|
||||||
"10.95.154.49": [
|
|
||||||
"EPP-WEST",
|
|
||||||
"8INCH",
|
|
||||||
"WC8INCH3"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Port": 950,
|
|
||||||
"Server": false
|
|
||||||
},
|
|
||||||
"WaferCounterConfiguration": {
|
|
||||||
"Destination": "\\\\mestsa01ec.infineon.com\\apps\\WaferCounter\\V203",
|
|
||||||
"MatchPath": false
|
|
||||||
}
|
|
||||||
}
|
|
10
.vscode/settings.json
vendored
10
.vscode/settings.json
vendored
@ -15,19 +15,29 @@
|
|||||||
"Camstar",
|
"Camstar",
|
||||||
"CHIL",
|
"CHIL",
|
||||||
"DEAT",
|
"DEAT",
|
||||||
|
"DEVICEHEIGHTPOINTS",
|
||||||
|
"DEVICEWIDTHPOINTS",
|
||||||
"endianness",
|
"endianness",
|
||||||
"FAMC",
|
"FAMC",
|
||||||
"FAMS",
|
"FAMS",
|
||||||
|
"FIXEDMEDIA",
|
||||||
"GIVN",
|
"GIVN",
|
||||||
|
"gpcl",
|
||||||
|
"Hmmssfff",
|
||||||
"HUSB",
|
"HUSB",
|
||||||
"INDI",
|
"INDI",
|
||||||
"Infineon",
|
"Infineon",
|
||||||
"Kanban",
|
"Kanban",
|
||||||
"kanbn",
|
"kanbn",
|
||||||
"Kofax",
|
"Kofax",
|
||||||
|
"linc",
|
||||||
|
"Linc",
|
||||||
|
"NOPAUSE",
|
||||||
"NSFX",
|
"NSFX",
|
||||||
"OBJE",
|
"OBJE",
|
||||||
"onenote",
|
"onenote",
|
||||||
|
"PDFC",
|
||||||
|
"pdfwrite",
|
||||||
"PDSF",
|
"PDSF",
|
||||||
"pged",
|
"pged",
|
||||||
"Phares",
|
"Phares",
|
||||||
|
@ -18,30 +18,10 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.1" />
|
||||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.6.0" />
|
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.7.0" />
|
||||||
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="8.0.10" />
|
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="8.0.13" />
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
<PackageReference Include="System.Text.Json" Version="9.0.2" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Condition="'$(Configuration)' == 'Debug'" Include="\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Condition="'$(Configuration)' == 'Debug'" Include="\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Condition="'$(Configuration)' == 'Debug'" Include="\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC\v2.6.6.21\LincPDFC.exe">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Condition="'$(Configuration)' == 'Release'" Include="\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Condition="'$(Configuration)' == 'Release'" Include="\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Condition="'$(Configuration)' == 'Release'" Include="\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC\v2.6.6.21\LincPDFC.exe">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -29,7 +29,7 @@ internal class HelperCompass
|
|||||||
if (string.IsNullOrEmpty(appSettings.DriveConfiguration.Password))
|
if (string.IsNullOrEmpty(appSettings.DriveConfiguration.Password))
|
||||||
decrypted = string.Empty;
|
decrypted = string.Empty;
|
||||||
else
|
else
|
||||||
decrypted = RijndaelEncryption.Decrypt(appSettings.DriveConfiguration.Password, appSettings.Company);
|
decrypted = RijndaelEncryption.Decrypt(appSettings.DriveConfiguration.Password, appSettings.FileWatcherConfiguration.Company);
|
||||||
arguments = $"use {appSettings.DriveConfiguration.Letter}: \"{appSettings.DriveConfiguration.Share}\" /p:yes /user:{appSettings.DriveConfiguration.User} {decrypted}";
|
arguments = $"use {appSettings.DriveConfiguration.Letter}: \"{appSettings.DriveConfiguration.Share}\" /p:yes /user:{appSettings.DriveConfiguration.User} {decrypted}";
|
||||||
_ = stringBuilder.Clear();
|
_ = stringBuilder.Clear();
|
||||||
segments = arguments.Split(' ');
|
segments = arguments.Split(' ');
|
||||||
|
@ -7,8 +7,8 @@ internal static partial class HelperEAFLog
|
|||||||
|
|
||||||
internal static bool DeleteFiles(AppSettings appSettings, ILogger<Worker> logger)
|
internal static bool DeleteFiles(AppSettings appSettings, ILogger<Worker> logger)
|
||||||
{
|
{
|
||||||
string[] files = Directory.GetFiles(appSettings.WatchDirectory, appSettings.EAFLogConfiguration.SearchPattern, SearchOption.AllDirectories);
|
string[] files = Directory.GetFiles(appSettings.FileWatcherConfiguration.WatchDirectory, appSettings.EAFLogConfiguration.SearchPattern, SearchOption.AllDirectories);
|
||||||
logger.LogInformation("After {MillisecondsDelay} with search pattern '{SearchPattern}' found {files}", appSettings.MillisecondsDelay, appSettings.EAFLogConfiguration.SearchPattern, files.Length);
|
logger.LogInformation("After {MillisecondsDelay} with search pattern '{SearchPattern}' found {files}", appSettings.FileWatcherConfiguration.MillisecondsDelay, appSettings.EAFLogConfiguration.SearchPattern, files.Length);
|
||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
{
|
{
|
||||||
if (file.EndsWith(".dll"))
|
if (file.EndsWith(".dll"))
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
using File_Watcher.Helpers.EDA;
|
using File_Watcher.Helpers.EDA;
|
||||||
using File_Watcher.Models;
|
using File_Watcher.Models;
|
||||||
using System.Globalization;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
@ -12,12 +10,8 @@ namespace File_Watcher.Helpers;
|
|||||||
internal static partial class HelperEDADatabase
|
internal static partial class HelperEDADatabase
|
||||||
{
|
{
|
||||||
|
|
||||||
private static Calendar? _Calendar;
|
|
||||||
private static string? _EDADataCollectionPlansLastRun;
|
private static string? _EDADataCollectionPlansLastRun;
|
||||||
|
|
||||||
[GeneratedRegex("[a-zA-Z0-9]{1,}")]
|
|
||||||
private static partial Regex RegexAZ09();
|
|
||||||
|
|
||||||
private static Stream ToStream(string @this)
|
private static Stream ToStream(string @this)
|
||||||
{
|
{
|
||||||
MemoryStream? stream = new();
|
MemoryStream? stream = new();
|
||||||
@ -207,7 +201,7 @@ internal static partial class HelperEDADatabase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DataCollectionPlans(AppSettings appSettings, ILogger<Worker> logger, Calendar calendar, CancellationToken cancellationToken)
|
private static void DataCollectionPlans(AppSettings appSettings, ILogger<Worker> logger, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
int fieldCount;
|
int fieldCount;
|
||||||
object @object;
|
object @object;
|
||||||
@ -219,7 +213,7 @@ internal static partial class HelperEDADatabase
|
|||||||
Array objectTypes = Enum.GetValues(typeof(ModuleInstanceTypeName));
|
Array objectTypes = Enum.GetValues(typeof(ModuleInstanceTypeName));
|
||||||
#pragma warning restore IL3050
|
#pragma warning restore IL3050
|
||||||
Dictionary<string, Dictionary<ModuleInstanceTypeName, List<List<object>>>> rows = [];
|
Dictionary<string, Dictionary<ModuleInstanceTypeName, List<List<object>>>> rows = [];
|
||||||
string decrypted = RijndaelEncryption.Decrypt(appSettings.EDADatabaseConfiguration.Password, appSettings.Company);
|
string decrypted = RijndaelEncryption.Decrypt(appSettings.EDADatabaseConfiguration.Password, appSettings.FileWatcherConfiguration.Company);
|
||||||
string connectionString = $"Data Source={appSettings.EDADatabaseConfiguration.TNS}; User Id={appSettings.EDADatabaseConfiguration.UserName}; Password={decrypted};";
|
string connectionString = $"Data Source={appSettings.EDADatabaseConfiguration.TNS}; User Id={appSettings.EDADatabaseConfiguration.UserName}; Password={decrypted};";
|
||||||
rows.Add(appSettings.EDADatabaseConfiguration.Name, []);
|
rows.Add(appSettings.EDADatabaseConfiguration.Name, []);
|
||||||
foreach (ModuleInstanceTypeName objectType in objectTypes)
|
foreach (ModuleInstanceTypeName objectType in objectTypes)
|
||||||
@ -278,8 +272,7 @@ internal static partial class HelperEDADatabase
|
|||||||
|
|
||||||
internal static bool SaveDataCollectionPlans(AppSettings appSettings, ILogger<Worker> logger, CancellationToken cancellationToken)
|
internal static bool SaveDataCollectionPlans(AppSettings appSettings, ILogger<Worker> logger, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
_Calendar ??= new CultureInfo("en-US").Calendar;
|
DataCollectionPlans(appSettings, logger, cancellationToken);
|
||||||
DataCollectionPlans(appSettings, logger, _Calendar, cancellationToken);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ internal static partial class HelperEventLog
|
|||||||
|
|
||||||
internal static bool ClearEventLogs(AppSettings appSettings, ILogger<Worker> logger)
|
internal static bool ClearEventLogs(AppSettings appSettings, ILogger<Worker> logger)
|
||||||
{
|
{
|
||||||
if (Directory.Exists(appSettings.WatchDirectory))
|
if (Directory.Exists(appSettings.FileWatcherConfiguration.WatchDirectory))
|
||||||
{
|
{
|
||||||
#pragma warning disable CA1416
|
#pragma warning disable CA1416
|
||||||
using (EventLog eventLog = new("Security", Environment.MachineName))
|
using (EventLog eventLog = new("Security", Environment.MachineName))
|
||||||
@ -26,7 +26,7 @@ internal static partial class HelperEventLog
|
|||||||
{ logger.LogInformation("Error: {logName} - {message}.", eventLog.LogDisplayName, ex.Message); }
|
{ logger.LogInformation("Error: {logName} - {message}.", eventLog.LogDisplayName, ex.Message); }
|
||||||
}
|
}
|
||||||
#pragma warning restore CA1416
|
#pragma warning restore CA1416
|
||||||
logger.LogCritical("{Company}", appSettings.Company);
|
logger.LogCritical("{Company}", appSettings.FileWatcherConfiguration.Company);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,23 @@ namespace File_Watcher.Helpers;
|
|||||||
internal static partial class HelperInfinityQS
|
internal static partial class HelperInfinityQS
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static void KillExisting(string processName)
|
||||||
|
{
|
||||||
|
Process[] processes = Process.GetProcessesByName(processName);
|
||||||
|
foreach (Process process in processes)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ process.Kill(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void RunMI()
|
private static void RunMI()
|
||||||
{
|
{
|
||||||
#pragma warning disable CA1416
|
#pragma warning disable CA1416
|
||||||
ProcessStartInfo processStartInfo = new("iispcmi.exe")
|
string processName = "iispcmi.exe";
|
||||||
|
KillExisting(processName);
|
||||||
|
ProcessStartInfo processStartInfo = new(processName)
|
||||||
{
|
{
|
||||||
Domain = "Infineon",
|
Domain = "Infineon",
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
@ -17,14 +30,15 @@ internal static partial class HelperInfinityQS
|
|||||||
PasswordInClearText = "j(1(P%xB=g}3w9db",
|
PasswordInClearText = "j(1(P%xB=g}3w9db",
|
||||||
WorkingDirectory = "C:/Program Files (x86)/InfinityQS International/ProFicient/Applications"
|
WorkingDirectory = "C:/Program Files (x86)/InfinityQS International/ProFicient/Applications"
|
||||||
};
|
};
|
||||||
|
TimeSpan timeSpan = new(DateTime.Now.AddDays(7).Ticks - DateTime.Now.Ticks);
|
||||||
Process process = Process.Start(processStartInfo) ?? throw new NullReferenceException(nameof(Process));
|
Process process = Process.Start(processStartInfo) ?? throw new NullReferenceException(nameof(Process));
|
||||||
process.WaitForExit();
|
_ = process.WaitForExit((int)timeSpan.TotalMilliseconds);
|
||||||
#pragma warning restore CA1416
|
#pragma warning restore CA1416
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool Select(AppSettings appSettings, ILogger<Worker> logger)
|
internal static bool Select(AppSettings appSettings, ILogger<Worker> logger)
|
||||||
{
|
{
|
||||||
logger.LogInformation(appSettings.Company);
|
logger.LogInformation(appSettings.FileWatcherConfiguration.Company);
|
||||||
RunMI();
|
RunMI();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ internal static partial class HelperStratus
|
|||||||
continue;
|
continue;
|
||||||
if (!Regex.Match(line, appSettings.StratusConfiguration.FileDelimiterPattern).Success)
|
if (!Regex.Match(line, appSettings.StratusConfiguration.FileDelimiterPattern).Success)
|
||||||
continue;
|
continue;
|
||||||
weekYearDirectory = Path.Combine(appSettings.WatchDirectory, $"{fileInfo.CreationTime.Year}_Week_{weekOfYear}");
|
weekYearDirectory = Path.Combine(appSettings.FileWatcherConfiguration.WatchDirectory, $"{fileInfo.CreationTime.Year}_Week_{weekOfYear}");
|
||||||
checkDirectory = Path.Combine(weekYearDirectory, fileInfo.CreationTime.ToString("yyyy-MM-dd"));
|
checkDirectory = Path.Combine(weekYearDirectory, fileInfo.CreationTime.ToString("yyyy-MM-dd"));
|
||||||
if (!Directory.Exists(checkDirectory))
|
if (!Directory.Exists(checkDirectory))
|
||||||
_ = Directory.CreateDirectory(checkDirectory);
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
@ -81,19 +81,19 @@ internal static partial class HelperStratus
|
|||||||
internal static bool MoveFile(AppSettings appSettings, ILogger<Worker> logger)
|
internal static bool MoveFile(AppSettings appSettings, ILogger<Worker> logger)
|
||||||
{
|
{
|
||||||
// http://10.95.154.10:8081/2023_Week_45/2023-11-08/a.txt
|
// http://10.95.154.10:8081/2023_Week_45/2023-11-08/a.txt
|
||||||
string checkFile = Path.Combine(appSettings.WatchDirectory, appSettings.StratusConfiguration.WatchFile);
|
string checkFile = Path.Combine(appSettings.FileWatcherConfiguration.WatchDirectory, appSettings.StratusConfiguration.WatchFile);
|
||||||
try
|
try
|
||||||
{ TryMoveFile(appSettings, checkFile); }
|
{ TryMoveFile(appSettings, checkFile); }
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
logger.LogError(ex, "Inner loop error!");
|
logger.LogError(ex, "Inner loop error!");
|
||||||
Thread.Sleep(appSettings.MillisecondsDelay * 5);
|
Thread.Sleep(appSettings.FileWatcherConfiguration.MillisecondsDelay * 5);
|
||||||
}
|
}
|
||||||
Console.WriteLine("Hello");
|
Console.WriteLine("Hello");
|
||||||
int days = appSettings.StratusConfiguration.Days;
|
int days = appSettings.StratusConfiguration.Days;
|
||||||
string sourceDirectory = appSettings.WatchDirectory;
|
|
||||||
int millisecondsDelay = appSettings.MillisecondsDelay;
|
|
||||||
string pattern = appSettings.StratusConfiguration.FileDelimiterPattern;
|
string pattern = appSettings.StratusConfiguration.FileDelimiterPattern;
|
||||||
|
string sourceDirectory = appSettings.FileWatcherConfiguration.WatchDirectory;
|
||||||
|
int millisecondsDelay = appSettings.FileWatcherConfiguration.MillisecondsDelay;
|
||||||
string archiveDirectory = Path.GetFullPath(appSettings.StratusConfiguration.Destination);
|
string archiveDirectory = Path.GetFullPath(appSettings.StratusConfiguration.Destination);
|
||||||
try
|
try
|
||||||
{ TryArchiveFilesFramework(sourceDirectory, pattern, archiveDirectory, days); }
|
{ TryArchiveFilesFramework(sourceDirectory, pattern, archiveDirectory, days); }
|
||||||
|
@ -99,7 +99,7 @@ internal static partial class HelperTCP
|
|||||||
{
|
{
|
||||||
List<byte> results = [];
|
List<byte> results = [];
|
||||||
byte[] bytes = new byte[1024];
|
byte[] bytes = new byte[1024];
|
||||||
string directory = Path.Combine(transmissionControlProtocolConfiguration.Destination, transmissionControlProtocolConfiguration.IPAddress);
|
string directory = Path.GetFullPath(Path.Combine(transmissionControlProtocolConfiguration.Destination, transmissionControlProtocolConfiguration.IPAddress));
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
_ = Directory.CreateDirectory(directory);
|
_ = Directory.CreateDirectory(directory);
|
||||||
do
|
do
|
||||||
@ -110,7 +110,7 @@ internal static partial class HelperTCP
|
|||||||
}
|
}
|
||||||
while (networkStream.DataAvailable);
|
while (networkStream.DataAvailable);
|
||||||
if (results.Count > 0)
|
if (results.Count > 0)
|
||||||
File.WriteAllBytes(string.Concat(directory, $"-{DateTime.Now.Ticks}{directory[^1]}.raw"), results.ToArray());
|
File.WriteAllBytes(Path.Combine(directory, $"{DateTime.Now.Ticks}{directory[^1]}.raw"), results.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool ReadWrite(AppSettings appSettings, ILogger<Worker> logger)
|
internal static bool ReadWrite(AppSettings appSettings, ILogger<Worker> logger)
|
||||||
|
@ -11,7 +11,7 @@ internal static partial class HelperWaferCounter
|
|||||||
string checkFile;
|
string checkFile;
|
||||||
FileInfo fileInfo;
|
FileInfo fileInfo;
|
||||||
string checkDirectory;
|
string checkDirectory;
|
||||||
string[] directories = Directory.GetDirectories(appSettings.WatchDirectory, "*", SearchOption.TopDirectoryOnly);
|
string[] directories = Directory.GetDirectories(appSettings.FileWatcherConfiguration.WatchDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
foreach (string directory in directories)
|
foreach (string directory in directories)
|
||||||
{
|
{
|
||||||
checkDirectory = !appSettings.WaferCounterConfiguration.MatchPath ? appSettings.WaferCounterConfiguration.Destination : Path.Combine(appSettings.WaferCounterConfiguration.Destination, Path.GetFileName(directory));
|
checkDirectory = !appSettings.WaferCounterConfiguration.MatchPath ? appSettings.WaferCounterConfiguration.Destination : Path.Combine(appSettings.WaferCounterConfiguration.Destination, Path.GetFileName(directory));
|
||||||
@ -23,7 +23,7 @@ internal static partial class HelperWaferCounter
|
|||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
{
|
{
|
||||||
fileInfo = new(file);
|
fileInfo = new(file);
|
||||||
if (new TimeSpan(DateTime.Now.Ticks - fileInfo.LastWriteTime.Ticks).TotalMilliseconds < appSettings.MillisecondsDelay)
|
if (new TimeSpan(DateTime.Now.Ticks - fileInfo.LastWriteTime.Ticks).TotalMilliseconds < appSettings.FileWatcherConfiguration.MillisecondsDelay)
|
||||||
continue;
|
continue;
|
||||||
checkFile = Path.Combine(checkDirectory, Path.GetFileName(file));
|
checkFile = Path.Combine(checkDirectory, Path.GetFileName(file));
|
||||||
if (File.Exists(checkFile))
|
if (File.Exists(checkFile))
|
||||||
|
@ -8,6 +8,7 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
|
|||||||
DriveConfiguration DriveConfiguration,
|
DriveConfiguration DriveConfiguration,
|
||||||
EAFLogConfiguration EAFLogConfiguration,
|
EAFLogConfiguration EAFLogConfiguration,
|
||||||
EDADatabaseConfiguration EDADatabaseConfiguration,
|
EDADatabaseConfiguration EDADatabaseConfiguration,
|
||||||
|
FileWatcherConfiguration FileWatcherConfiguration,
|
||||||
InfinityQSConfiguration InfinityQSConfiguration,
|
InfinityQSConfiguration InfinityQSConfiguration,
|
||||||
IsoConfiguration IsoConfiguration,
|
IsoConfiguration IsoConfiguration,
|
||||||
MetrologyConfiguration MetrologyConfiguration,
|
MetrologyConfiguration MetrologyConfiguration,
|
||||||
@ -15,13 +16,7 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
|
|||||||
SerialConfiguration SerialConfiguration,
|
SerialConfiguration SerialConfiguration,
|
||||||
StratusConfiguration StratusConfiguration,
|
StratusConfiguration StratusConfiguration,
|
||||||
TransmissionControlProtocolConfiguration TransmissionControlProtocolConfiguration,
|
TransmissionControlProtocolConfiguration TransmissionControlProtocolConfiguration,
|
||||||
WaferCounterConfiguration WaferCounterConfiguration,
|
WaferCounterConfiguration WaferCounterConfiguration)
|
||||||
string BuildNumber,
|
|
||||||
string Company,
|
|
||||||
string GitCommitSeven,
|
|
||||||
string Helper,
|
|
||||||
int MillisecondsDelay,
|
|
||||||
string WatchDirectory)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
@ -30,6 +25,73 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void Verify(AppSettings _)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
public static AppSettings Get(IConfigurationRoot configurationRoot)
|
||||||
|
{
|
||||||
|
AppSettings result;
|
||||||
|
#pragma warning disable IL3050, IL2026
|
||||||
|
CamstarOracleConfiguration? camstarOracleConfiguration = configurationRoot.GetSection(nameof(CamstarOracleConfiguration)).Get<CamstarOracleConfiguration>();
|
||||||
|
CompassConfiguration? compassConfiguration = configurationRoot.GetSection(nameof(CompassConfiguration)).Get<CompassConfiguration>();
|
||||||
|
DriveConfiguration? driveConfiguration = configurationRoot.GetSection(nameof(DriveConfiguration)).Get<DriveConfiguration>();
|
||||||
|
EAFLogConfiguration? eafLogConfiguration = configurationRoot.GetSection(nameof(EAFLogConfiguration)).Get<EAFLogConfiguration>();
|
||||||
|
EDADatabaseConfiguration? edaDatabaseConfiguration = configurationRoot.GetSection(nameof(EDADatabaseConfiguration)).Get<EDADatabaseConfiguration>();
|
||||||
|
FileWatcherConfiguration? fileWatcherConfiguration = configurationRoot.GetSection(nameof(FileWatcherConfiguration)).Get<FileWatcherConfiguration>();
|
||||||
|
InfinityQSConfiguration? infinityQSConfiguration = configurationRoot.GetSection(nameof(InfinityQSConfiguration)).Get<InfinityQSConfiguration>();
|
||||||
|
IsoConfiguration? isoConfiguration = configurationRoot.GetSection(nameof(IsoConfiguration)).Get<IsoConfiguration>();
|
||||||
|
MetrologyConfiguration? metrologyConfiguration = configurationRoot.GetSection(nameof(MetrologyConfiguration)).Get<MetrologyConfiguration>();
|
||||||
|
NugetConfiguration? nugetConfiguration = configurationRoot.GetSection(nameof(NugetConfiguration)).Get<NugetConfiguration>();
|
||||||
|
SerialConfiguration? serialConfiguration = configurationRoot.GetSection(nameof(SerialConfiguration)).Get<SerialConfiguration>();
|
||||||
|
StratusConfiguration? stratusConfiguration = configurationRoot.GetSection(nameof(StratusConfiguration)).Get<StratusConfiguration>();
|
||||||
|
TransmissionControlProtocolConfiguration? transmissionControlProtocolConfiguration = configurationRoot.GetSection(nameof(TransmissionControlProtocolConfiguration)).Get<TransmissionControlProtocolConfiguration>();
|
||||||
|
WaferCounterConfiguration? waferCounterConfiguration = configurationRoot.GetSection(nameof(WaferCounterConfiguration)).Get<WaferCounterConfiguration>();
|
||||||
|
#pragma warning restore IL3050, IL2026
|
||||||
|
if (camstarOracleConfiguration is null
|
||||||
|
|| compassConfiguration is null
|
||||||
|
|| driveConfiguration is null
|
||||||
|
|| eafLogConfiguration is null
|
||||||
|
|| edaDatabaseConfiguration is null
|
||||||
|
|| fileWatcherConfiguration is null
|
||||||
|
|| infinityQSConfiguration is null
|
||||||
|
|| isoConfiguration is null
|
||||||
|
|| metrologyConfiguration is null
|
||||||
|
|| nugetConfiguration is null
|
||||||
|
|| serialConfiguration is null
|
||||||
|
|| stratusConfiguration is null
|
||||||
|
|| transmissionControlProtocolConfiguration is null
|
||||||
|
|| waferCounterConfiguration is null
|
||||||
|
|| fileWatcherConfiguration?.Company is null)
|
||||||
|
{
|
||||||
|
List<string> paths = [];
|
||||||
|
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
|
||||||
|
{
|
||||||
|
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
||||||
|
continue;
|
||||||
|
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
||||||
|
continue;
|
||||||
|
paths.Add(physicalFileProvider.Root);
|
||||||
|
}
|
||||||
|
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
||||||
|
}
|
||||||
|
result = new(camstarOracleConfiguration,
|
||||||
|
compassConfiguration,
|
||||||
|
driveConfiguration,
|
||||||
|
eafLogConfiguration,
|
||||||
|
edaDatabaseConfiguration,
|
||||||
|
fileWatcherConfiguration,
|
||||||
|
infinityQSConfiguration,
|
||||||
|
isoConfiguration,
|
||||||
|
metrologyConfiguration,
|
||||||
|
nugetConfiguration,
|
||||||
|
serialConfiguration,
|
||||||
|
stratusConfiguration,
|
||||||
|
transmissionControlProtocolConfiguration,
|
||||||
|
waferCounterConfiguration);
|
||||||
|
Verify(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
[*.cs]
|
|
||||||
csharp_preserve_single_line_statements = true
|
|
@ -1,150 +0,0 @@
|
|||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace File_Watcher.Models.Binder;
|
|
||||||
|
|
||||||
public class AppSettings
|
|
||||||
{
|
|
||||||
|
|
||||||
public string? BuildNumber { get; set; }
|
|
||||||
public string[]? ConfigurationDirectoryNames { get; set; }
|
|
||||||
public int? ConfigurationSpecialFolder { get; set; }
|
|
||||||
public string? ConfigurationFileName { get; set; }
|
|
||||||
public string? Company { get; set; }
|
|
||||||
public string? GitCommitSeven { get; set; }
|
|
||||||
public string? Helper { get; set; }
|
|
||||||
public int? MillisecondsDelay { get; set; }
|
|
||||||
public string? WatchDirectory { get; set; }
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
string result = JsonSerializer.Serialize(this, BinderAppSettingsSourceGenerationContext.Default.AppSettings);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings)
|
|
||||||
{
|
|
||||||
if (appSettings?.BuildNumber is null)
|
|
||||||
{
|
|
||||||
List<string> paths = [];
|
|
||||||
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
|
|
||||||
{
|
|
||||||
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
|
||||||
continue;
|
|
||||||
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
|
||||||
continue;
|
|
||||||
paths.Add(physicalFileProvider.Root);
|
|
||||||
}
|
|
||||||
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void Verify(AppSettings _)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Models.AppSettings Get(AppSettings? appSettings,
|
|
||||||
CamstarOracleConfiguration camstarOracleConfiguration,
|
|
||||||
CompassConfiguration compassConfiguration,
|
|
||||||
DriveConfiguration driveConfiguration,
|
|
||||||
EAFLogConfiguration eafLogConfiguration,
|
|
||||||
EDADatabaseConfiguration edaDatabaseConfiguration,
|
|
||||||
InfinityQSConfiguration infinityQSConfiguration,
|
|
||||||
IsoConfiguration isoConfiguration,
|
|
||||||
MetrologyConfiguration metrologyConfiguration,
|
|
||||||
NugetConfiguration nugetConfiguration,
|
|
||||||
SerialConfiguration serialConfiguration,
|
|
||||||
StratusConfiguration stratusConfiguration,
|
|
||||||
TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration,
|
|
||||||
WaferCounterConfiguration waferCounterConfiguration)
|
|
||||||
{
|
|
||||||
Models.AppSettings result;
|
|
||||||
if (appSettings is null) throw new NullReferenceException(nameof(appSettings));
|
|
||||||
if (appSettings.BuildNumber is null) throw new NullReferenceException(nameof(BuildNumber));
|
|
||||||
if (appSettings.Company is null) throw new NullReferenceException(nameof(Company));
|
|
||||||
if (appSettings.GitCommitSeven is null) throw new NullReferenceException(nameof(GitCommitSeven));
|
|
||||||
if (appSettings.Helper is null) throw new NullReferenceException(nameof(Helper));
|
|
||||||
if (appSettings.MillisecondsDelay is null) throw new NullReferenceException(nameof(MillisecondsDelay));
|
|
||||||
if (appSettings.WatchDirectory is null) throw new NullReferenceException(nameof(WatchDirectory));
|
|
||||||
Verify(appSettings);
|
|
||||||
result = new(camstarOracleConfiguration,
|
|
||||||
compassConfiguration,
|
|
||||||
driveConfiguration,
|
|
||||||
eafLogConfiguration,
|
|
||||||
edaDatabaseConfiguration,
|
|
||||||
infinityQSConfiguration,
|
|
||||||
isoConfiguration,
|
|
||||||
metrologyConfiguration,
|
|
||||||
nugetConfiguration,
|
|
||||||
serialConfiguration,
|
|
||||||
stratusConfiguration,
|
|
||||||
transmissionControlProtocolConfiguration,
|
|
||||||
waferCounterConfiguration,
|
|
||||||
appSettings.BuildNumber,
|
|
||||||
appSettings.Company,
|
|
||||||
appSettings.GitCommitSeven,
|
|
||||||
appSettings.Helper,
|
|
||||||
appSettings.MillisecondsDelay.Value,
|
|
||||||
appSettings.WatchDirectory);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Models.AppSettings Get(AppSettings? appSettings)
|
|
||||||
{
|
|
||||||
Models.AppSettings? results;
|
|
||||||
string? json;
|
|
||||||
if (appSettings is null || appSettings.ConfigurationFileName is null)
|
|
||||||
throw new NotSupportedException($"{nameof(appSettings.ConfigurationFileName)} must be set!");
|
|
||||||
string jsonFile = Path.Combine(AppContext.BaseDirectory, appSettings.ConfigurationFileName);
|
|
||||||
if (File.Exists(jsonFile))
|
|
||||||
json = File.ReadAllText(jsonFile);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
json = null;
|
|
||||||
string applicationData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
|
||||||
List<string> collection = [applicationData];
|
|
||||||
if (appSettings?.ConfigurationDirectoryNames is not null)
|
|
||||||
collection.AddRange(appSettings.ConfigurationDirectoryNames);
|
|
||||||
if (appSettings?.ConfigurationFileName is not null)
|
|
||||||
collection.Add(appSettings.ConfigurationFileName);
|
|
||||||
jsonFile = Path.Combine(collection.ToArray());
|
|
||||||
}
|
|
||||||
if (string.IsNullOrEmpty(json) && File.Exists(jsonFile))
|
|
||||||
json = File.ReadAllText(jsonFile);
|
|
||||||
results = (string.IsNullOrEmpty(json) ? null : results = JsonSerializer.Deserialize(json, AppSettingsSourceGenerationContext.Default.AppSettings)) ??
|
|
||||||
throw new NullReferenceException(nameof(Models.AppSettings));
|
|
||||||
results = Get(appSettings,
|
|
||||||
results.CamstarOracleConfiguration,
|
|
||||||
results.CompassConfiguration,
|
|
||||||
results.DriveConfiguration,
|
|
||||||
results.EAFLogConfiguration,
|
|
||||||
results.EDADatabaseConfiguration,
|
|
||||||
results.InfinityQSConfiguration,
|
|
||||||
results.IsoConfiguration,
|
|
||||||
results.MetrologyConfiguration,
|
|
||||||
results.NugetConfiguration,
|
|
||||||
results.SerialConfiguration,
|
|
||||||
results.StratusConfiguration,
|
|
||||||
results.TransmissionControlProtocolConfiguration,
|
|
||||||
results.WaferCounterConfiguration);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
|
|
||||||
{
|
|
||||||
Models.AppSettings result;
|
|
||||||
#pragma warning disable IL3050, IL2026
|
|
||||||
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
|
|
||||||
#pragma warning restore IL3050, IL2026
|
|
||||||
PreVerify(configurationRoot, appSettings);
|
|
||||||
result = Get(appSettings);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(AppSettings))]
|
|
||||||
internal partial class BinderAppSettingsSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
24
Models/FileWatcherConfiguration.cs
Normal file
24
Models/FileWatcherConfiguration.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace File_Watcher.Models;
|
||||||
|
|
||||||
|
public record FileWatcherConfiguration(string Company,
|
||||||
|
string Helper,
|
||||||
|
int MillisecondsDelay,
|
||||||
|
string WatchDirectory)
|
||||||
|
{
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
string result = JsonSerializer.Serialize(this, FileWatcherConfigurationSourceGenerationContext.Default.FileWatcherConfiguration);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(FileWatcherConfiguration))]
|
||||||
|
internal partial class FileWatcherConfigurationSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
14
Program.cs
14
Program.cs
@ -14,12 +14,16 @@ public class Program
|
|||||||
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
|
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
|
||||||
#pragma warning restore IL3050
|
#pragma warning restore IL3050
|
||||||
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
|
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
|
||||||
AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
|
AppSettings appSettings = AppSettings.Get(webApplicationBuilder.Configuration);
|
||||||
if (string.IsNullOrEmpty(appSettings.Company))
|
if (string.IsNullOrEmpty(appSettings.FileWatcherConfiguration.Company))
|
||||||
throw new Exception("Company name must have a value!");
|
throw new Exception("Company name must have a value!");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
List<string> collection = [];
|
List<string> collection =
|
||||||
|
[
|
||||||
|
$"BuildNumber:{webApplicationBuilder.Configuration.GetValue<string>("BuildNumber")};",
|
||||||
|
$"GitCommitSeven:{webApplicationBuilder.Configuration.GetValue<string>("GitCommitSeven")};"
|
||||||
|
];
|
||||||
_ = webApplicationBuilder.Services.AddHttpClient();
|
_ = webApplicationBuilder.Services.AddHttpClient();
|
||||||
_ = webApplicationBuilder.Services.AddHostedService<Worker>();
|
_ = webApplicationBuilder.Services.AddHostedService<Worker>();
|
||||||
_ = webApplicationBuilder.Services.AddSingleton(collection);
|
_ = webApplicationBuilder.Services.AddSingleton(collection);
|
||||||
@ -38,13 +42,13 @@ public class Program
|
|||||||
}
|
}
|
||||||
using WebApplication webApplication = webApplicationBuilder.Build();
|
using WebApplication webApplication = webApplicationBuilder.Build();
|
||||||
logger = webApplication.Services.GetRequiredService<ILogger<Program>>();
|
logger = webApplication.Services.GetRequiredService<ILogger<Program>>();
|
||||||
if (string.IsNullOrEmpty(appSettings.Company))
|
if (string.IsNullOrEmpty(appSettings.FileWatcherConfiguration.Company))
|
||||||
{
|
{
|
||||||
Environment.ExitCode = -1;
|
Environment.ExitCode = -1;
|
||||||
_ = webApplication.StopAsync();
|
_ = webApplication.StopAsync();
|
||||||
}
|
}
|
||||||
logger.LogInformation("Starting Web Application");
|
logger.LogInformation("Starting Web Application");
|
||||||
logger.LogCritical("{Company}", appSettings.Company);
|
logger.LogCritical("{Company}", appSettings.FileWatcherConfiguration.Company);
|
||||||
await webApplication.RunAsync();
|
await webApplication.RunAsync();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
24
Worker.cs
24
Worker.cs
@ -15,7 +15,7 @@ public partial class Worker : BackgroundService
|
|||||||
|
|
||||||
public override Task StopAsync(CancellationToken cancellationToken)
|
public override Task StopAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (_AppSettings.Helper == nameof(Helpers.HelperCamstarOracle))
|
if (_AppSettings.FileWatcherConfiguration.Helper == nameof(Helpers.HelperCamstarOracle))
|
||||||
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Down, cancellationToken);
|
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Down, cancellationToken);
|
||||||
return base.StopAsync(cancellationToken);
|
return base.StopAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
@ -25,7 +25,7 @@ public partial class Worker : BackgroundService
|
|||||||
_Logger = logger;
|
_Logger = logger;
|
||||||
_AppSettings = appSettings;
|
_AppSettings = appSettings;
|
||||||
_HttpClientFactory = httpClientFactory;
|
_HttpClientFactory = httpClientFactory;
|
||||||
logger.LogInformation("{buildNumber}-{gitCommitSeven}", _AppSettings.BuildNumber, _AppSettings.GitCommitSeven);
|
logger.LogInformation(string.Join(Environment.NewLine, collection));
|
||||||
try
|
try
|
||||||
{ logger.LogInformation("<{folder}>", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); }
|
{ logger.LogInformation("<{folder}>", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); }
|
||||||
catch (Exception) { }
|
catch (Exception) { }
|
||||||
@ -35,18 +35,18 @@ public partial class Worker : BackgroundService
|
|||||||
|
|
||||||
private void BodyInner(CancellationToken cancellationToken)
|
private void BodyInner(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
_Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
_Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.FileWatcherConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
||||||
if (_First is null || _First.Value)
|
if (_First is null || _First.Value)
|
||||||
{
|
{
|
||||||
_First = false;
|
_First = false;
|
||||||
if (_AppSettings.Helper == nameof(Helpers.HelperCamstarOracle))
|
if (_AppSettings.FileWatcherConfiguration.Helper == nameof(Helpers.HelperCamstarOracle))
|
||||||
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Up, cancellationToken);
|
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Up, cancellationToken);
|
||||||
}
|
}
|
||||||
if (!Directory.Exists(_AppSettings.WatchDirectory))
|
if (!Directory.Exists(_AppSettings.FileWatcherConfiguration.WatchDirectory))
|
||||||
_ = Directory.CreateDirectory(_AppSettings.WatchDirectory);
|
_ = Directory.CreateDirectory(_AppSettings.FileWatcherConfiguration.WatchDirectory);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_ = _AppSettings.Helper switch
|
_ = _AppSettings.FileWatcherConfiguration.Helper switch
|
||||||
{
|
{
|
||||||
nameof(Helpers.HelperNuget) => Helpers.HelperNuget.Sync(_AppSettings, _Logger),
|
nameof(Helpers.HelperNuget) => Helpers.HelperNuget.Sync(_AppSettings, _Logger),
|
||||||
nameof(Helpers.HelperTCP) => Helpers.HelperTCP.ReadWrite(_AppSettings, _Logger),
|
nameof(Helpers.HelperTCP) => Helpers.HelperTCP.ReadWrite(_AppSettings, _Logger),
|
||||||
@ -64,28 +64,28 @@ public partial class Worker : BackgroundService
|
|||||||
_ => throw new NotSupportedException()
|
_ => throw new NotSupportedException()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
_Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
_Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.FileWatcherConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Body(CancellationToken cancellationToken)
|
private async Task Body(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (!_IsWindowsService)
|
if (!_IsWindowsService)
|
||||||
{
|
{
|
||||||
_Logger.LogInformation("Set break point and skip to run {_AppSettings.Helper}!", _AppSettings.Helper);
|
_Logger.LogInformation("Set break point and skip to run {_AppSettings.FileWatcherConfiguration.Helper}!", _AppSettings.FileWatcherConfiguration.Helper);
|
||||||
throw new EvaluateException($"Set break point and skip to run {_AppSettings.Helper}!");
|
throw new EvaluateException($"Set break point and skip to run {_AppSettings.FileWatcherConfiguration.Helper}!");
|
||||||
}
|
}
|
||||||
if (!_IsWindowsService)
|
if (!_IsWindowsService)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < int.MaxValue; i++)
|
for (int i = 0; i < int.MaxValue; i++)
|
||||||
{
|
{
|
||||||
BodyInner(cancellationToken);
|
BodyInner(cancellationToken);
|
||||||
Thread.Sleep(_AppSettings.MillisecondsDelay);
|
Thread.Sleep(_AppSettings.FileWatcherConfiguration.MillisecondsDelay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (_IsWindowsService && !cancellationToken.IsCancellationRequested)
|
while (_IsWindowsService && !cancellationToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
BodyInner(cancellationToken);
|
BodyInner(cancellationToken);
|
||||||
await Task.Delay(_AppSettings.MillisecondsDelay, cancellationToken);
|
await Task.Delay(_AppSettings.FileWatcherConfiguration.MillisecondsDelay, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
35
package-lock.json
generated
35
package-lock.json
generated
@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "File-Watcher",
|
|
||||||
"lockfileVersion": 2,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"devDependencies": {
|
|
||||||
"prettier": "3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prettier": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "http://localhost:4873/prettier/-/prettier-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
|
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
|
||||||
"prettier": "bin/prettier.cjs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"prettier": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "http://localhost:4873/prettier/-/prettier-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
10
package.json
10
package.json
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"scripts": {
|
|
||||||
"prettier.check": "prettier . --check",
|
|
||||||
"prettier.write": "prettier . --write",
|
|
||||||
"garbage-collect": "git gc"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"prettier": "3.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user