Executes commands in response to file modifications
Go to file
github-actions[bot] f9ec29a60b release: cli v1.20.3 (#359)
This is a release PR for **cli** to version **1.20.3**.

Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate.

```
$ cd crates/cli
$ cargo publish
```

To merge this release, review the changes then say:

| bors r+ p=10 |
|:-:|

---

_Edit release notes into the section below:_

<!-- do not change or remove this heading -->
### Release notes

- Dependencies are set manually for first-party deb and rpm packages, so they should install without error. A note that these are provided on a best-effort basis and not tested; when available you should prefer your distribution's packaging. (#292, #358)

Co-authored-by: Félix Saparelli <felix@passcod.name>
2022-06-29 03:48:50 +00:00
.github Automatic release notes for CLI (#360) 2022-06-29 02:21:57 +00:00
bin Remove obsolete bin/ scripts (#322) 2022-06-16 15:46:32 +00:00
completions Add --log-file so logs are easier to collect (#321) 2022-06-16 15:56:59 +00:00
crates release: cli v1.20.3 (#359) 2022-06-29 03:48:50 +00:00
doc Add --log-file so logs are easier to collect (#321) 2022-06-16 15:56:59 +00:00
test Remask received signal after re-raising it 2016-12-15 09:41:10 -05:00
.editorconfig Fix cli tests 2021-08-24 22:53:44 +12:00
.gitattributes Mark Cargo.lock as binary for merging (#305) 2022-06-11 07:38:31 +00:00
.gitignore Add rpm support with cargo-generate-rpm 2021-07-10 03:48:12 +12:00
.rustfmt.toml Apply tabs project-wide 2021-08-24 20:22:25 +12:00
CITATION.cff release: cli v1.20.3 (#359) 2022-06-29 03:48:50 +00:00
CONTRIBUTING.md Add test logging and dev-console debugging hints 2021-12-24 02:48:21 +13:00
Cargo.lock release: cli v1.20.3 (#359) 2022-06-29 03:48:50 +00:00
Cargo.toml Split into more crates (#307) 2022-06-15 03:25:05 +00:00
LICENSE Create LICENSE 2016-09-18 16:43:26 -04:00
README.md Add direct link to latest release in README.md (#327) 2022-06-16 23:58:52 +00:00
bors.toml Split into more crates (#307) 2022-06-15 03:25:05 +00:00
release.toml Setup cargo-release 2022-02-10 01:40:32 +13:00

README.md

Bors enabled CI status on main branch

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

Packaging status

  • As pre-built binary package: from Github, from the website
  • With your package manager for Arch, Homebrew, Nix, Scoop, Chocolatey…
  • From source with Cargo: cargo install watchexec-cli
  • From binary with Binstall: cargo binstall watchexec-cli

All options in detail: in the CLI README and in the manual page.

Augment

Watchexec pairs well with:

  • checkexec: to run only when source files are newer than a target file
  • just: a modern alternative to make
  • systemfd: socket-passing in development

Extend