From de27cd076e4f04dac255c1744a0f0282d4a89c82 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy <mmstickman@gmail.com> Date: Fri, 27 Oct 2017 11:02:51 -0400 Subject: [PATCH] Re-apply rustfmt --- src/parser/pipelines/collector.rs | 253 ++++++++++++++++-------------- src/parser/pipelines/mod.rs | 24 ++- src/parser/statement/parse.rs | 32 ++-- 3 files changed, 167 insertions(+), 142 deletions(-) diff --git a/src/parser/pipelines/collector.rs b/src/parser/pipelines/collector.rs index 1b047844..c5a647e7 100644 --- a/src/parser/pipelines/collector.rs +++ b/src/parser/pipelines/collector.rs @@ -315,7 +315,9 @@ impl<'a> Collector<'a> { try_redir_out!(RedirectFrom::Stdout); } b'<' => { - if let None = inputs { inputs = Some(Vec::new()); } + if let None = inputs { + inputs = Some(Vec::new()); + } bytes.next(); if Some(b'<') == self.peek(i + 1) { if Some(b'<') == self.peek(i + 2) { @@ -343,8 +345,9 @@ impl<'a> Collector<'a> { }; let heredoc = heredoc.lines().collect::<Vec<&str>>(); // Then collect the heredoc from standard input. - inputs.as_mut().map(|x| - x.push(Input::HereString(heredoc[1..heredoc.len() - 1].join("\n")))); + inputs.as_mut().map(|x| { + x.push(Input::HereString(heredoc[1..heredoc.len() - 1].join("\n"))) + }); } } else if let Some(file) = self.arg(&mut bytes)? { // Otherwise interpret it as stdin redirection @@ -387,11 +390,13 @@ mod tests { assert_eq!("--abbrev-ref", pipeline.items[0].job.args[2]); assert_eq!("HEAD", pipeline.items[0].job.args[3]); - let expected = vec![Redirection { - from: RedirectFrom::Stderr, - file: "/dev/null".to_owned(), - append: false, - }]; + let expected = vec![ + Redirection { + from: RedirectFrom::Stderr, + file: "/dev/null".to_owned(), + append: false, + }, + ]; assert_eq!(expected, pipeline.items[0].outputs); } else { @@ -749,37 +754,39 @@ mod tests { // the input redirection shoud be associated with. fn multiple_redirect() { let input = "cat < file1 <<< \"herestring\" | tr 'x' 'y' ^>> err &> both > out"; - let expected = Pipeline { items: vec![ - PipeItem { - job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: vec![ - Input::File("file1".into()), - Input::HereString("\"herestring\"".into()), - ], - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["tr","'x'","'y'"], JobKind::Last), - inputs: Vec::new(), - outputs: vec![ - Redirection { - from: RedirectFrom::Stderr, - file: "err".into(), - append: true, - }, - Redirection { - from: RedirectFrom::Both, - file: "both".into(), - append: false, - }, - Redirection { - from: RedirectFrom::Stdout, - file: "out".into(), - append: false, - }, - ] - } - ]}; + let expected = Pipeline { + items: vec![ + PipeItem { + job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: vec![ + Input::File("file1".into()), + Input::HereString("\"herestring\"".into()), + ], + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["tr", "'x'", "'y'"], JobKind::Last), + inputs: Vec::new(), + outputs: vec![ + Redirection { + from: RedirectFrom::Stderr, + file: "err".into(), + append: true, + }, + Redirection { + from: RedirectFrom::Both, + file: "both".into(), + append: false, + }, + Redirection { + from: RedirectFrom::Stdout, + file: "out".into(), + append: false, + }, + ], + }, + ], + }; assert_eq!(parse(input), Statement::Pipeline(expected)); } @@ -788,27 +795,31 @@ mod tests { // the input redirection shoud be associated with. fn pipeline_with_redirection_append_stderr() { let input = "cat | echo hello | cat < stuff ^>> other"; - let expected = Pipeline { items: vec![ - PipeItem { - job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: Vec::new(), - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["echo", "hello"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: Vec::new(), - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["cat"], JobKind::Last), - inputs: vec![Input::File("stuff".into())], - outputs: vec![Redirection { - from: RedirectFrom::Stderr, - file: "other".into(), - append: true, - }], - }, - ]}; + let expected = Pipeline { + items: vec![ + PipeItem { + job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: Vec::new(), + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["echo", "hello"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: Vec::new(), + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["cat"], JobKind::Last), + inputs: vec![Input::File("stuff".into())], + outputs: vec![ + Redirection { + from: RedirectFrom::Stderr, + file: "other".into(), + append: true, + }, + ], + }, + ], + }; assert_eq!(parse(input), Statement::Pipeline(expected)); } @@ -817,27 +828,31 @@ mod tests { // the input redirection shoud be associated with. fn pipeline_with_redirection_append_both() { let input = "cat | echo hello | cat < stuff &>> other"; - let expected = Pipeline { items: vec![ - PipeItem { - job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: Vec::new(), - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["echo", "hello"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: Vec::new(), - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["cat"], JobKind::Last), - inputs: vec![Input::File("stuff".into())], - outputs: vec![Redirection { - from: RedirectFrom::Both, - file: "other".into(), - append: true, - }], - }, - ]}; + let expected = Pipeline { + items: vec![ + PipeItem { + job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: Vec::new(), + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["echo", "hello"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: Vec::new(), + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["cat"], JobKind::Last), + inputs: vec![Input::File("stuff".into())], + outputs: vec![ + Redirection { + from: RedirectFrom::Both, + file: "other".into(), + append: true, + }, + ], + }, + ], + }; assert_eq!(parse(input), Statement::Pipeline(expected)); } @@ -880,11 +895,13 @@ mod tests { fn herestring() { let input = "calc <<< $(cat math.txt)"; let expected = Pipeline { - items: vec![PipeItem { - job: Job::new(array!["calc"], JobKind::Last), - inputs: vec![Input::HereString("$(cat math.txt)".into())], - outputs: vec![], - }] + items: vec![ + PipeItem { + job: Job::new(array!["calc"], JobKind::Last), + inputs: vec![Input::HereString("$(cat math.txt)".into())], + outputs: vec![], + }, + ], }; assert_eq!(Statement::Pipeline(expected), parse(input)); } @@ -893,11 +910,13 @@ mod tests { fn heredoc() { let input = "calc << EOF\n1 + 2\n3 + 4\nEOF"; let expected = Pipeline { - items: vec![PipeItem { - job: Job::new(array!["calc"], JobKind::Last), - inputs: vec![Input::HereString("1 + 2\n3 + 4".into())], + items: vec![ + PipeItem { + job: Job::new(array!["calc"], JobKind::Last), + inputs: vec![Input::HereString("1 + 2\n3 + 4".into())], outputs: vec![], - }] + }, + ], }; assert_eq!(Statement::Pipeline(expected), parse(input)); } @@ -907,22 +926,26 @@ mod tests { // the input redirection shoud be associated with. fn piped_herestring() { let input = "cat | tr 'o' 'x' <<< $VAR > out.log"; - let expected = Pipeline { items: vec![ - PipeItem { - job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), - inputs: Vec::new(), - outputs: Vec::new(), - }, - PipeItem { - job: Job::new(array!["tr", "'o'", "'x'"], JobKind::Last), - inputs: vec![Input::HereString("$VAR".into())], - outputs: vec![Redirection { - from: RedirectFrom::Stdout, - file: "out.log".into(), - append: false, - }], - } - ]}; + let expected = Pipeline { + items: vec![ + PipeItem { + job: Job::new(array!["cat"], JobKind::Pipe(RedirectFrom::Stdout)), + inputs: Vec::new(), + outputs: Vec::new(), + }, + PipeItem { + job: Job::new(array!["tr", "'o'", "'x'"], JobKind::Last), + inputs: vec![Input::HereString("$VAR".into())], + outputs: vec![ + Redirection { + from: RedirectFrom::Stdout, + file: "out.log".into(), + append: false, + }, + ], + }, + ], + }; assert_eq!(Statement::Pipeline(expected), parse(input)); } @@ -946,14 +969,16 @@ mod tests { let expected = Pipeline { items: vec![ PipeItem { - job: Job::new(array!["echo", "zardoz"], JobKind::Last), - inputs: Vec::new(), - outputs: vec![Redirection { - from: RedirectFrom::Stdout, - file: "foo\\'bar".into(), - append: true, - }], - } + job: Job::new(array!["echo", "zardoz"], JobKind::Last), + inputs: Vec::new(), + outputs: vec![ + Redirection { + from: RedirectFrom::Stdout, + file: "foo\\'bar".into(), + append: true, + }, + ], + }, ], }; assert_eq!(parse(input), Statement::Pipeline(expected)); diff --git a/src/parser/pipelines/mod.rs b/src/parser/pipelines/mod.rs index f5648d46..cb28fbac 100644 --- a/src/parser/pipelines/mod.rs +++ b/src/parser/pipelines/mod.rs @@ -38,9 +38,9 @@ pub(crate) struct Pipeline { #[derive(Debug, PartialEq, Clone)] pub(crate) struct PipeItem { - pub job: Job, + pub job: Job, pub outputs: Vec<Redirection>, - pub inputs: Vec<Input>, + pub inputs: Vec<Input>, } impl PipeItem { @@ -57,10 +57,12 @@ impl PipeItem { for input in self.inputs.iter_mut() { *input = match input { - &mut Input::File(ref s) => - Input::File(expand_string(s, expanders, false).join(" ")), - &mut Input::HereString(ref s) => - Input::HereString(expand_string(s, expanders, true).join(" ")), + &mut Input::File(ref s) => { + Input::File(expand_string(s, expanders, false).join(" ")) + } + &mut Input::HereString(ref s) => { + Input::HereString(expand_string(s, expanders, true).join(" ")) + } }; } @@ -71,11 +73,7 @@ impl PipeItem { } impl Pipeline { - pub(crate) fn new() -> Self { - Pipeline { - items: Vec::new(), - } - } + pub(crate) fn new() -> Self { Pipeline { items: Vec::new() } } pub(crate) fn expand<E: Expander>(&mut self, expanders: &E) { self.items.iter_mut().for_each(|i| i.expand(expanders)); @@ -102,11 +100,11 @@ impl fmt::Display for Pipeline { &Input::File(ref file) => { tokens.push("<".into()); tokens.push(file.clone()); - }, + } &Input::HereString(ref string) => { tokens.push("<<<".into()); tokens.push(string.clone()); - }, + } } } for output in outputs { diff --git a/src/parser/statement/parse.rs b/src/parser/statement/parse.rs index 15ae09f0..39fb29ab 100644 --- a/src/parser/statement/parse.rs +++ b/src/parser/statement/parse.rs @@ -170,8 +170,8 @@ pub(crate) fn parse(code: &str) -> Statement { #[cfg(test)] mod tests { - use super::*; use self::pipelines::PipeItem; + use super::*; use parser::assignments::{KeyBuf, Primitive}; use shell::{Job, JobKind}; use shell::flow_control::Statement; @@ -182,20 +182,22 @@ mod tests { let parsed_if = parse("if test 1 -eq 2"); let correct_parse = Statement::If { expression: Pipeline { - items: vec![PipeItem { - job: Job::new( - vec![ - "test".to_owned(), - "1".to_owned(), - "-eq".to_owned(), - "2".to_owned(), - ].into_iter() - .collect(), - JobKind::Last, - ), - outputs: Vec::new(), - inputs: Vec::new(), - }], + items: vec![ + PipeItem { + job: Job::new( + vec![ + "test".to_owned(), + "1".to_owned(), + "-eq".to_owned(), + "2".to_owned(), + ].into_iter() + .collect(), + JobKind::Last, + ), + outputs: Vec::new(), + inputs: Vec::new(), + }, + ], }, success: vec![], else_if: vec![], -- GitLab