From 64f0510d18bc62c6bbe6f3c7d4b0d43665ccc1eb Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 7 Jan 2020 15:33:09 +0100 Subject: Move cmd to a separate dir --- xtask/src/lib.rs | 58 +++++--------------------------------------------------- 1 file changed, 5 insertions(+), 53 deletions(-) (limited to 'xtask/src/lib.rs') diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs index fb853e71a..7bfc4a285 100644 --- a/xtask/src/lib.rs +++ b/xtask/src/lib.rs @@ -1,20 +1,23 @@ //! FIXME: write short doc here +mod cmd; pub mod codegen; pub mod install; pub mod pre_commit; mod ast_src; use anyhow::Context; -pub use anyhow::Result; use std::{ env, path::{Path, PathBuf}, - process::{Command, Output, Stdio}, + process::{Command, Stdio}, }; use crate::codegen::Mode; +pub use anyhow::Result; +pub use cmd::{run, run_with_output, Cmd}; + const TOOLCHAIN: &str = "stable"; pub fn project_root() -> PathBuf { @@ -27,40 +30,6 @@ pub fn project_root() -> PathBuf { .to_path_buf() } -pub struct Cmd<'a> { - pub unix: &'a str, - pub windows: &'a str, - pub work_dir: &'a str, -} - -impl Cmd<'_> { - pub fn run(self) -> Result<()> { - if cfg!(windows) { - run(self.windows, self.work_dir) - } else { - run(self.unix, self.work_dir) - } - } - pub fn run_with_output(self) -> Result { - if cfg!(windows) { - run_with_output(self.windows, self.work_dir) - } else { - run_with_output(self.unix, self.work_dir) - } - } -} - -pub fn run(cmdline: &str, dir: &str) -> Result<()> { - do_run(cmdline, dir, |c| { - c.stdout(Stdio::inherit()); - }) - .map(|_| ()) -} - -pub fn run_with_output(cmdline: &str, dir: &str) -> Result { - do_run(cmdline, dir, |_| {}) -} - pub fn run_rustfmt(mode: Mode) -> Result<()> { match Command::new("rustup") .args(&["run", TOOLCHAIN, "--", "cargo", "fmt", "--version"]) @@ -132,20 +101,3 @@ pub fn run_fuzzer() -> Result<()> { run("rustup run nightly -- cargo fuzz run parser", "./crates/ra_syntax") } - -fn do_run(cmdline: &str, dir: &str, mut f: F) -> Result -where - F: FnMut(&mut Command), -{ - eprintln!("\nwill run: {}", cmdline); - let proj_dir = project_root().join(dir); - let mut args = cmdline.split_whitespace(); - let exec = args.next().unwrap(); - let mut cmd = Command::new(exec); - f(cmd.args(args).current_dir(proj_dir).stderr(Stdio::inherit())); - let output = cmd.output().with_context(|| format!("running `{}`", cmdline))?; - if !output.status.success() { - anyhow::bail!("`{}` exited with {}", cmdline, output.status); - } - Ok(output) -} -- cgit v1.2.3