nushell/src/tests
Eric Hodel 7071617f18
Allow plugins to receive configuration from the nushell configuration (#10955)
# Description

When nushell calls a plugin it now sends a configuration `Value` from
the nushell config under `$env.config.plugins.PLUGIN_SHORT_NAME`. This
allows plugin authors to read configuration provided by plugin users.

The `PLUGIN_SHORT_NAME` must match the registered filename after
`nu_plugin_`. If you register `target/debug/nu_plugin_config` the
`PLUGIN_NAME` will be `config` and the nushell config will loook like:

        $env.config = {
          # ...
          plugins: {
            config: [
              some
              values
            ]
          }
        }

Configuration may also use a closure which allows passing values from
`$env` to a plugin:

        $env.config = {
          # ...
          plugins: {
            config: {||
              $env.some_value
            }
          }
        }

This is a breaking change for the plugin API as the `Plugin::run()`
function now accepts a new configuration argument which is an
`&Option<Value>`. If no configuration was supplied the value is `None`.

Plugins compiled after this change should work with older nushell, and
will behave as if the configuration was not set.

Initially discussed in #10867

# User-Facing Changes

* Plugins can read configuration data stored in `$env.config.plugins`
* The plugin `CallInfo` now includes a `config` entry, existing plugins
will require updates

# Tests + Formatting

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

# After Submitting

- [ ] Update [Creating a plugin (in
Rust)](https://www.nushell.sh/contributor-book/plugins.html#creating-a-plugin-in-rust)
[source](https://github.com/nushell/nushell.github.io/blob/main/contributor-book/plugins.md)
- [ ] Add "Configuration" section to [Plugins
documentation](https://www.nushell.sh/contributor-book/plugins.html)
2024-01-15 16:59:47 +08:00
..
test_bits.rs Input output checking (#9680) 2023-07-14 15:20:35 +12:00
test_cell_path.rs remove the $nothing variable (#10478) 2023-09-26 18:49:28 +02:00
test_commandline.rs Fix commandline --cursor-end (#11504) 2024-01-13 08:24:14 +08:00
test_conditionals.rs Add OneOf shape to fix else (#7385) 2022-12-08 08:58:54 +13:00
test_config_path.rs bump rust-toolchain to 1.72.1 (#11079) 2023-11-16 15:14:45 -06:00
test_config.rs Allow plugins to receive configuration from the nushell configuration (#10955) 2024-01-15 16:59:47 +08:00
test_converters.rs Fix to json escape logic (#4478) 2022-02-15 06:55:57 -05:00
test_custom_commands.rs add type check during eval time (#11475) 2024-01-12 23:48:53 +08:00
test_engine.rs Add long options for filters (#10641) 2023-10-08 13:12:46 +02:00
test_env.rs Remove the 'env' command, as we have the variable (#8185) 2023-03-01 21:20:00 +13:00
test_help.rs Add long options for filters (#10641) 2023-10-08 13:12:46 +02:00
test_hiding.rs remove let-env, focus on mutating $env (#9574) 2023-07-01 07:57:51 +12:00
test_ide.rs limit the ide-check error amount (#8875) 2023-04-13 12:53:18 -05:00
test_iteration.rs Remove deprecated --numbered flag from four commands (#7777) 2023-02-02 16:59:58 -06:00
test_known_external.rs Allow spreading arguments to commands (#11289) 2023-12-28 15:43:20 +08:00
test_math.rs Implement modulo for duration (#10745) 2023-10-19 12:27:00 +02:00
test_modules.rs Module: support defining const and use const variables inside of function (#9773) 2023-08-01 07:09:52 +08:00
test_parser.rs More specific errors for missing values in records (#11423) 2023-12-27 10:15:12 +01:00
test_ranges.rs improve operation mismatch errors (#8800) 2023-04-08 09:32:44 +12:00
test_regex.rs improve operation mismatch errors (#8800) 2023-04-08 09:32:44 +12:00
test_signatures.rs allow tables to have annotations (#9613) 2023-07-07 11:06:09 +02:00
test_spread.rs Allow spreading arguments to commands (#11289) 2023-12-28 15:43:20 +08:00
test_stdlib.rs split $nu variable into scope commands and simpler $nu (#9487) 2023-06-21 09:33:01 +12:00
test_strings.rs improve operation mismatch errors (#8800) 2023-04-08 09:32:44 +12:00
test_table_operations.rs Disallow duplicated columns in table literals (#10875) 2023-11-01 21:25:35 +01:00
test_type_check.rs add type check during eval time (#11475) 2024-01-12 23:48:53 +08:00