Radish alpha
r
rad:z39mP9rQAaGmERfUMPULfPUi473tY
Radicle terminal user interface
Radicle
Git
bin: Hunk diffs expose their path
Erik Kundt committed 1 year ago
commit a072302dc8982b417d774d95f166e62029c9114d
parent 34374e1
1 file changed +17 -2
modified bin/git.rs
@@ -3,13 +3,16 @@ use std::fmt::Debug;
use std::path::Path;
use std::{fs, path::PathBuf};

+
use ratatui::text::Line;
+

+
use radicle_surf::diff::{Copied, DiffFile, EofNewLine, FileStats, Hunk, Modification, Moved};
+

use radicle::git;
use radicle::git::Oid;
+

use radicle_cli::git::unified_diff::{FileHeader, HunkHeader};
use radicle_cli::terminal;
use radicle_cli::terminal::highlight::Highlighter;
-
use radicle_surf::diff::{Copied, DiffFile, EofNewLine, FileStats, Hunk, Modification, Moved};
-
use ratatui::text::Line;

pub type FilePaths<'a> = (Option<(&'a Path, Oid)>, Option<(&'a Path, Oid)>);

@@ -279,6 +282,18 @@ impl HunkDiff {
        }
    }

+
    pub fn path(&self) -> &PathBuf {
+
        match self {
+
            Self::Added { path, .. } => path,
+
            Self::Deleted { path, .. } => path,
+
            Self::Moved { moved } => &moved.new_path,
+
            Self::Copied { copied } => &copied.new_path,
+
            Self::Modified { path, .. } => path,
+
            Self::EofChanged { path, .. } => path,
+
            Self::ModeChanged { path, .. } => path,
+
        }
+
    }
+

    pub fn file_header(&self) -> FileHeader {
        match self {
            Self::Added { header, .. } => header.clone(),