architecture_component!(CommandLintVcs);
pub trait JjClient {
fn get_commit_description(&self, revision: &str) -> Result<String, String>;
}
pub struct JjCliClient;
impl JjClient for JjCliClient {
fn get_commit_description(&self, revision: &str) -> Result<String, String> {
let output = std::process::Command::new("jj")
.args(["log", "-r", revision, "-T", "description", "--no-graph"])
.output()
.map_err(|error| error.to_string())?;
if !output.status.success() {
return Err(String::from_utf8_lossy(&output.stderr).to_string());
}
Ok(String::from_utf8_lossy(&output.stdout).trim().to_string())
}
}