aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--github-suggestion/src/suggestion.rs24
-rw-r--r--src/bin/git-sugdiff.rs10
2 files changed, 19 insertions, 15 deletions
diff --git a/github-suggestion/src/suggestion.rs b/github-suggestion/src/suggestion.rs
index 3f124ce..21591b1 100644
--- a/github-suggestion/src/suggestion.rs
+++ b/github-suggestion/src/suggestion.rs
@@ -16,7 +16,6 @@
use std::io::{BufRead, BufReader, BufWriter, Write};
use std::path::Path;
-use std::process::Command;
use git2::{Patch, Repository};
use regex::Regex;
@@ -81,6 +80,14 @@ pub struct Suggestion {
}
impl Suggestion {
+ pub fn commit(&self) -> &str {
+ &self.commit
+ }
+
+ pub fn path(&self) -> &str {
+ &self.path
+ }
+
/// Get the suggestion diff for the current repository.
pub fn diff(&self) -> Result<String, Error> {
let repo = Repository::open(".")?;
@@ -127,7 +134,7 @@ impl Suggestion {
)
}
- pub fn diff_command(&self) -> Result<(), Error> {
+ pub fn diff_command(&self) -> Result<git2::Oid, Error> {
let repo = Repository::open(".")?;
let commit = repo.find_commit(self.commit.parse()?)?;
@@ -150,18 +157,7 @@ impl Suggestion {
message: "unable to read right side of patch".to_owned(),
})?;
- let patched_blob = repo.blob(&new_buffer)?;
-
- Command::new("git")
- .arg("diff")
- .arg(format!("{}:{}", commit.id(), self.path))
- .arg(patched_blob.to_string())
- .spawn()
- .unwrap();
-
- // Maybe: Return blob
-
- Ok(())
+ Ok(repo.blob(&new_buffer)?)
}
/// Extract suggestion code from a comment body.
diff --git a/src/bin/git-sugdiff.rs b/src/bin/git-sugdiff.rs
index c8ecf40..9c7ff1f 100644
--- a/src/bin/git-sugdiff.rs
+++ b/src/bin/git-sugdiff.rs
@@ -16,6 +16,7 @@
use std::env;
use std::process;
+use std::process::Command;
use exitcode;
@@ -42,7 +43,14 @@ fn main() {
&config,
|suggestion| {
// TODO: Needs to work for multiple suggestions at once
- suggestion.diff_command().unwrap();
+ let blob = suggestion.diff_command().unwrap();
+
+ Command::new("git")
+ .arg("diff")
+ .arg(format!("{}:{}", suggestion.commit(), suggestion.path()))
+ .arg(blob.to_string())
+ .spawn()
+ .unwrap();
},
);
}