Commit Graph

201 Commits

Author SHA1 Message Date
Félix Saparelli
e33fd8f5b5
Remove borrowing that was introduced in previous release 2019-10-28 22:32:08 +13:00
Félix Saparelli
bb02d84661
Re-export useful things 2019-10-28 18:56:06 +13:00
Félix Saparelli
6c653e8e52
Return owned Args from Handler instead of borrowed 2019-10-28 18:55:39 +13:00
Wayne Warren
720ff44b71 #133: leave Handler initialization to watch caller 2019-10-28 18:17:25 +13:00
Félix Saparelli
a1fbad0180
Fix last clippy lints 2019-10-28 13:48:57 +13:00
Félix Saparelli
f7e1639ed1
Upgrade to winapi 0.3 2019-10-28 12:17:00 +13:00
Félix Saparelli
e563ae8fc1
Enable anti-unwrap lints 2019-10-28 01:12:10 +13:00
Félix Saparelli
5f7123ecbe
Lint tests too 2019-10-28 00:37:24 +13:00
Félix Saparelli
a3c5bd7201
Run formatter 2019-10-28 00:31:52 +13:00
Félix Saparelli
d47419e385
Forbid a whole lot more clippy stuff 2019-10-28 00:31:26 +13:00
Félix Saparelli
b842c149b6
Use Rust 2018 2019-10-27 23:58:00 +13:00
Félix Saparelli
f56e838fb9
Lints and clippys 2019-10-27 23:47:35 +13:00
Félix Saparelli
6b028cb649
Add builder for Args 2019-10-27 23:29:58 +13:00
Félix Saparelli
8e84eb6b04
Add semver policy statement 2019-10-27 22:54:44 +13:00
Josh Soref
0d4a2270ec spelling: supporting 2019-10-14 11:09:51 +13:00
Ryan James Spencer
e90bbcb9bd Support a dedicated ignore file
ref. https://github.com/passcod/cargo-watch/issues/127

This adds support for a dedicated ignore file by the name of `.ignore` a
la `fd`, `ripgrep`, et. al.

This purely just mimics what `Gitignore` is doing except it doesn't
ignore `.git` directories. There might be more I need to tweak and the
interface might be too obtuse, but this is a first pass.

