ContainerFileSystemWatcher 0.1.2
dotnet add package ContainerFileSystemWatcher --version 0.1.2
NuGet\Install-Package ContainerFileSystemWatcher -Version 0.1.2
<PackageReference Include="ContainerFileSystemWatcher" Version="0.1.2" />
paket add ContainerFileSystemWatcher --version 0.1.2
#r "nuget: ContainerFileSystemWatcher, 0.1.2"
// Install ContainerFileSystemWatcher as a Cake Addin #addin nuget:?package=ContainerFileSystemWatcher&version=0.1.2 // Install ContainerFileSystemWatcher as a Cake Tool #tool nuget:?package=ContainerFileSystemWatcher&version=0.1.2
ContainerFileSystemWatcher
A custom 'FileSystemWatcher' that works within a container (to monitor a mounted volume)
Installation
You can install the ContainerFileSystemWatcher
package via NuGet:
.NET CLI
dotnet add package ContainerFileSystemWatcher
Package-Manager
Install-Package ContainerFileSystemWatcher
Usage
Basic Setup
Below is an example of how to set up and use the ContainerFileSystemWatcher in a console application.
Program.cs
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ContainerFileSystemWatcher;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleFileSystemWatcher.Demo;
internal class Program
{
static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
//pull internal folder path from docker-compose (could just hard code to /watch)
var folderPath = host.Services.GetRequiredService<IConfiguration>()["FOLDER_TO_WATCH"];
if (string.IsNullOrWhiteSpace(folderPath))
{
Console.WriteLine("Please set the FOLDER_TO_WATCH environment variable.");
return;
}
var watcher = host.Services.GetRequiredService<IContainerFileWatcher>();
//attach this Action to the OnFileChanged event.
watcher.OnFileChanged += (fileChangeType, filePathAndName) =>
{
Console.WriteLine($"File changed: {fileChangeType}/{filePathAndName}");
};
//Watch the folderpath and poll it every 500 milliseconds
watcher.AddWatch(folderPath, TimeSpan.FromMilliseconds(500));
Console.WriteLine($"Watching {folderPath} for changes.");
Console.WriteLine();
Console.ReadLine();
}
static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
//Add ContainerFileWatcher to the IServiceCollection
services.AddContainerFileSystemWatcher();
})
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
});
}
Docker Setup
You can configure the directories to watch and the polling interval via the docker-compose file. docker-compose.yml
version: '3.8'
services:
filewatcher:
image: yourimage:latest
environment:
- WATCH_FOLDERS=/watch
volumes:
- /path/to/watch1:/watch
Environment Variables
WATCH_FOLDERS: Comma-separated list of directories to watch.
License
This project is licensed under the MIT License. See the LICENSE file for more information.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.Logging (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging.Console (>= 8.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ContainerFileSystemWatcher:
Package | Downloads |
---|---|
ContainerConfigurationMonitor
A .NET library for monitoring configuration file changes in containers. |
GitHub repositories
This package is not used by any popular GitHub repositories.