1use crate::git;
2use crate::metadata::WipMetadata;
3use crate::ref_name;
4
5pub struct ShowResult {
6 pub name: String,
7 pub metadata: WipMetadata,
8 pub diff: String,
9}
10
11pub fn run(name: String, remote: String) -> Result<ShowResult, String> {
12 let user = ref_name::user()?;
13 let name = ref_name::resolve_name(Some(name))?;
14 let wip_ref = ref_name::wip_ref(&name, &user);
15
16 git::git(&["fetch", &remote, &wip_ref])?;
18
19 let msg = git::git_stdout(&["log", "-1", "--format=%B", "FETCH_HEAD"])?;
21 let metadata = WipMetadata::from_commit_message(&msg);
22
23 let diff = git::git_stdout(&["diff", "FETCH_HEAD~1..FETCH_HEAD"])?;
25
26 Ok(ShowResult {
27 name,
28 metadata,
29 diff,
30 })
31}