I've also added a `--no-ignore` flag which ignores both `.gitignore` and
the dedicated `.ignore`. It might make sense to add a specific flag that
ignores `.ignore` but respects `.gitignore` to support the old
behaviour, but I wasn't sure what to name it.
2019-10-12 14:13:57 +13:00
Igor Gnatenko
22f5408bc0 Drop mktemp dependency (#115)
It is not used and depends on very very old version of uuid.

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2019-03-12 00:49:17 +13:00
SpiralP
dbc52e012e [run] Always canonicalize input paths (#113)
A client may pass non-canonicalized paths into `watch`, and these are therefore not matched against the filters correctly. Thus, some events could call a Handler's `on_update` method even when an ignored file was changed.

See repro: https://github.com/SpiralP/rust-cargo-watch-test

This bug was introduced in aae5a216b0.
2019-03-04 11:40:35 +13:00
Félix Saparelli
4918b123d9 [run] Restore clearing of the screen on initial run 2019-02-18 21:26:21 +13:00
Josh Gao
6342f86c10 [errors] Fix infinite recursion in fmt::Display for Error (#111) 2019-02-15 17:02:07 +13:00
Félix Saparelli
8eb90738de [run] Move "once" logic to be entirely within handler 2019-01-27 15:51:49 +13:00
Félix Saparelli
4ceb70f6bf [docs] Fix logic inversion in on_manual doc comment 2019-01-27 10:24:24 +13:00
Félix Saparelli
578ffa1deb [run] Fix outdated comment in ExecHandler 2019-01-26 17:42:36 +13:00
Félix Saparelli
5846b64020 [run] Further dry the ExecHandler 2019-01-26 17:32:48 +13:00
Félix Saparelli
3dd2f797ab [process] Remove some more unwrap 2019-01-26 17:26:33 +13:00
Félix Saparelli
6a23f77687 [run] Pass ops by reference when possible 2019-01-26 17:20:29 +13:00
Félix Saparelli
ede5505a6b [run] Dry spawning the child process 2019-01-26 17:16:07 +13:00
Félix Saparelli
5e44cafb94 [windows] Attempt to use tput to clear the screen
In some situations, this may clear the screen better than a call to
`cls`, and in all other cases `cls` is called anyway.

May help #99
2019-01-26 15:22:09 +13:00
Félix Saparelli
6f473bcd87 [meta] Run formatter 2019-01-26 15:15:27 +13:00
Félix Saparelli
aae5a216b0 [api] Make watchexec take a Handler rather than a callback
Instead of special-casing the callback, which is the path least-taken,
switch the internals to a Handler model, where the default behaviour is
an implementation of a Handler, and external callers can implement their
own Handlers and pass them in.

While doing so, change all unwraps in run::run to returning Errs, and
expand the watchexec Error enum to accommodate. That should make it
easier to use as a library.

Also, differentiate between "manual" and "on update" runs. For now the
only manual run is the initial run, but this paves the way for e.g.
keyboard- or signal- triggered runs.
2019-01-26 14:45:13 +13:00
Félix Saparelli
ac3a4f0717 [pathop] Revert changes adding a time field 2019-01-26 14:40:30 +13:00
David Ziegler
7b3daeef9c Major changes for c bindings integration as third party crate (see project: github/InfinityMod/watchexec_c).
Changed version to 1.9.3 for third party crate compatibility detection.
2019-01-23 18:56:09 +01:00
Magnus Bergmark
9fd25dd667
Use setsid() instead of setpgid()
This makes it possible to run commands that allocates TTYs and still
capture their output and reap the process on completion.

> setpgid — set process group ID for job control
> setsid — create session and set process group ID

With this in place, the `waitpid` call detects that the process has
exited even if the process allocated a TTY, and is able to unblock the
runner and continue.

Further, the output of the command is also shown in the controlling
terminal.
2019-01-17 13:21:27 +01:00
Félix Saparelli
f6b16813aa Cfg off remaining items for a clean win/mac build
Closes #98
2018-10-05 20:56:06 +13:00
Félix Saparelli
ba23ed09f6 Fix tests 2018-09-09 16:16:40 +12:00
Félix Saparelli
dc712197c0 1.9.2: revert whitespace changes 2018-09-09 16:03:01 +12:00
Félix Saparelli
3c1eaa51f7 Add missing impl for StdError 2018-09-09 10:38:07 +12:00
Félix Saparelli
2c5c145042 Extract errors into one thing and return a result more often 2018-09-08 23:51:44 +12:00
Félix Saparelli
a6163cc599 Formatting 2018-09-08 20:08:36 +12:00
Félix Saparelli
9c60148b66
Merge pull request #95 from watchexec/wrap-whitespace-in-args
Wrap whitespace and quotes in command arguments
2018-09-08 19:44:39 +12:00
Félix Saparelli
718647e386
Merge branch 'master' into fix_panic 2018-09-08 19:43:20 +12:00
Félix Saparelli
7375db5ce9 Also wrap when there’s quotes but no whitespace 2018-08-22 08:17:36 +12:00
Félix Saparelli
21d4080183 Wrap whitespace in arguments
Fixes #82
Fixes #87
2018-08-22 07:15:20 +12:00
Félix Saparelli
39a4a52f80 Restore 1.20 compatibility 2018-08-22 07:14:55 +12:00
Félix Saparelli
ef0e6df8d4 Remove duplication between main/lib files 2018-08-22 00:10:57 +12:00
Félix Saparelli
f61b7507af Update dependencies 2018-08-19 20:58:47 +12:00
Félix Saparelli
31fdca564a
Merge pull request #93 from tailhook/max_user_watches
Add a warning and fallback on polling mode if limit exceeded
2018-08-19 20:29:44 +12:00
Félix Saparelli
93bd1d9881
Merge pull request #77 from bruceg/master
Fix some default ignore pattern issues
2018-08-19 20:23:49 +12:00
Paul Colomiets
a2d0a251da Add a warning and fallback on polling mode if limit exceeded
Works only on linux (not sure how error is named on other systems):
```
*** System notification limit is too small, falling back to polling
mode.
*** For better performance increase system limit:
   sysctl fs.inotify.max_user_watches=524288
*** Polling for changes every 1000 ms
```

Fixes #62
2018-08-02 19:36:50 +03:00
Oliver Jan Krylow
8de93a8fd2
Bumps __nix__ to __0.11.0__ in order to support OpenBSD 6.3+. 2018-07-30 21:20:12 +02:00