diff options
author | Aleksey Kladov <[email protected]> | 2020-02-10 14:16:07 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-02-10 14:16:07 +0000 |
commit | 1b6acc391aee6a2c2868f537786f1dfa4ff774a2 (patch) | |
tree | 5f914421855013fd092ff855cf076f3585b4e1b8 /xtask | |
parent | 33df947d62f176d4a1512e14e2cbf25490c3eb77 (diff) |
More convenient run_with_output
Diffstat (limited to 'xtask')
-rw-r--r-- | xtask/src/cmd.rs | 8 | ||||
-rw-r--r-- | xtask/src/install.rs | 25 | ||||
-rw-r--r-- | xtask/src/pre_commit.rs | 2 |
3 files changed, 16 insertions, 19 deletions
diff --git a/xtask/src/cmd.rs b/xtask/src/cmd.rs index 2027f4893..8e08a929b 100644 --- a/xtask/src/cmd.rs +++ b/xtask/src/cmd.rs | |||
@@ -18,7 +18,7 @@ impl Cmd<'_> { | |||
18 | run(self.unix, self.work_dir) | 18 | run(self.unix, self.work_dir) |
19 | } | 19 | } |
20 | } | 20 | } |
21 | pub fn run_with_output(self) -> Result<Output> { | 21 | pub fn run_with_output(self) -> Result<String> { |
22 | if cfg!(windows) { | 22 | if cfg!(windows) { |
23 | run_with_output(self.windows, self.work_dir) | 23 | run_with_output(self.windows, self.work_dir) |
24 | } else { | 24 | } else { |
@@ -34,8 +34,10 @@ pub fn run(cmdline: &str, dir: &str) -> Result<()> { | |||
34 | .map(|_| ()) | 34 | .map(|_| ()) |
35 | } | 35 | } |
36 | 36 | ||
37 | pub fn run_with_output(cmdline: &str, dir: &str) -> Result<Output> { | 37 | pub fn run_with_output(cmdline: &str, dir: &str) -> Result<String> { |
38 | do_run(cmdline, dir, &mut |_| {}) | 38 | let output = do_run(cmdline, dir, &mut |_| {})?; |
39 | let stdout = String::from_utf8(output.stdout)?; | ||
40 | Ok(stdout) | ||
39 | } | 41 | } |
40 | 42 | ||
41 | fn do_run(cmdline: &str, dir: &str, f: &mut dyn FnMut(&mut Command)) -> Result<Output> { | 43 | fn do_run(cmdline: &str, dir: &str, f: &mut dyn FnMut(&mut Command)) -> Result<Output> { |
diff --git a/xtask/src/install.rs b/xtask/src/install.rs index 0e7cda3fa..99e1eddb1 100644 --- a/xtask/src/install.rs +++ b/xtask/src/install.rs | |||
@@ -127,15 +127,12 @@ fn install_client(ClientOpt::VsCode: ClientOpt) -> Result<()> { | |||
127 | } | 127 | } |
128 | .run()?; | 128 | .run()?; |
129 | 129 | ||
130 | let installed_extensions = { | 130 | let installed_extensions = Cmd { |
131 | let output = Cmd { | 131 | unix: &format!(r"{} --list-extensions", code_binary), |
132 | unix: &format!(r"{} --list-extensions", code_binary), | 132 | windows: &format!(r"cmd.exe /c {}.cmd --list-extensions", code_binary), |
133 | windows: &format!(r"cmd.exe /c {}.cmd --list-extensions", code_binary), | 133 | work_dir: ".", |
134 | work_dir: ".", | 134 | } |
135 | } | 135 | .run_with_output()?; |
136 | .run_with_output()?; | ||
137 | String::from_utf8(output.stdout)? | ||
138 | }; | ||
139 | 136 | ||
140 | if !installed_extensions.contains("rust-analyzer") { | 137 | if !installed_extensions.contains("rust-analyzer") { |
141 | anyhow::bail!( | 138 | anyhow::bail!( |
@@ -161,12 +158,10 @@ fn install_client(ClientOpt::VsCode: ClientOpt) -> Result<()> { | |||
161 | 158 | ||
162 | fn install_server(opts: ServerOpt) -> Result<()> { | 159 | fn install_server(opts: ServerOpt) -> Result<()> { |
163 | let mut old_rust = false; | 160 | let mut old_rust = false; |
164 | if let Ok(output) = run_with_output("cargo --version", ".") { | 161 | if let Ok(stdout) = run_with_output("cargo --version", ".") { |
165 | if let Ok(stdout) = String::from_utf8(output.stdout) { | 162 | println!("{}", stdout); |
166 | println!("{}", stdout); | 163 | if !check_version(&stdout, REQUIRED_RUST_VERSION) { |
167 | if !check_version(&stdout, REQUIRED_RUST_VERSION) { | 164 | old_rust = true; |
168 | old_rust = true; | ||
169 | } | ||
170 | } | 165 | } |
171 | } | 166 | } |
172 | 167 | ||
diff --git a/xtask/src/pre_commit.rs b/xtask/src/pre_commit.rs index 88e868ca6..1533f64dc 100644 --- a/xtask/src/pre_commit.rs +++ b/xtask/src/pre_commit.rs | |||
@@ -14,7 +14,7 @@ pub fn run_hook() -> Result<()> { | |||
14 | let diff = run_with_output("git diff --diff-filter=MAR --name-only --cached", ".")?; | 14 | let diff = run_with_output("git diff --diff-filter=MAR --name-only --cached", ".")?; |
15 | 15 | ||
16 | let root = project_root(); | 16 | let root = project_root(); |
17 | for line in String::from_utf8(diff.stdout)?.lines() { | 17 | for line in diff.lines() { |
18 | run(&format!("git update-index --add {}", root.join(line).to_string_lossy()), ".")?; | 18 | run(&format!("git update-index --add {}", root.join(line).to_string_lossy()), ".")?; |
19 | } | 19 | } |
20 | 20 | ||