nushell/crates
Devyn Cairns 1f4131532d
Deprecate register and add plugin use (#12607)
# Description

Adds a new keyword, `plugin use`. Unlike `register`, this merely loads
the signatures from the plugin cache file. The file is configurable with
the `--plugin-config` option either to `nu` or to `plugin use` itself,
just like the other `plugin` family of commands. At the REPL, one might
do this to replace `register`:

```nushell
> plugin add ~/.cargo/bin/nu_plugin_foo
> plugin use foo
```

This will not work in a script, because `plugin use` is a keyword and
`plugin add` does not evaluate at parse time (intentionally). This means
we no longer run random binaries during parse.

The `--plugins` option has been added to allow running `nu` with certain
plugins in one step. This is used especially for the `nu_with_plugins!`
test macro, but I'd imagine is generally useful. The only weird quirk is
that it has to be a list, and we don't really do this for any of our
other CLI args at the moment.

`register` now prints a deprecation parse warning.

This should fix #11923, as we now have a complete alternative to
`register`.

# User-Facing Changes

- Add `plugin use` command
- Deprecate `register`
- Add `--plugins` option to `nu` to replace a common use of `register`

# Tests + Formatting

I think I've tested it thoroughly enough and every existing test passes.
Testing nu CLI options and alternate config files is a little hairy and
I wish there were some more generic helpers for this, so this will go on
my TODO list for refactoring.

- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`

# After Submitting

- [ ] Update plugins sections of book
- [ ] Release notes
2024-04-23 06:37:50 -05: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_nu_example Add an example Nushell plugin written in Nushell itself (#12574) 2024-04-19 09:53:30 +03:00
nu_plugin_polars Added commands for working with the plugin cache. (#12576) 2024-04-21 19:43:43 -05:00
nu_plugin_python Fix the error output in the python plugin to match LabeledError (#12575) 2024-04-18 20:01:35 -05:00
nu_plugin_query Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu_plugin_stress_internals stress_internals: exit(1) on io error (#12612) 2024-04-21 23:48:09 +02:00
nu-cli Refactor using ClosureEval types (#12541) 2024-04-22 14:15:09 +08:00
nu-cmd-base Remove the Value::Block case (#12582) 2024-04-21 07:03:33 +02:00
nu-cmd-dataframe Upgrading nu-cmd-dataframe to polars 0.39 (#12554) 2024-04-17 12:50:17 -05:00
nu-cmd-extra Refactor using ClosureEval types (#12541) 2024-04-22 14:15:09 +08:00
nu-cmd-lang Add ErrSpan extension trait for Result (#12626) 2024-04-23 10:39:55 +02:00
nu-cmd-plugin Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-color-config Refactor using ClosureEval types (#12541) 2024-04-22 14:15:09 +08:00
nu-command Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-engine Add ErrSpan extension trait for Result (#12626) 2024-04-23 10:39:55 +02:00
nu-explore Replace subtraction of Instants and Durations with saturating subtractions (#12549) 2024-04-17 07:25:16 -05: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 improve nu --lsp command tooltips (#12589) 2024-04-20 07:16:38 -05:00
nu-parser Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-path Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-plugin Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-plugin-test-support Local socket mode and foreground terminal control for plugins (#12448) 2024-04-15 18:28:18 +00:00
nu-pretty-hex Bump version to 0.92.3 (#12476) 2024-04-12 08:00:43 -05:00
nu-protocol Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-std Fix circular source causing Nushell to crash (#12262) 2024-04-19 09:38:08 +03:00
nu-system Replace subtraction of Instants and Durations with saturating subtractions (#12549) 2024-04-17 07:25:16 -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 Deprecate register and add plugin use (#12607) 2024-04-23 06:37:50 -05:00
nu-utils Copy-on-write for record values (#12305) 2024-04-14 01:42:03 +00:00
nuon fix typo in the documentation of nuon::ToStyle (#12608) 2024-04-21 10:53:53 -05: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.