mirror of
https://github.com/nushell/nushell.git
synced 2024-11-08 09:34:30 +01:00
cleanup nu-command, remove redundant code (#5208)
This commit is contained in:
parent
cb3276fb3b
commit
1bad40726d
@ -16,7 +16,8 @@ pub use glob::Glob;
|
|||||||
pub use ls::Ls;
|
pub use ls::Ls;
|
||||||
pub use mkdir::Mkdir;
|
pub use mkdir::Mkdir;
|
||||||
pub use mv::Mv;
|
pub use mv::Mv;
|
||||||
pub use open::{BufferedReader, Open};
|
pub use open::Open;
|
||||||
pub use rm::Rm;
|
pub use rm::Rm;
|
||||||
pub use save::Save;
|
pub use save::Save;
|
||||||
pub use touch::Touch;
|
pub use touch::Touch;
|
||||||
|
pub use util::BufferedReader;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use crate::filesystem::util::BufferedReader;
|
||||||
use nu_engine::{eval_block, get_full_help, CallExt};
|
use nu_engine::{eval_block, get_full_help, CallExt};
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||||
@ -7,7 +8,7 @@ use nu_protocol::{
|
|||||||
};
|
};
|
||||||
use rusqlite::types::ValueRef;
|
use rusqlite::types::ValueRef;
|
||||||
use rusqlite::{Connection, Row};
|
use rusqlite::{Connection, Row};
|
||||||
use std::io::{BufRead, BufReader, Read, Seek};
|
use std::io::{BufReader, Read, Seek};
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use std::os::unix::fs::PermissionsExt;
|
use std::os::unix::fs::PermissionsExt;
|
||||||
@ -296,40 +297,6 @@ fn permission_denied(dir: impl AsRef<Path>) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct BufferedReader<R: Read> {
|
|
||||||
input: BufReader<R>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: Read> BufferedReader<R> {
|
|
||||||
pub fn new(input: BufReader<R>) -> Self {
|
|
||||||
Self { input }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: Read> Iterator for BufferedReader<R> {
|
|
||||||
type Item = Result<Vec<u8>, ShellError>;
|
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
@ -7,6 +7,7 @@ use nu_protocol::ShellError;
|
|||||||
|
|
||||||
use dialoguer::Input;
|
use dialoguer::Input;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
use std::io::{BufRead, BufReader, Read};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct FileStructure {
|
pub struct FileStructure {
|
||||||
@ -120,3 +121,37 @@ pub fn get_interactive_confirmation(prompt: String) -> Result<bool, Box<dyn Erro
|
|||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct BufferedReader<R: Read> {
|
||||||
|
pub input: BufReader<R>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R: Read> BufferedReader<R> {
|
||||||
|
pub fn new(input: BufReader<R>) -> Self {
|
||||||
|
Self { input }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R: Read> Iterator for BufferedReader<R> {
|
||||||
|
type Item = Result<Vec<u8>, ShellError>;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
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()))),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
use crate::BufferedReader;
|
||||||
|
|
||||||
use base64::encode;
|
use base64::encode;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
@ -10,7 +12,7 @@ use nu_protocol::{
|
|||||||
use reqwest::blocking::Response;
|
use reqwest::blocking::Response;
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io::{BufRead, BufReader, Read};
|
use std::io::BufReader;
|
||||||
|
|
||||||
use reqwest::StatusCode;
|
use reqwest::StatusCode;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -338,34 +340,6 @@ fn helper(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct BufferedReader<R: Read> {
|
|
||||||
input: BufReader<R>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: Read> Iterator for BufferedReader<R> {
|
|
||||||
type Item = Result<Vec<u8>, ShellError>;
|
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
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(
|
fn response_to_buffer(
|
||||||
response: Response,
|
response: Response,
|
||||||
engine_state: &EngineState,
|
engine_state: &EngineState,
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
use crate::formats::value_to_json_value;
|
use crate::formats::value_to_json_value;
|
||||||
|
use crate::BufferedReader;
|
||||||
use base64::encode;
|
use base64::encode;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
@ -12,7 +13,7 @@ use nu_protocol::{
|
|||||||
Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Value,
|
Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io::{BufRead, BufReader, Read};
|
use std::io::BufReader;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct SubCommand;
|
pub struct SubCommand;
|
||||||
@ -392,33 +393,6 @@ fn helper(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct BufferedReader<R: Read> {
|
|
||||||
input: BufReader<R>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: Read> Iterator for BufferedReader<R> {
|
|
||||||
type Item = Result<Vec<u8>, ShellError>;
|
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
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(
|
fn response_to_buffer(
|
||||||
response: Response,
|
response: Response,
|
||||||
engine_state: &EngineState,
|
engine_state: &EngineState,
|
||||||
|
Loading…
Reference in New Issue
Block a user