6 releases (stable)
Uses new Rust 2024
| new 1.6.1 | Nov 10, 2025 |
|---|---|
| 1.6.0 | Nov 9, 2025 |
| 1.4.0 | Oct 6, 2025 |
| 0.2.0 | Oct 6, 2025 |
| 0.1.0 | Sep 27, 2025 |
#147 in Configuration
284 downloads per month
30KB
713 lines
Watchers
A CLI tool for managing file system watchers that automatically create git commits when files change. Each watcher runs as a systemd user service, allowing you to monitor multiple directories simultaneously.
Features
- Multiple named watchers: Create and manage multiple watchers, each monitoring a different directory
- Debounced commits: Only creates commits after file activity stops
- Automatic push: Optionally push commits to remote repository
- Systemd integration: Watchers run as background services with automatic restart
Installation
cargo install --path .
or
cargo install watchers
Build from source:
git clone https://github.com/TenzinPlatter/watchers.git
cd watchers
cargo build --release
Quick Start
- Create a new watcher:
watchers create my-project
# You'll be prompted for the directory path to watch
-
The watcher is now running! It will:
- Monitor the specified directory for file changes
- Wait for the configured delay after changes stop
- Automatically create a git commit
- Push to remote if
auto_pushis enabled
-
Manage your watchers:
# List all watchers
watchers list
# Stop a watcher
watchers stop my-project
# Start a watcher
watchers start my-project
# Delete a watcher
watchers delete my-project
Configuration
Watcher configurations are stored as YAML files in ~/.config/watchers/<name>.yml:
name: my-project
watch_dir: /path/to/your/project
commit_delay_secs: 60 # Wait 60 seconds after last change
auto_push: true # Automatically push commits
You can manually edit these files to adjust settings, then restart the watcher:
watchers stop my-project
watchers start my-project
How It Works
- Each watcher runs as a systemd user service (
watchers@<name>.service) - The service monitors the configured directory for file changes
- When changes occur a timer is started
- If no changes occur for
commit_delay_secsseconds then the changes are committed - If
auto_pushis enabled, the commit is pushed to the remote repository
Development
# Build
cargo build
# Run a command
cargo run -- list
cargo run -- create test-watcher
# Run with debug logging
RUST_LOG=debug cargo run -- __daemon my-project
# Format code
cargo fmt
# Run linter
cargo clippy
Requirements
- Linux with systemd (uses systemd user services)
- Git repositories in watched directories
Dependencies
~26–43MB
~705K SLoC