FileFlower.Core 1.0.1

dotnet add package FileFlower.Core --version 1.0.1
                    
NuGet\Install-Package FileFlower.Core -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FileFlower.Core" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FileFlower.Core" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="FileFlower.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FileFlower.Core --version 1.0.1
                    
#r "nuget: FileFlower.Core, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FileFlower.Core@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FileFlower.Core&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=FileFlower.Core&version=1.0.1
                    
Install as a Cake Tool

FileFlower

Overview

FileFlower 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:

  • React to file creation, modification, deletion events
  • Filter and route files by patterns and extensions
  • Define processing pipelines with pre- and post-steps
  • Easily chain multiple processors in a clean, reusable way

FileFlower is ideal for building file ingestion services, automated workflows, and data pipelines that work with file systems in a reactive and maintainable manner.


Features

  • Monitor directories and subdirectories for file changes
  • Filter files by pattern, extension, or custom rules
  • Define composable pipeline steps for processing files
  • Support for error handling, retries, and archiving
  • Minimal dependencies, cross-platform (.NET 8+)

Getting Started

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();

How to Create and Deploy a NuGet Package

Follow these steps to create, version, and deploy your NuGet package for FileFlower projects:

  1. Add your code changes
    Make all necessary code updates or feature additions in your local branch.

  2. Increase the NuGet version
    Update the version number inside the Directory.Build.props file to reflect your new release.

  3. Update the changelog
    Add a version description to the CHANGELOG.md file under each NuGet project, documenting your changes.

  4. (Optional) Update the README
    Modify the README.md under each NuGet project if you want to update usage instructions or examples.

  5. Create a pull request
    Push your changes and create a pull request targeting the master branch.

  6. 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).

  7. 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.

  8. 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.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FileFlower.Core:

Package Downloads
FileFlower.DependencyInjection

A flexible event-driven pipeline for file system changes

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 138 6/25/2025
1.0.0 135 6/25/2025
0.0.1-rc.1 113 6/24/2025
0.0.1-alpha.6 68 6/20/2025
0.0.1-alpha.5 62 6/20/2025
0.0.1-alpha.4 67 6/20/2025
0.0.1-alpha.3 62 6/20/2025
0.0.1-alpha.2 69 6/20/2025
0.0.1-alpha.1 67 6/20/2025