diff --git a/.build.Nuke/Build.Container.cs b/.build.Nuke/Build.Container.cs
index 45db07ad5a53a32d4a440303f84d5daac6014ae9..f80c5a517bbabceb138abb20e185451c92b1955e 100644
--- a/.build.Nuke/Build.Container.cs
+++ b/.build.Nuke/Build.Container.cs
@@ -1,9 +1,9 @@
using Nuke.Common;
-using Serilog;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.Docker;
-using System.Linq;
+using Serilog;
using System;
+using System.Linq;
namespace SuCoS;
@@ -21,7 +21,7 @@ sealed partial class Build : NukeBuild
[Parameter("GitLab Project Full Address")]
readonly string containerDefaultRID = "linux-x64";
- Target CreateContainer => _ => _
+ public Target CreateContainer => _ => _
.DependsOn(Publish)
.DependsOn(CheckNewCommits)
.OnlyWhenStatic(() => runtimeIdentifier != "win-x64")
diff --git a/.build.Nuke/Build.GitLab.cs b/.build.Nuke/Build.GitLab.cs
index 69fc805d88039e42c2ab40ff48c0d274400614f1..f9b587950ea34b661e50b9e6ea85ff22c3aa0ade 100644
--- a/.build.Nuke/Build.GitLab.cs
+++ b/.build.Nuke/Build.GitLab.cs
@@ -1,14 +1,14 @@
+using Nuke.Common;
+using Nuke.Common.CI.GitLab;
+using Nuke.Common.IO;
+using Nuke.Common.Tools.Git;
+using Serilog;
using System;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Net.Http;
using System.Net.Http.Json;
-using Nuke.Common;
-using Nuke.Common.CI.GitLab;
-using Nuke.Common.IO;
-using Nuke.Common.Tools.Git;
-using Serilog;
namespace SuCoS;
@@ -42,7 +42,7 @@ sealed partial class Build : NukeBuild
/// One for each runtime identifier.
///
///
- Target CreatePackage => _ => _
+ public Target CreatePackage => _ => _
.DependsOn(Publish)
.DependsOn(CheckNewCommits)
.Requires(() => gitlabPrivateToken)
@@ -97,7 +97,7 @@ sealed partial class Build : NukeBuild
/// Creates a release in the GitLab repository.
///
///
- Target GitLabCreateRelease => _ => _
+ public Target GitLabCreateRelease => _ => _
.DependsOn(GitLabCreateTag)
.OnlyWhenStatic(() => HasNewCommits)
.Requires(() => gitlabPrivateToken)
diff --git a/.build.Nuke/Build.Test.cs b/.build.Nuke/Build.Test.cs
index 8ed7a107a60b58af1a90972b62b75e69641efd79..766b35131c848b8570bcd4e7504a6c6784ca1a98 100644
--- a/.build.Nuke/Build.Test.cs
+++ b/.build.Nuke/Build.Test.cs
@@ -1,13 +1,13 @@
using Nuke.Common;
+using Nuke.Common.IO;
+using Nuke.Common.Tools.Coverlet;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.OpenCover;
-using static Nuke.Common.Tools.ReportGenerator.ReportGeneratorTasks;
using Nuke.Common.Tools.ReportGenerator;
-using Nuke.Common.IO;
-using Nuke.Common.Tools.Coverlet;
-using static Nuke.Common.Tools.Coverlet.CoverletTasks;
using Serilog;
using System;
+using static Nuke.Common.Tools.Coverlet.CoverletTasks;
+using static Nuke.Common.Tools.ReportGenerator.ReportGeneratorTasks;
namespace SuCoS;
@@ -17,14 +17,14 @@ namespace SuCoS;
///
sealed partial class Build : NukeBuild
{
- AbsolutePath testDirectory => RootDirectory / "test";
- AbsolutePath testDLLDirectory => testDirectory / "bin" / "Debug" / "net7.0";
- AbsolutePath testAssembly => testDLLDirectory / "test.dll";
- AbsolutePath coverageDirectory => RootDirectory / "coverage-results";
- AbsolutePath coverageResultDirectory => coverageDirectory / "coverage";
- AbsolutePath coverageResultFile => coverageResultDirectory / "coverage.xml";
- AbsolutePath coverageReportDirectory => coverageDirectory / "report";
- AbsolutePath coverageReportSummaryDirectory => coverageReportDirectory / "Summary.txt";
+ static AbsolutePath testDirectory => RootDirectory / "test";
+ static AbsolutePath testDLLDirectory => testDirectory / "bin" / "Debug" / "net7.0";
+ static AbsolutePath testAssembly => testDLLDirectory / "test.dll";
+ static AbsolutePath coverageDirectory => RootDirectory / "coverage-results";
+ static AbsolutePath coverageResultDirectory => coverageDirectory / "coverage";
+ static AbsolutePath coverageResultFile => coverageResultDirectory / "coverage.xml";
+ static AbsolutePath coverageReportDirectory => coverageDirectory / "report";
+ static AbsolutePath coverageReportSummaryDirectory => coverageReportDirectory / "Summary.txt";
Target Test => _ => _
.DependsOn(Compile)
@@ -40,7 +40,7 @@ sealed partial class Build : NukeBuild
.SetFormat(CoverletOutputFormat.cobertura));
});
- Target TestReport => _ => _
+ public Target TestReport => _ => _
.DependsOn(Test)
.Executes(() =>
{
diff --git a/.build.Nuke/Build.Version.cs b/.build.Nuke/Build.Version.cs
index a87d89bfbe85dfa143d363d7541def2c20bc5795..eb19708d2436310fca5bb2d60c32c23c98f38b61 100644
--- a/.build.Nuke/Build.Version.cs
+++ b/.build.Nuke/Build.Version.cs
@@ -1,8 +1,8 @@
-using System.Linq;
using Nuke.Common;
using Nuke.Common.Tools.Git;
using Nuke.Common.Tools.GitVersion;
using Serilog;
+using System.Linq;
namespace SuCoS;
diff --git a/.build.Nuke/Configuration.cs b/.build.Nuke/Configuration.cs
index 2cb3ee5be91c5697ab856c805b54a814f3f9a850..5fde430f1c8c4bde89e9d149cb548dee483687e4 100644
--- a/.build.Nuke/Configuration.cs
+++ b/.build.Nuke/Configuration.cs
@@ -1,5 +1,5 @@
-using System.ComponentModel;
using Nuke.Common.Tooling;
+using System.ComponentModel;
namespace SuCoS;
diff --git a/source/BaseGeneratorCommand.cs b/source/BaseGeneratorCommand.cs
index d11b59fb40f08371d5e510d54f2786f6f8a4a5e8..3b216ca6114fc75140b1957e26057cf3db345bec 100644
--- a/source/BaseGeneratorCommand.cs
+++ b/source/BaseGeneratorCommand.cs
@@ -1,6 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
using Fluid;
using Fluid.Values;
using Serilog;
diff --git a/source/BuildCommand.cs b/source/BuildCommand.cs
index 92cceca8ac5ebd13e98ba1ef15c5c2dcc840a4b0..46f9bdcea84de99d57e5cd5af541b43ded7686ad 100644
--- a/source/BuildCommand.cs
+++ b/source/BuildCommand.cs
@@ -1,7 +1,3 @@
-using System;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
using Serilog;
using SuCoS.Models;
using SuCoS.Models.CommandLineOptions;
diff --git a/source/Helpers/FileUtils.cs b/source/Helpers/FileUtils.cs
index 25c490e9d3189ab8536a19e97253e13f7c73a54b..5125bb8e8cd36883ab8b9d8d876fb2ddac668245 100644
--- a/source/Helpers/FileUtils.cs
+++ b/source/Helpers/FileUtils.cs
@@ -1,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
using SuCoS.Models;
namespace SuCoS.Helpers;
diff --git a/source/Helpers/IFileWatcher.cs b/source/Helpers/IFileWatcher.cs
new file mode 100644
index 0000000000000000000000000000000000000000..75e2045ce2e54099c97281fbf73122d9fb28bf30
--- /dev/null
+++ b/source/Helpers/IFileWatcher.cs
@@ -0,0 +1,20 @@
+namespace SuCoS.Helpers;
+
+///
+/// The FileSystemWatcher object that monitors the source directory for file changes.
+///
+public interface IFileWatcher
+{
+ ///
+ /// Starts the file watcher to monitor file changes in the specified source path.
+ ///
+ /// The path to the source directory.
+ ///
+ /// The created FileSystemWatcher object.
+ void Start(string SourceAbsolutePath, Action