Executes commands in response to file modifications
Go to file
Félix Saparelli 656c0d8fd2
Fix action throttling
Specifically, on loop start the timeout would be for the full throttle duration,
which is not correct if some time has passed or the loop goes on recycle
2021-08-22 20:29:57 +12:00
.github/workflows Temporarily disable rpm releases 2021-07-31 06:36:57 +12:00
bin Add citation.cff 2021-07-29 00:45:13 +12:00
cli Use lib v1 for cli 2021-08-16 21:49:22 +12:00
completions Drop debounce to 100ms (#168) 2021-07-21 23:44:24 +12:00
doc Add --no-process-group flag 2021-07-22 00:56:35 +12:00
lib Fix action throttling 2021-08-22 20:29:57 +12:00
test Remask received signal after re-raising it 2016-12-15 09:41:10 -05:00
.editorconfig Handle signals into events 2021-08-17 21:41:13 +12:00
.gitignore Add rpm support with cargo-generate-rpm 2021-07-10 03:48:12 +12:00
Cargo.lock Allow an outcome to be determined by the action handler without &mut! 2021-08-22 18:56:57 +12:00
Cargo.toml Turn off panic=abort 2021-05-09 16:29:50 +12:00
CITATION.cff cli: v1.17.1 2021-07-31 06:37:29 +12:00
CONTRIBUTING.md Split the versioning of the lib and cli (in theory) 2021-05-01 04:22:33 +12:00
LICENSE Create LICENSE 2016-09-18 16:43:26 -04:00
README.md Merge branch 'docs/website' 2021-07-22 00:18:13 +12:00

CI status

Watchexec

Software development often involves running the same commands over and over. Boring!

watchexec is a simple, standalone tool that watches a path and runs a command whenever it detects modifications.

Example use cases:

  • Automatically run unit tests
  • Run linters/syntax checkers

Features

  • Simple invocation and use, does not require a cryptic command line involving xargs
  • Runs on OS X, Linux, and Windows
  • Monitors current directory and all subdirectories for changes
  • Coalesces multiple filesystem events into one, for editors that use swap/backup files during saving
  • Loads .gitignore and .ignore files
  • Uses process groups to keep hold of forking programs
  • Provides the paths that changed in environment variables
  • Does not require a language runtime, not tied to any particular language or ecosystem
  • And more!

Quick start

Watch all JavaScript, CSS and HTML files in the current directory and all subdirectories for changes, running npm run build when a change is detected:

$ watchexec -e js,css,html npm run build

Call/restart python server.py when any Python file in the current directory (and all subdirectories) changes:

$ watchexec -r -e py -- python server.py

More usage examples: in the CLI README!

Install

  • As pre-built binary package: https://watchexec.github.io/downloads/
  • With your package manager for Arch, Homebrew, Nix, Scoop, Chocolatey…
  • From source with Cargo: cargo install watchexec-cli

All options in detail: in the CLI README.

Extend

  • watchexec library: to create more specialised watchexec-powered tools! such as:
  • clearscreen: to clear the (terminal) screen on every platform.
  • command group: to run commands in process groups.
  • notify: to respond to file modifications (third-party).
  • globset: to match globs (third-party).