diff options
| author | Teddy Wing | 2020-08-22 00:05:11 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2020-08-22 00:05:11 +0200 | 
| commit | 8486be143b44a2d929430d41405124dcd1bfccb9 (patch) | |
| tree | 2e1a96431baf8bfdd17319601117fc5018dd48f2 /github-suggestion | |
| parent | ed25d1ae52b137ff445649aeb8cdac4d892ce313 (diff) | |
| download | git-suggestion-8486be143b44a2d929430d41405124dcd1bfccb9.tar.bz2 | |
Idea for adding diff coloursdiff-colours
Ideas for getting diff colours from the Git config and parsing them
using 'colorparse'.
Leaving this aside and planning to add diff colours by executing
`git-diff` instead. Shelling out to `git diff` would allow us to accept
diff command line options like `--word-diff` and have them work
transparently.
Diffstat (limited to 'github-suggestion')
| -rw-r--r-- | github-suggestion/Cargo.toml | 2 | ||||
| -rw-r--r-- | github-suggestion/src/color.rs | 91 | ||||
| -rw-r--r-- | github-suggestion/src/lib.rs | 2 | 
3 files changed, 95 insertions, 0 deletions
| diff --git a/github-suggestion/Cargo.toml b/github-suggestion/Cargo.toml index 34e197c..0ef1959 100644 --- a/github-suggestion/Cargo.toml +++ b/github-suggestion/Cargo.toml @@ -4,6 +4,8 @@ version = "0.1.0"  edition = "2018"  [dependencies] +ansi_term = "0.12.1" +colorparse = "2.0.1"  git2 = "0.13.8"  github-rs = "0.7.0"  regex = "1.3.9" diff --git a/github-suggestion/src/color.rs b/github-suggestion/src/color.rs new file mode 100644 index 0000000..5f4e954 --- /dev/null +++ b/github-suggestion/src/color.rs @@ -0,0 +1,91 @@ +// Copyright (c) 2020  Teddy Wing +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + + +use ansi_term::Style; +use colorparse; +use git2; +use thiserror::Error; + + +#[derive(Debug, Error)] +pub enum Error { +    #[error(transparent)] +    Git(#[from] git2::Error), +} + + +static SLOTS: [&'static str; 6] = [ +    "commit", +    "context", +    "frag", +    "func", +    "old", +    "new", +]; + + +#[derive(Debug, Default)] +pub struct Diff { +    context: Option<Style>, +    meta: Option<Style>, +    frag: Option<Style>, +    func: Option<Style>, +    old: Option<Style>, +    new: Option<Style>, +    commit: Option<Style>, +    whitespace: Option<Style>, +    oldMoved: Option<Style>, +    newMoved: Option<Style>, +    oldMovedDimmed: Option<Style>, +    oldMovedAlternative: Option<Style>, +    oldMovedAlternativeDimmed: Option<Style>, +    newMovedDimmed: Option<Style>, +    newMovedAlternative: Option<Style>, +    newMovedAlternativeDimmed: Option<Style>, +} + + +// pub fn diff(config: &git2::Config) -> Diff { +//     let diff = Diff::default(); +// +//     for slot in SLOTS { +//         let colors = match config.get_string(slot) { +//             Ok(c) => c, +//             Err(e) if e.code() == git2::ErrorCode::NotFound => return Ok(None), +//             Err(e) => return Err(Error::Git(e)), +//         }; +// +//         colorparse::parse(colors)?; +//     } +// } + +impl Diff { +    pub fn from_config(config: &git2::Config) -> Result<Self, Error> { +        let diff = Self::default(); + +        for slot in &SLOTS { +            let colors = match config.get_string(slot) { +                Ok(c) => c, +                Err(e) if e.code() == git2::ErrorCode::NotFound => return Ok(None), +                Err(e) => return Err(Error::Git(e)), +            }; + +            colorparse::parse(&colors)?; +        } + +        Ok(diff) +    } +} diff --git a/github-suggestion/src/lib.rs b/github-suggestion/src/lib.rs index 3ec6f00..b7e54cc 100644 --- a/github-suggestion/src/lib.rs +++ b/github-suggestion/src/lib.rs @@ -20,6 +20,8 @@  pub mod client;  pub mod suggestion; +pub(crate) mod color; +  mod url;  pub use crate::client::Client; | 
