A flexible event-driven pipeline for file system changes
$ dotnet add package FileFlower.DependencyInjectionThis package provides an ability to register file watcher in the DI container and host it as a HostedService. It works on top of the FileFlower.Core package, which is a lightweight, flexible .NET library that enables event-driven, pipeline-based processing of file system changes. Designed for building modular workflows around directory watching, FileFlower lets you:
FileFlower is ideal for building file ingestion services, automated workflows, and data pipelines that work with file systems in a reactive and maintainable manner.
builder.Services.AddFileWatchers(configuration =>
{
configuration.ForDirectory("./incoming/", watcher =>
{
watcher.WhenResourceCreated(rule => rule.Filter("*.txt").Filter("*.csv").WithOrLogic())
.AddStep(async context =>
{
Console.WriteLine($"CLIENT | Processed txt or csv: {context.FileInfo.FullName}");
});
});
configuration.ForDirectory("./incoming_v2/", watcher =>
{
watcher.WhenResourceCreated(rule => rule.Filter("*.txt").Filter("*.csv").WithOrLogic())
.AddStep(async context =>
{
Console.WriteLine($"CLIENT | Processed txt or csv: {context.FileInfo.FullName}");
});
watcher.WhenResourceDeleted(rule => rule.Filter("*.txt"))
.AddStep(async context =>
{
Console.WriteLine($"CLIENT | Processed txt or csv (deleted): {context.FileInfo.FullName}");
});
});
}).AddFileWatcherHostedService();
Follow these steps to create, version, and deploy your NuGet package for FileFlower projects:
Add your code changes
Make all necessary code updates or feature additions in your local branch.
Increase the NuGet version
Update the version number inside the Directory.Build.props file to reflect your new release.
Update the changelog
Add a version description to the CHANGELOG.md file under each NuGet project, documenting your changes.
(Optional) Update the README
Modify the README.md under each NuGet project if you want to update usage instructions or examples.
Create a pull request
Push your changes and create a pull request targeting the master branch.
Merge and tag
After your PR is merged to master, create a Git tag on GitHub corresponding to the new NuGet package version (e.g., v1.2.3).
Wait for deployment
The CI/CD pipeline will automatically build and deploy the package to the NuGet feed. Wait until the package is available on nuget.org.
Update the NuGet API key (every 3 months)
For security, update the NuGet API key periodically (once every three months) in your CI/CD environment to maintain deployment access.