From 1bad40726d2a258baec5fafd649f11e4ba490155 Mon Sep 17 00:00:00 2001 From: Michael Angerman <1809991+stormasm@users.noreply.github.com> Date: Fri, 15 Apr 2022 23:16:46 -0700 Subject: [PATCH] cleanup nu-command, remove redundant code (#5208) --- crates/nu-command/src/filesystem/mod.rs | 3 +- crates/nu-command/src/filesystem/open.rs | 37 ++---------------------- crates/nu-command/src/filesystem/util.rs | 35 ++++++++++++++++++++++ crates/nu-command/src/network/fetch.rs | 32 ++------------------ crates/nu-command/src/network/post.rs | 30 ++----------------- 5 files changed, 44 insertions(+), 93 deletions(-) diff --git a/crates/nu-command/src/filesystem/mod.rs b/crates/nu-command/src/filesystem/mod.rs index ca4e84441f..f2b41a3d4f 100644 --- a/crates/nu-command/src/filesystem/mod.rs +++ b/crates/nu-command/src/filesystem/mod.rs @@ -16,7 +16,8 @@ pub use glob::Glob; pub use ls::Ls; pub use mkdir::Mkdir; pub use mv::Mv; -pub use open::{BufferedReader, Open}; +pub use open::Open; pub use rm::Rm; pub use save::Save; pub use touch::Touch; +pub use util::BufferedReader; diff --git a/crates/nu-command/src/filesystem/open.rs b/crates/nu-command/src/filesystem/open.rs index 333e32e2f6..ba898a90d0 100644 --- a/crates/nu-command/src/filesystem/open.rs +++ b/crates/nu-command/src/filesystem/open.rs @@ -1,3 +1,4 @@ +use crate::filesystem::util::BufferedReader; use nu_engine::{eval_block, get_full_help, CallExt}; use nu_protocol::ast::Call; use nu_protocol::engine::{Command, EngineState, Stack}; @@ -7,7 +8,7 @@ use nu_protocol::{ }; use rusqlite::types::ValueRef; use rusqlite::{Connection, Row}; -use std::io::{BufRead, BufReader, Read, Seek}; +use std::io::{BufReader, Read, Seek}; #[cfg(unix)] use std::os::unix::fs::PermissionsExt; @@ -296,40 +297,6 @@ fn permission_denied(dir: impl AsRef) -> bool { } } -pub struct BufferedReader { - input: BufReader, -} - -impl BufferedReader { - pub fn new(input: BufReader) -> Self { - Self { input } - } -} - -impl Iterator for BufferedReader { - type Item = Result, ShellError>; - - fn next(&mut self) -> Option { - let buffer = self.input.fill_buf(); - match buffer { - Ok(s) => { - let result = s.to_vec(); - - let buffer_len = s.len(); - - if buffer_len == 0 { - None - } else { - self.input.consume(buffer_len); - - Some(Ok(result)) - } - } - Err(e) => Some(Err(ShellError::IOError(e.to_string()))), - } - } -} - #[cfg(test)] mod test { use super::*; diff --git a/crates/nu-command/src/filesystem/util.rs b/crates/nu-command/src/filesystem/util.rs index 79364808ac..0ee86d0e30 100644 --- a/crates/nu-command/src/filesystem/util.rs +++ b/crates/nu-command/src/filesystem/util.rs @@ -7,6 +7,7 @@ use nu_protocol::ShellError; use dialoguer::Input; use std::error::Error; +use std::io::{BufRead, BufReader, Read}; #[derive(Default)] pub struct FileStructure { @@ -120,3 +121,37 @@ pub fn get_interactive_confirmation(prompt: String) -> Result { + pub input: BufReader, +} + +impl BufferedReader { + pub fn new(input: BufReader) -> Self { + Self { input } + } +} + +impl Iterator for BufferedReader { + type Item = Result, ShellError>; + + fn next(&mut self) -> Option { + let buffer = self.input.fill_buf(); + match buffer { + Ok(s) => { + let result = s.to_vec(); + + let buffer_len = s.len(); + + if buffer_len == 0 { + None + } else { + self.input.consume(buffer_len); + + Some(Ok(result)) + } + } + Err(e) => Some(Err(ShellError::IOError(e.to_string()))), + } + } +} diff --git a/crates/nu-command/src/network/fetch.rs b/crates/nu-command/src/network/fetch.rs index 52d63472f4..8d7e15cca1 100644 --- a/crates/nu-command/src/network/fetch.rs +++ b/crates/nu-command/src/network/fetch.rs @@ -1,3 +1,5 @@ +use crate::BufferedReader; + use base64::encode; use nu_engine::CallExt; use nu_protocol::ast::Call; @@ -10,7 +12,7 @@ use nu_protocol::{ use reqwest::blocking::Response; use std::collections::HashMap; -use std::io::{BufRead, BufReader, Read}; +use std::io::BufReader; use reqwest::StatusCode; use std::path::PathBuf; @@ -338,34 +340,6 @@ fn helper( } } -pub struct BufferedReader { - input: BufReader, -} - -impl Iterator for BufferedReader { - type Item = Result, ShellError>; - - fn next(&mut self) -> Option { - let buffer = self.input.fill_buf(); - match buffer { - Ok(s) => { - let result = s.to_vec(); - - let buffer_len = s.len(); - - if buffer_len == 0 { - None - } else { - self.input.consume(buffer_len); - - Some(Ok(result)) - } - } - Err(e) => Some(Err(ShellError::IOError(e.to_string()))), - } - } -} - fn response_to_buffer( response: Response, engine_state: &EngineState, diff --git a/crates/nu-command/src/network/post.rs b/crates/nu-command/src/network/post.rs index 5ab9c0a068..c6d157b852 100644 --- a/crates/nu-command/src/network/post.rs +++ b/crates/nu-command/src/network/post.rs @@ -1,4 +1,5 @@ use crate::formats::value_to_json_value; +use crate::BufferedReader; use base64::encode; use nu_engine::CallExt; use nu_protocol::ast::Call; @@ -12,7 +13,7 @@ use nu_protocol::{ Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Value, }; use std::collections::HashMap; -use std::io::{BufRead, BufReader, Read}; +use std::io::BufReader; #[derive(Clone)] pub struct SubCommand; @@ -392,33 +393,6 @@ fn helper( } } -pub struct BufferedReader { - input: BufReader, -} - -impl Iterator for BufferedReader { - type Item = Result, ShellError>; - - fn next(&mut self) -> Option { - let buffer = self.input.fill_buf(); - match buffer { - Ok(s) => { - let result = s.to_vec(); - - let buffer_len = s.len(); - - if buffer_len == 0 { - None - } else { - self.input.consume(buffer_len); - - Some(Ok(result)) - } - } - Err(e) => Some(Err(ShellError::IOError(e.to_string()))), - } - } -} fn response_to_buffer( response: Response, engine_state: &EngineState,