mirror of
https://github.com/nushell/nushell
synced 2024-12-28 14:03:09 +00:00
0c4d5330ee
# Description This breaks `nu-plugin` up into four crates: - `nu-plugin-protocol`: just the type definitions for the protocol, no I/O. If someone wanted to wire up something more bare metal, maybe for async I/O, they could use this. - `nu-plugin-core`: the shared stuff between engine/plugin. Less stable interface. - `nu-plugin-engine`: everything required for the engine to talk to plugins. Less stable interface. - `nu-plugin`: everything required for the plugin to talk to the engine, what plugin developers use. Should be the most stable interface. No changes are made to the interface exposed by `nu-plugin` - it should all still be there. Re-exports from `nu-plugin-protocol` or `nu-plugin-core` are used as required. Plugins shouldn't ever have to use those crates directly. This should be somewhat faster to compile as `nu-plugin-engine` and `nu-plugin` can compile in parallel, and the engine doesn't need `nu-plugin` and plugins don't need `nu-plugin-engine` (except for test support), so that should reduce what needs to be compiled too. The only significant change here other than splitting stuff up was to break the `source` out of `PluginCustomValue` and create a new `PluginCustomValueWithSource` type that contains that instead. One bonus of that is we get rid of the option and it's now more type-safe, but it also means that the logic for that stuff (actually running the plugin for custom value ops) can live entirely within the `nu-plugin-engine` crate. # User-Facing Changes - New crates. - Added `local-socket` feature for `nu` to try to make it possible to compile without that support if needed. # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib`
32 lines
987 B
TOML
32 lines
987 B
TOML
[package]
|
|
authors = ["The Nushell Project Developers"]
|
|
description = "Functionality for building Nushell plugins"
|
|
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
name = "nu-plugin"
|
|
version = "0.92.3"
|
|
|
|
[lib]
|
|
bench = false
|
|
|
|
[dependencies]
|
|
nu-engine = { path = "../nu-engine", version = "0.92.3" }
|
|
nu-protocol = { path = "../nu-protocol", version = "0.92.3" }
|
|
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.92.3" }
|
|
nu-plugin-core = { path = "../nu-plugin-core", version = "0.92.3", default-features = false }
|
|
|
|
log = { workspace = true }
|
|
thiserror = "1.0"
|
|
|
|
[dev-dependencies]
|
|
serde = { workspace = true }
|
|
typetag = "0.2"
|
|
|
|
[features]
|
|
default = ["local-socket"]
|
|
local-socket = ["nu-plugin-core/local-socket"]
|
|
|
|
[target.'cfg(target_family = "unix")'.dependencies]
|
|
# For setting the process group ID (EnterForeground / LeaveForeground)
|
|
nix = { workspace = true, default-features = false, features = ["process"] }
|