Commit Graph

277 Commits

Author SHA1 Message Date
Félix Saparelli
009ef2356f Deny 2018 idioms 2022-04-13 22:59:43 +12:00
David Calavera
20597802ad
Remove git2 as a dependency (#267)
This dependency cannot be sent between threads.
Instead use git-config which is a pure rust implementation to read git config files.

Uses the builtin values::Path struct to extract ignore paths.
It takes care of all the corner cases with how git interprets paths.
2022-04-04 11:43:30 +12:00
Félix Saparelli
17edfe663b Add library version to debug log 2022-03-15 23:25:54 +13:00
Félix Saparelli
465895ddec Upgrade notify 2022-03-14 12:57:49 +13:00
Félix Saparelli
72100217e8 Allow */foo filters to match foo (compat)
This is buggy behaviour that exists in <=1.17, and this patch restores it*

Per gitignore rules, this glob:

    */somefile

Will match:

    foo/somefile
    bar/somefile

But not:

    somefile

However, so far we’ve accepted this. As this is a breaking change, this patch
introduces a hack which lets us accept this behaviour, but clearly marks it as
a compatibility exception. In 2.0, this will be gone.

Fixes #258

* It only restores it on unices, because the behaviour cannot be restored in
  any reasonable manner on Windows. Ah well. It's not for long anyway.
2022-03-07 20:33:29 +13:00
Félix Saparelli
03aef187bd Let --exts and --filter work together
These two options are meant to work together: they are a union of filters
rather than competing. Thus:

    --exts toml,py --filter Gemfile

will match all of:

    foo.toml
    bar.py
    Gemfile

rather than matching no files at all because Gemfile doesn’t have an extension.

Fixes #259
2022-02-22 02:26:46 +13:00
Félix Saparelli
93da1ce780 Carry help through elevated errors properly
This might show the help text twice actually. Let's see...
2022-02-12 20:05:19 +13:00
Félix Saparelli
b77da446d8
Split known create errors to get proper help text 2022-02-12 19:49:02 +13:00
Félix Saparelli
3b64a41d80
Split fs watcher errors into their own enum 2022-02-12 19:37:24 +13:00
Félix Saparelli
965030b47b Add help text to FsWatcherCreate on Linux
See #251
2022-02-07 17:15:27 +13:00
Félix Saparelli
e40744f033 Elevate FsWatcherCreate errors to critical
See #251
2022-02-07 17:15:27 +13:00
Félix Saparelli
427e4a0d08 Change on_error to let the handler raise a CriticalError 2022-02-07 17:15:27 +13:00
Félix Saparelli
a890b0c916 Deduplicate paths in summarise_events_to_env
Fixes #253
2022-01-31 02:14:28 +13:00
Félix Saparelli
d7a305fc4c
Only run one outcome worker at a time 2022-01-31 00:05:43 +13:00
Félix Saparelli
2a9ee4de0b
Add detailed logging to process holder 2022-01-31 00:05:10 +13:00
Félix Saparelli
9a736c5eb9
Use newly &self Supervisor.wait to drop wait loop 2022-01-31 00:04:56 +13:00
Félix Saparelli
995d38078e
Use a tokio::watch in the supervisor to avoid races 2022-01-31 00:00:51 +13:00
Félix Saparelli
3e942c4d19
Double-check the ongoing atomic 2022-01-30 22:29:33 +13:00
Félix Saparelli
fdf4dcd13e
Provide opportunities for process holder to be queried concurrently to a wait() 2022-01-29 04:14:51 +13:00
Félix Saparelli
12ef0411f8
Don't log an error from outcome worker on graceful exit 2022-01-29 04:13:28 +13:00
Félix Saparelli
328700dd72
Stop holding supervisor handle 2022-01-29 04:13:08 +13:00
Félix Saparelli
c74eab5e91 Split up action in mods 2022-01-29 02:39:06 +13:00
Félix Saparelli
cc0c0be45a
Save a pointer by passing around an Arc<[T]> instead of Arc<Vec<T>> 2022-01-29 02:17:23 +13:00
Félix Saparelli
22f081a47b Spawn outcome apply separately from action loop 2022-01-29 02:08:34 +13:00
Félix Saparelli
10b31a0269 Wrap Supervisor in a RwLock 2022-01-29 02:08:34 +13:00
Félix Saparelli
a651d149b0 Replace AtomicTakes with HandleLocks in action 2022-01-29 02:08:34 +13:00
Félix Saparelli
b8ffa0c38a Formatting 2022-01-29 02:08:34 +13:00
Félix Saparelli
9845d48464 Add HandlerLock wrapper
This lets a Handler be shared (via a Tokio mutex)
2022-01-29 02:08:34 +13:00
Félix Saparelli
d9006a240d Remove keep_* config methods 2022-01-29 02:08:25 +13:00
Félix Saparelli
c444895593
Move swaplock to the root 2022-01-28 23:32:54 +13:00
Félix Saparelli
18a2b204e2 Hide io::errors when "waiting on process group" 2022-01-27 10:48:24 +13:00
Félix Saparelli
a6c997f470
globset: Always pass non-path events (#248) 2022-01-26 09:59:53 +13:00
Félix Saparelli
a5e756df7c Remove unused check_glob utility 2022-01-26 01:58:01 +13:00
Félix Saparelli
59d8388d7e globset: allow multipath events through if any path passes the filter 2022-01-26 01:51:48 +13:00
Félix Saparelli
42d64d0a6d
Fail all folders on extension check 2022-01-26 01:18:32 +13:00
Richard Huang
67452152c2
Fix spawing -> spawning typo 2022-01-24 21:52:16 -08:00
Félix Saparelli
c79a3bd12c Upgraded fmt 2022-01-22 14:00:42 +13:00
Félix Saparelli
c58333496e Fail files with no extension on extension check
Instead of passing them, I don't know what I was thinking
2022-01-18 23:56:10 +13:00
Félix Saparelli
044a8244f9
Almost forgot windows... 2022-01-16 20:17:32 +13:00
Félix Saparelli
8bd48c6290
Don't fail if we can't canonicalize an event path
e.g. for deletes
2022-01-16 20:06:44 +13:00
Félix Saparelli
4737937350
Remove generic tagged io error enum variant 2022-01-16 20:01:14 +13:00
Félix Saparelli
e2f27a1b01
Add context to last runtime io error
and remove generic runtime io error enum variant
2022-01-16 20:00:07 +13:00
Félix Saparelli
2ea62aec6a
Add context to last critical io error
and remove generic critical io error enum variant
2022-01-16 19:55:57 +13:00
Félix Saparelli
bc0fe6be70
Add context to io errors 2022-01-16 19:46:52 +13:00
Félix Saparelli
4085fc522c
Add SpecificIoError trait support for tagged error 2022-01-16 19:16:07 +13:00
Félix Saparelli
44a44a50d1
Move TaggedFiltererError into main error mod 2022-01-16 19:14:31 +13:00
Félix Saparelli
b29b3bf1e0
Add helper trait to add context to io errors 2022-01-16 19:09:50 +13:00
Félix Saparelli
c821faf383
Split error mod and split generic/specific io errors 2022-01-16 18:57:40 +13:00
Félix Saparelli
10b71847da
Add support for Pijul and Subversion 2022-01-16 16:13:05 +13:00
Félix Saparelli
3d32f2d24b
Hook up new globset signature 2022-01-16 16:09:53 +13:00