bevy/crates
Shane Celis e72f4ef9e9
bug: Don't panic. Warn on missing file_watcher path. (new branch) (#13902)
I updated my 'main' branch, which accidentally closed the original PR
#13747. I'm reopening the this from an actual branch on my repo like I
should have done in the first place. Here's the original info from the
first PR:

* * *

# Problem

The `file_watcher` feature panics if the file_watcher's path "assets" is
not present. I stumbled upon this behavior when I was actually testing
against `embedded_watcher`. I had no "assets" directory and didn't need
one for [my project](https://github.com/shanecelis/bevy_plane_cut).

```text
$ cargo run --example simple; # Runs fine.
$ cargo run --example simple --feature embedded_watcher; # Panics
thread 'main' panicked at /Users/shane/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_asset-0.14.0-rc.2/src/io/source.rs:503:21:
Failed to create file watcher from path "assets", Error { kind: PathNotFound, paths: ["/Users/shane/Projects/bevy_plane_cut/assets"] }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

# Opinion

If a project runs without panicing, then adding the `file_watcher`
feature shouldn't cause it to panic.

# Suggested Solution

This PR suggests if the "assets" path does not exist, emit a warning
stating that the file watcher could not be created and why. All other
errors will be treated as before with a panic and a message.

```text
$ cargo run --example simple --feature embedded_watcher; # Panics
2024-06-08T08:55:11.385249Z  WARN bevy_asset::io::source: Skip creating file watcher because path "assets" does not exist.
2024-06-08T08:55:11.385291Z  WARN bevy_asset::io::source: AssetSourceId::Default does not have an AssetWatcher configured. Consider enabling the `file_watcher` feature.
```

The second warning is new and I'd prefer it didn't emit under this
condition, but I'll wait to see whether this is actually regarded as a
bug.

# Testing

No tests added. Compiled against my project and it demonstrated the
suggested behavior.

* * *

I changed the second warning to the following when the `file_watcher`
feature is present. When it's not present, it uses the same warning as
before.

```
024-06-09T01:22:16.880619Z  WARN bevy_asset::io::source: Skip creating file watcher because path "assets" does not exist.
2024-06-09T01:22:16.880660Z  WARN bevy_asset::io::source: AssetSourceId::Default does not have an AssetWatcher configured. Consider adding an "assets" directory.
```
2024-06-21 13:10:57 +00:00
..
bevy_a11y Update accesskit and accesskit_winit (#13841) 2024-06-17 15:08:53 +00:00
bevy_animation Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_app feat: add insert_after and insert_startup_before (#13941) 2024-06-20 01:02:16 +00:00
bevy_asset bug: Don't panic. Warn on missing file_watcher path. (new branch) (#13902) 2024-06-21 13:10:57 +00:00
bevy_audio Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_color Allow bevy_color use without bevy_reflect support (#13870) 2024-06-16 15:47:30 +00:00
bevy_core Determine msrv for every standalone bevy_* crate. (#13211) 2024-05-13 18:26:41 +00:00
bevy_core_pipeline Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_derive Deprecate dynamic plugins (#13080) 2024-05-20 20:01:28 +00:00
bevy_dev_tools Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_diagnostic Poll system information in separate tasks (#13693) 2024-06-10 19:06:22 +00:00
bevy_dylib Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_dynamic_plugin Deprecate dynamic plugins (#13080) 2024-05-20 20:01:28 +00:00
bevy_ecs Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_encase_derive Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_gilrs Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_gizmos Use u32 for all resolution/subdivision fields in bevy_gizmos (#13927) 2024-06-19 17:28:10 +00:00
bevy_gltf Add labels to Gltf Node and Mesh assets (#13558) 2024-06-05 23:10:33 +00:00
bevy_hierarchy Fix EntityCommands::despawn docs (#13774) 2024-06-09 17:59:19 +00:00
bevy_input Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_internal Upstream CorePlugin from bevy_mod_picking (#13677) 2024-06-15 11:59:57 +00:00
bevy_log Improve error handling for log filter (#13897) 2024-06-19 13:46:03 +00:00
bevy_macro_utils Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_math Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_mikktspace Fixed a link to Blender's mikktspace docs (#13924) 2024-06-19 12:37:10 +00:00
bevy_pbr Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_picking Upstream CorePlugin from bevy_mod_picking (#13677) 2024-06-15 11:59:57 +00:00
bevy_ptr add Debug for ptr types (#13498) 2024-05-24 21:25:11 +00:00
bevy_reflect bevy_reflect: Improve reflection serialization error messages (#13867) 2024-06-17 18:13:46 +00:00
bevy_render Use u32 for resolution/subdivision in primitive meshing (#13930) 2024-06-20 00:58:21 +00:00
bevy_scene Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_sprite bug: Fix 9-slice textures with asymmetric borders. (#13921) 2024-06-19 17:30:18 +00:00
bevy_state Move StateTransitionSteps registration to states plugin (#13939) 2024-06-20 00:57:40 +00:00
bevy_tasks fix: upgrade to winit v0.30 (#13366) 2024-06-03 13:06:48 +00:00
bevy_text Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_time Make time_system public (#13879) 2024-06-16 18:07:41 +00:00
bevy_transform Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_ui Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_utils Fix parameter name of all_tuples's document (#13896) 2024-06-17 15:17:24 +00:00
bevy_window Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_winit Correctly check physical size when updating winit (#13942) 2024-06-20 11:22:47 +00:00