mirror of
https://github.com/nushell/nushell
synced 2024-12-26 13:03:07 +00:00
plugin feature flag
This commit is contained in:
parent
dfb846dec6
commit
12eed1f98a
11 changed files with 34 additions and 44 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -395,6 +395,7 @@ dependencies = [
|
|||
"nu-json",
|
||||
"nu-parser",
|
||||
"nu-path",
|
||||
"nu-plugin",
|
||||
"nu-protocol",
|
||||
"nu-table",
|
||||
"nu-term-grid",
|
||||
|
@ -668,7 +669,6 @@ dependencies = [
|
|||
"nu-json",
|
||||
"nu-parser",
|
||||
"nu-path",
|
||||
"nu-plugin",
|
||||
"nu-protocol",
|
||||
"nu-table",
|
||||
"nu-term-grid",
|
||||
|
|
|
@ -26,12 +26,17 @@ nu-json = { path="./crates/nu-json" }
|
|||
nu-parser = { path="./crates/nu-parser" }
|
||||
nu-path = { path="./crates/nu-path" }
|
||||
nu-protocol = { path = "./crates/nu-protocol" }
|
||||
nu-plugin = { path = "./crates/nu-plugin", optional = true }
|
||||
nu-table = { path = "./crates/nu-table" }
|
||||
nu-term-grid = { path = "./crates/nu-term-grid" }
|
||||
miette = "3.0.0"
|
||||
ctrlc = "3.2.1"
|
||||
# mimalloc = { version = "*", default-features = false }
|
||||
|
||||
[features]
|
||||
plugin = ["nu-plugin", "nu-parser/plugin", "nu-command/plugin"]
|
||||
default = ["plugin"]
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.2.0"
|
||||
assert_cmd = "1.0.7"
|
||||
|
|
|
@ -13,7 +13,6 @@ nu-protocol = { path = "../nu-protocol" }
|
|||
nu-table = { path = "../nu-table" }
|
||||
nu-term-grid = { path = "../nu-term-grid" }
|
||||
nu-parser = { path = "../nu-parser" }
|
||||
nu-plugin = { path = "../nu-plugin" }
|
||||
|
||||
trash = { version = "1.3.0", optional = true }
|
||||
unicode-segmentation = "1.8.0"
|
||||
|
@ -34,3 +33,4 @@ titlecase = "1.1.0"
|
|||
|
||||
[features]
|
||||
trash-support = ["trash"]
|
||||
plugin = ["nu-parser/plugin"]
|
||||
|
|
|
@ -9,8 +9,6 @@ mod hide;
|
|||
mod if_;
|
||||
mod let_;
|
||||
mod module;
|
||||
mod register;
|
||||
mod run_plugin;
|
||||
mod source;
|
||||
mod use_;
|
||||
|
||||
|
@ -25,7 +23,11 @@ pub use hide::Hide;
|
|||
pub use if_::If;
|
||||
pub use let_::Let;
|
||||
pub use module::Module;
|
||||
pub use register::Register;
|
||||
pub use run_plugin::RunPlugin;
|
||||
pub use source::Source;
|
||||
pub use use_::Use;
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
mod register;
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
pub use register::Register;
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
use nu_protocol::ast::Call;
|
||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||
use nu_protocol::{PipelineData, Signature};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct RunPlugin;
|
||||
|
||||
impl Command for RunPlugin {
|
||||
fn name(&self) -> &str {
|
||||
"run_plugin"
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"test for plugin encoding"
|
||||
}
|
||||
|
||||
fn signature(&self) -> nu_protocol::Signature {
|
||||
Signature::build("run_plugin")
|
||||
}
|
||||
|
||||
fn run(
|
||||
&self,
|
||||
_context: &EngineState,
|
||||
_stack: &mut Stack,
|
||||
_call: &Call,
|
||||
_input: PipelineData,
|
||||
) -> Result<nu_protocol::PipelineData, nu_protocol::ShellError> {
|
||||
Ok(PipelineData::new())
|
||||
}
|
||||
}
|
|
@ -73,10 +73,8 @@ pub fn create_default_context() -> EngineState {
|
|||
Mv,
|
||||
ParEach,
|
||||
Ps,
|
||||
Register,
|
||||
Range,
|
||||
Rm,
|
||||
RunPlugin,
|
||||
Select,
|
||||
Size,
|
||||
Split,
|
||||
|
@ -94,6 +92,9 @@ pub fn create_default_context() -> EngineState {
|
|||
Zip
|
||||
);
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
bind_command!(Register);
|
||||
|
||||
// This is a WIP proof of concept
|
||||
bind_command!(ListGitBranches, Git, GitCheckout, Source);
|
||||
|
||||
|
|
|
@ -7,4 +7,7 @@ edition = "2018"
|
|||
miette = "3.0.0"
|
||||
thiserror = "1.0.29"
|
||||
nu-protocol = { path = "../nu-protocol"}
|
||||
nu-plugin = { path = "../nu-plugin"}
|
||||
nu-plugin = { path = "../nu-plugin", optional=true}
|
||||
|
||||
[features]
|
||||
plugin = ["nu-plugin"]
|
||||
|
|
|
@ -11,6 +11,9 @@ pub use flatten::{flatten_block, FlatShape};
|
|||
pub use lex::{lex, Token, TokenContents};
|
||||
pub use lite_parse::{lite_parse, LiteBlock};
|
||||
pub use parse_keywords::{
|
||||
parse_alias, parse_def, parse_def_predecl, parse_let, parse_module, parse_plugin, parse_use,
|
||||
parse_alias, parse_def, parse_def_predecl, parse_let, parse_module, parse_use,
|
||||
};
|
||||
pub use parser::{find_captures_in_expr, parse, Import, VarDecl};
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
pub use parse_keywords::parse_plugin;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
use nu_plugin::plugin::{get_signature, PluginDeclaration};
|
||||
use nu_protocol::{
|
||||
ast::{Block, Call, Expr, Expression, ImportPattern, ImportPatternMember, Pipeline, Statement},
|
||||
engine::StateWorkingSet,
|
||||
|
@ -6,6 +5,9 @@ use nu_protocol::{
|
|||
};
|
||||
use std::path::Path;
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
use nu_plugin::plugin::{get_signature, PluginDeclaration};
|
||||
|
||||
use crate::{
|
||||
lex, lite_parse,
|
||||
parser::{
|
||||
|
@ -925,6 +927,7 @@ pub fn parse_source(
|
|||
)
|
||||
}
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
pub fn parse_plugin(
|
||||
working_set: &mut StateWorkingSet,
|
||||
spans: &[Span],
|
||||
|
|
|
@ -15,10 +15,12 @@ use nu_protocol::{
|
|||
};
|
||||
|
||||
use crate::parse_keywords::{
|
||||
parse_alias, parse_def, parse_def_predecl, parse_hide, parse_let, parse_module, parse_plugin,
|
||||
parse_use,
|
||||
parse_alias, parse_def, parse_def_predecl, parse_hide, parse_let, parse_module, parse_use,
|
||||
};
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
use crate::parse_keywords::parse_plugin;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Import {}
|
||||
|
||||
|
@ -3007,6 +3009,7 @@ pub fn parse_statement(
|
|||
Some(ParseError::UnexpectedKeyword("export".into(), spans[0])),
|
||||
),
|
||||
b"hide" => parse_hide(working_set, spans),
|
||||
#[cfg(feature = "plugin")]
|
||||
b"register" => parse_plugin(working_set, spans),
|
||||
_ => {
|
||||
let (expr, err) = parse_expression(working_set, spans, true);
|
||||
|
|
|
@ -138,7 +138,7 @@ impl Command for PluginDeclaration {
|
|||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"plugin name plus arguments"
|
||||
self.signature.usage.as_str()
|
||||
}
|
||||
|
||||
fn run(
|
||||
|
|
Loading…
Reference in a new issue