plugin feature flag

This commit is contained in:
Fernando Herrera 2021-11-02 20:56:00 +00:00
parent dfb846dec6
commit 12eed1f98a
11 changed files with 34 additions and 44 deletions

2
Cargo.lock generated
View file

@ -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",

View file

@ -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"

View file

@ -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"]

View file

@ -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;

View file

@ -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())
}
}

View file

@ -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);

View file

@ -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"]

View file

@ -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;

View file

@ -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],

View file

@ -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);

View file

@ -138,7 +138,7 @@ impl Command for PluginDeclaration {
}
fn usage(&self) -> &str {
"plugin name plus arguments"
self.signature.usage.as_str()
}
fn run(