summaryrefslogtreecommitdiff
path: root/src/cmd.rs
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-05-01 17:55:49 +0200
committermo8it <mo8it@proton.me>2024-05-01 17:55:49 +0200
commit32415e1e6cca9e0fb9a3019ed8e75956c7f7f92e (patch)
tree945ab441ea3d531deae08006e10d6f053b5b9d10 /src/cmd.rs
parent8e178ac60dd947dc4ae30126b9281106599ddbce (diff)
Document cmd
Diffstat (limited to 'src/cmd.rs')
-rw-r--r--src/cmd.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd.rs b/src/cmd.rs
index 28f21c5..e4bc112 100644
--- a/src/cmd.rs
+++ b/src/cmd.rs
@@ -1,6 +1,8 @@
use anyhow::{Context, Result};
use std::{io::Read, path::Path, process::Command};
+// Run a command with a description for a possible error and append the merged stdout and stderr.
+// The boolean in the returned `Result` is true if the command's exit status is success.
pub fn run_cmd(mut cmd: Command, description: &str, output: &mut Vec<u8>) -> Result<bool> {
let (mut reader, writer) = os_pipe::pipe()
.with_context(|| format!("Failed to create a pipe to run the command `{description}``"))?;
@@ -35,13 +37,18 @@ pub struct CargoCmd<'a> {
pub args: &'a [&'a str],
pub exercise_name: &'a str,
pub description: &'a str,
+ // RUSTFLAGS="-A warnings"
pub hide_warnings: bool,
+ // Added as `--target-dir` if `Self::dev` is true.
pub target_dir: &'a Path,
+ // The output buffer to append the merged stdout and stderr.
pub output: &'a mut Vec<u8>,
+ // true while developing Rustlings.
pub dev: bool,
}
impl<'a> CargoCmd<'a> {
+ // Run `cargo SUBCOMMAND --bin EXERCISE_NAME … ARGS`.
pub fn run(&mut self) -> Result<bool> {
let mut cmd = Command::new("cargo");
cmd.arg(self.subcommand);