Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/watchexec/watchexec
Executes commands in response to file modifications —— Maintenance status: on hold. I have no time for OSS currently; back late 2024.
https://github.com/watchexec/watchexec
command-line developer-tools file-watchers linux macos rust windows
Last synced: 3 days ago
JSON representation
Executes commands in response to file modifications —— Maintenance status: on hold. I have no time for OSS currently; back late 2024.
- Host: GitHub
- URL: https://github.com/watchexec/watchexec
- Owner: watchexec
- License: apache-2.0
- Created: 2016-09-18T20:41:31.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-13T22:44:04.000Z (about 2 months ago)
- Last Synced: 2024-10-13T22:49:35.388Z (about 2 months ago)
- Topics: command-line, developer-tools, file-watchers, linux, macos, rust, windows
- Language: Rust
- Homepage: https://watchexec.github.io/
- Size: 3.12 MB
- Stars: 5,299
- Watchers: 24
- Forks: 155
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
- awesome-rust - watchexec - ci.org/watchexec/watchexec.svg?branch=master">](https://travis-ci.org/watchexec/watchexec) (Applications / System tools)
- awesome-tools - watchexec/watchexec - Executes commands in response to file modifications (Command Line / Dependency Management)
- awesome-rust - watchexec
- awesome-rust-cn - watchexec
- awesome-hledger - watchexec - Automatically run a hledger command when the journal changes. Available in most linux distributions. (Related Tools)
- links - watchexec - Execute a command when a path is modified. (Command Line Tools)
- awesomeness - watchexec
- awesome-rust-zh - watchexec - 执行命令,以响应文件的修改[<img src="https://api.travis-ci.org/watchexec/watchexec.svg?branch=master">](https://travis-ci.org/watchexec/watchexec) (应用 / 系统工具)
- awesome-rust - watchexec - Executes commands in response to file modifications (Applications / System tools)
- awesome-rust - watchexec - ci.org/watchexec/watchexec.svg?branch=master">](https://travis-ci.org/watchexec/watchexec) (应用 Applications / 系统工具 System tools)
- jimsghstars - watchexec/watchexec - Executes commands in response to file modifications —— Maintenance status: on hold. I have no time for OSS currently; back late 2024. (Rust)
- awesome - watchexec/watchexec - Executes commands in response to file modifications —— Maintenance status: on hold. I have no time for OSS currently; back late 2024. (Rust)
- fucking-awesome-rust - watchexec - Executes commands in response to file modifications (Applications / System tools)
- fucking-awesome-rust - watchexec - Executes commands in response to file modifications (Applications / System tools)
- awesome-repositories - watchexec/watchexec - Executes commands in response to file modifications —— Maintenance status: on hold. I have no time for OSS currently; back late 2024. (Rust)
- awesome-rust-cn - watchexec - ci.org/watchexec/watchexec.svg?branch=master">](https://travis-ci.org/watchexec/watchexec) (应用 / System tools)
README
[![CI status on main branch](https://github.com/watchexec/watchexec/actions/workflows/tests.yml/badge.svg)](https://github.com/watchexec/watchexec/actions/workflows/tests.yml)
# 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
* Rebuild artifacts## 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 or STDIN
* Does not require a language runtime, not tied to any particular language or ecosystem
* [And more!](./crates/cli/#features)## 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](./crates/cli/#usage-examples)!
## Install
- With [your package manager](./doc/packages.md) for Arch, Debian, Homebrew, Nix, Scoop, Chocolatey…
- From binary with [Binstall](https://github.com/cargo-bins/cargo-binstall): `cargo binstall watchexec-cli`
- As [pre-built binary package from Github](https://github.com/watchexec/watchexec/releases/latest)
- From source with Cargo: `cargo install --locked watchexec-cli`All options in detail: [in the CLI README](./crates/cli/#installation),
in the online help (`watchexec -h`, `watchexec --help`, or `watchexec --manual`),
and [in the manual page](./doc/watchexec.1.md).## Augment
Watchexec pairs well with:
- [checkexec](https://github.com/kurtbuilds/checkexec): to run only when source files are newer than a target file
- [just](https://github.com/casey/just): a modern alternative to `make`
- [systemfd](https://github.com/mitsuhiko/systemfd): socket-passing in development## Extend
- [watchexec library](./crates/lib/): to create more specialised watchexec-powered tools.
- [watchexec-events](./crates/events/): event types for watchexec.
- [watchexec-signals](./crates/signals/): signal types for watchexec.
- [watchexec-supervisor](./crates/supervisor/): process lifecycle manager (the _exec_ part of watchexec).
- [clearscreen](https://github.com/watchexec/clearscreen): to clear the (terminal) screen on every platform.
- [command group](https://github.com/watchexec/command-group): to run commands in process groups.
- [ignore files](./crates/ignore-files/): to find, parse, and interpret ignore files.
- [project origins](./crates/project-origins/): to find the origin(s) directory of a project.
- [notify](https://github.com/notify-rs/notify): to respond to file modifications (third-party).### Downstreams
Selected downstreams of watchexec and associated crates:
- [cargo watch](https://github.com/watchexec/cargo-watch): a specialised watcher for Rust/Cargo projects.
- [cargo lambda](https://github.com/cargo-lambda/cargo-lambda): a dev tool for Rust-powered AWS Lambda functions.
- [create-rust-app](https://create-rust-app.dev): a template for Rust+React web apps.
- [dotter](https://github.com/supercuber/dotter): a dotfile manager.
- [ghciwatch](https://github.com/mercurytechnologies/ghciwatch): a specialised watcher for Haskell projects.
- [tectonic](https://tectonic-typesetting.github.io/book/latest/): a TeX/LaTeX typesetting system.