From 8486be143b44a2d929430d41405124dcd1bfccb9 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 22 Aug 2020 00:05:11 +0200 Subject: Idea for adding diff 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. --- Cargo.lock | 26 ++++++++++++ github-suggestion/Cargo.toml | 2 + github-suggestion/src/color.rs | 91 ++++++++++++++++++++++++++++++++++++++++++ github-suggestion/src/lib.rs | 2 + 4 files changed, 121 insertions(+) create mode 100644 github-suggestion/src/color.rs diff --git a/Cargo.lock b/Cargo.lock index e6fd541..b7408da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,6 +24,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "ansi_term" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "autocfg" version = "1.0.0" @@ -100,6 +115,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "colorparse" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179f9a3462d05f4c15041d8ba8bd59534731fe6ddd89a65ca61ec67655f37379" +dependencies = [ + "ansi_term 0.9.0", +] + [[package]] name = "crossbeam-deque" version = "0.7.3" @@ -277,6 +301,8 @@ dependencies = [ name = "github-suggestion" version = "0.1.0" dependencies = [ + "ansi_term 0.12.1", + "colorparse", "git2", "github-rs", "regex", 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 . + + +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