diff options
author | Matan Kushner <hello@matchai.dev> | 2021-01-26 16:53:51 -0500 |
---|---|---|
committer | Matan Kushner <hello@matchai.dev> | 2021-01-26 16:53:52 -0500 |
commit | 2da4310088fd76c157620ac69de81af4b7c54b23 (patch) | |
tree | 5ec32b86bf6185b90a0d0f98060f6393da30c23f | |
parent | 969c556855f1a2b3a08cdd2bd5f4c291e4d076ec (diff) |
Begin creating match statement for porcelain statuslibgit-to-git-cli
-rw-r--r-- | src/git.rs | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/git.rs b/src/git.rs index 3e86ef21a..1efac7c2c 100644 --- a/src/git.rs +++ b/src/git.rs @@ -306,17 +306,34 @@ fn parse_porcelain_output<S: Into<String>>(porcelain: S) -> GitStatus { characters.next().unwrap_or(' '), ); - // TODO: Revisit conflict and staged logic - if letter_codes.0 == letter_codes.1 { - vcs_status.conflicted += 1 - } else { - increment_git_status(&mut vcs_status, letter_codes.1); - } + + // // TODO: Revisit conflict and staged logic + // if letter_codes.0 == letter_codes.1 { + // vcs_status.conflicted += 1 + // } else { + // increment_git_status(&mut vcs_status, letter_codes.1); + // } }); vcs_status } +fn check_porcelain_line(vcs_status: &mut GitStatus, letter_codes: (char, char)) { + match letter_codes { + // Check for untracked files + ('?', '?') => vcs_status.untracked += 1, + + // Check for staged files + ('A', _) => vcs_status.added += 1, + ('M', ' ') => vcs_status.added += 1, + ('M', 'M') => vcs_status.added += 1, + ('M', 'D') => vcs_status.added += 1, + ('U', 'A') => vcs_status.added += 1, + + (_, _) => (), + } +} + /// Update the cumulative git status, given the "short format" letter of a file's status /// https://git-scm.com/docs/git-status#_short_format fn increment_git_status(vcs_status: &mut GitStatus, letter: char) { |