nushell/crates
Devyn Cairns af72a18785
Improve error messages for plugin protocol by removing #[serde(untagged)] (#12510)
# Description

In the plugin protocol, I had used `#[serde(untagged)]` on the `Stream`
variant to make it smaller and include all of the stream messages at the
top level, but unfortunately this causes serde to make really unhelpful
errors if anything fails to decode anywhere:

```
Error: nu:🐚:plugin_failed_to_decode

  × Plugin failed to decode: data did not match any variant of untagged enum PluginOutput
```

If you are trying to develop something using the plugin protocol
directly, this error is incredibly unhelpful. Even as a user, this
basically just says 'something is wrong'. With this change, the errors
are much better:

```
Error: nu:🐚:plugin_failed_to_decode

  × Plugin failed to decode: unknown variant `PipelineDatra`, expected one of `Error`, `Signature`, `Ordering`, `PipelineData` at line 2 column 37
```

The only downside is it means I have to duplicate all of the
`StreamMessage` variants manually, but there's only 4 of them and
they're small.

This doesn't actually change the protocol at all - everything is still
identical on the wire.

# Tests + Formatting
- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`
2024-04-14 15:55:18 +00:00
..
nu_plugin_custom_values Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_example Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_formats Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_gstat Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_inc Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_polars Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu_plugin_python Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_query Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-cli Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-cmd-base Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-cmd-dataframe Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-cmd-extra Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-cmd-lang Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-color-config Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-command Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-engine Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-explore Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-glob Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-json Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-lsp Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-parser Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-path Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-plugin Improve error messages for plugin protocol by removing #[serde(untagged)] (#12510) 2024-04-14 15:55:18 +00:00
nu-plugin-test-support Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-pretty-hex Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-protocol Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-std Fixes #12482 by pointing help links for ndjson to a non-spam source (take 2) (#12509) 2024-04-13 18:59:43 -05:00
nu-system Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-table Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nu-term-grid Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-test-support Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-utils Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.