diff --git a/Cargo.lock b/Cargo.lock index 0e277e06ca..844fa247bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1911,14 +1911,12 @@ dependencies = [ "glob", "heim", "hex 0.4.0", - "image", "indexmap", "itertools 0.8.2", "language-reporting", "log", "mime", "natural", - "neso", "nom 5.0.1", "nom-tracable", "nom_locate", @@ -1927,6 +1925,7 @@ dependencies = [ "nu-parser", "nu-protocol", "nu-source", + "nu_plugin_binaryview", "nu_plugin_textview", "num-bigint", "num-traits 0.2.10", @@ -1939,7 +1938,6 @@ dependencies = [ "prettytable-rs", "ptree", "query_interface", - "rawkey", "regex", "roxmltree", "rusqlite", @@ -2079,6 +2077,24 @@ dependencies = [ "termcolor", ] +[[package]] +name = "nu_plugin_binaryview" +version = "0.1.0" +dependencies = [ + "ansi_term 0.12.1", + "crossterm", + "image", + "neso", + "nu-build", + "nu-errors", + "nu-protocol", + "nu-source", + "pretty-hex", + "rawkey", + "syntect", + "url", +] + [[package]] name = "nu_plugin_textview" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 5228b41a5c..f0d1f68492 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,15 @@ documentation = "https://book.nushell.sh" [workspace] -members = ["crates/nu-errors", "crates/nu-source", "crates/nu_plugin_textview", "crates/nu-protocol", "crates/nu-parser", "crates/nu-build"] +members = [ + "crates/nu-errors", + "crates/nu-source", + "crates/nu_plugin_textview", + "crates/nu_plugin_binaryview", + "crates/nu-protocol", + "crates/nu-parser", + "crates/nu-build" +] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -23,6 +31,7 @@ nu-protocol = { version = "0.1.0", path = "./crates/nu-protocol" } nu-errors = { version = "0.1.0", path = "./crates/nu-errors" } nu-parser = { version = "0.1.0", path = "./crates/nu-parser" } nu_plugin_textview = {version = "0.1.0", path = "./crates/nu_plugin_textview", optional=true} +nu_plugin_binaryview = {version = "0.1.0", path = "./crates/nu_plugin_binaryview", optional=true} query_interface = "0.3.5" typetag = "0.1.4" @@ -96,26 +105,22 @@ pretty = "0.5.2" termcolor = "1.0.5" console = "0.9.1" -neso = { version = "0.5.0", optional = true } crossterm = { version = "0.10.2", optional = true } syntect = {version = "3.2.0", optional = true } onig_sys = {version = "=69.1.0", optional = true } heim = {version = "0.0.8", optional = true } battery = {version = "0.7.4", optional = true } -rawkey = {version = "0.1.2", optional = true } clipboard = {version = "0.5", optional = true } ptree = {version = "0.2" } -image = { version = "0.22.2", default_features = false, features = ["png_codec", "jpeg"], optional = true } starship = { version = "0.26.4", optional = true} [features] default = ["sys", "ps"] -raw-key = ["rawkey", "neso"] -binaryview = ["image", "crossterm"] sys = ["heim", "battery"] ps = ["heim"] starship-prompt = ["starship"] textview = ["nu_plugin_textview"] +binaryview = ["nu_plugin_binaryview"] #trace = ["nu-parser/trace"] [dependencies.rusqlite] @@ -193,11 +198,6 @@ name = "nu_plugin_tree" path = "src/plugins/tree.rs" required-features = ["tree"] -[[bin]] -name = "nu_plugin_binaryview" -path = "src/plugins/binaryview.rs" -required-features = ["binaryview"] - [[bin]] name = "nu_plugin_docker" path = "src/plugins/docker.rs" diff --git a/crates/nu_plugin_binaryview/Cargo.toml b/crates/nu_plugin_binaryview/Cargo.toml new file mode 100644 index 0000000000..626eeb99b0 --- /dev/null +++ b/crates/nu_plugin_binaryview/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "nu_plugin_binaryview" +version = "0.1.0" +authors = ["Yehuda Katz ", "Jonathan Turner ", "Andrés N. Robalino "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +syntect = { version = "3.2.0" } +ansi_term = "0.12.1" +crossterm = { version = "0.10.2" } +nu-protocol = { path = "../nu-protocol" } +nu-source = { path = "../nu-source" } +nu-errors = { path = "../nu-errors" } +url = "2.1.0" +pretty-hex = "0.1.1" +image = { version = "0.22.2", default_features = false, features = ["png_codec", "jpeg"] } +rawkey = "0.1.2" +neso = "0.5.0" + +[build-dependencies] +nu-build = { version = "0.1.0", path = "../nu-build" } diff --git a/crates/nu_plugin_binaryview/build.rs b/crates/nu_plugin_binaryview/build.rs new file mode 100644 index 0000000000..b7511cfc6a --- /dev/null +++ b/crates/nu_plugin_binaryview/build.rs @@ -0,0 +1,3 @@ +fn main() -> Result<(), Box> { + nu_build::build() +} diff --git a/src/plugins/binaryview.rs b/crates/nu_plugin_binaryview/src/main.rs similarity index 95% rename from src/plugins/binaryview.rs rename to crates/nu_plugin_binaryview/src/main.rs index 07ea73e5e3..21eb496c10 100644 --- a/src/plugins/binaryview.rs +++ b/crates/nu_plugin_binaryview/src/main.rs @@ -1,7 +1,8 @@ use crossterm::{cursor, terminal, Attribute, RawScreen}; -use nu::{serve_plugin, Plugin}; use nu_errors::ShellError; -use nu_protocol::{outln, CallInfo, Primitive, Signature, UntaggedValue, Value}; +use nu_protocol::{ + outln, serve_plugin, CallInfo, Plugin, Primitive, Signature, UntaggedValue, Value, +}; use nu_source::AnchorLocation; use pretty_hex::*; @@ -41,16 +42,8 @@ fn view_binary( if b.len() > 3 { match (b[0], b[1], b[2]) { (0x4e, 0x45, 0x53) => { - #[cfg(feature = "rawkey")] - { - view_contents_interactive(b, source, lores_mode)?; - return Ok(()); - } - #[cfg(not(feature = "rawkey"))] - { - outln!("Interactive binary viewing currently requires the 'rawkey' feature"); - return Ok(()); - } + view_contents_interactive(b, source, lores_mode)?; + return Ok(()); } _ => {} } @@ -338,7 +331,6 @@ pub fn view_contents( Ok(()) } -#[cfg(feature = "rawkey")] pub fn view_contents_interactive( buffer: &[u8], source: Option<&AnchorLocation>,