summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-11-14 14:26:50 -0500
committerDan Davison <dandavison7@gmail.com>2020-11-22 12:40:56 -0500
commitf8580ba43657c0f7548a399f555bb93a89b75684 (patch)
tree0b3e6b31c78ef9b38d9bc5fc1f52d2bcce4263e5
parent47198cc9f2080755126727c775a106e73566d03a (diff)
Refactor to provide a library crate317-delta-library
Ref #317
-rw-r--r--Cargo.toml4
-rw-r--r--src/bin/delta/main.rs (renamed from src/main.rs)73
-rw-r--r--src/errors.rs9
-rw-r--r--src/lib.rs22
4 files changed, 52 insertions, 56 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 93f58aea..19164206 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,10 +11,6 @@ readme = "README.md"
repository = "https://github.com/dandavison/delta"
version = "0.4.5"
-[[bin]]
-name = "delta"
-path = "src/main.rs"
-
[dependencies]
ansi_colours = "1.0.1"
ansi_term = "0.12.1"
diff --git a/src/main.rs b/src/bin/delta/main.rs
index 69154f30..83338d48 100644
--- a/src/main.rs
+++ b/src/bin/delta/main.rs
@@ -1,30 +1,5 @@
extern crate bitflags;
-#[macro_use]
-extern crate error_chain;
-
-mod align;
-mod ansi;
-mod bat_utils;
-mod cli;
-mod color;
-mod config;
-mod delta;
-mod draw;
-mod edits;
-mod env;
-mod features;
-mod format;
-mod git_config;
-mod git_config_entry;
-mod options;
-mod paint;
-mod parse;
-mod parse_style;
-mod style;
-mod syntect_color;
-mod tests;
-
use std::io::{self, ErrorKind, Read, Write};
use std::path::PathBuf;
use std::process;
@@ -33,27 +8,19 @@ use bytelines::ByteLinesReader;
use itertools::Itertools;
use structopt::StructOpt;
-use crate::bat_utils::assets::{list_languages, HighlightingAssets};
-use crate::bat_utils::output::{OutputType, PagingMode};
-use crate::delta::delta;
-use crate::options::theme::is_light_syntax_theme;
-
-pub mod errors {
- error_chain! {
- foreign_links {
- Io(::std::io::Error);
- SyntectError(::syntect::LoadingError);
- ParseIntError(::std::num::ParseIntError);
- }
- }
-}
+use git_delta::bat_utils;
+use git_delta::cli;
+use git_delta::config;
+use git_delta::delta::delta;
+use git_delta::git_config;
+use git_delta::options::theme::is_light_syntax_theme;
fn main() -> std::io::Result<()> {
- let assets = HighlightingAssets::new();
+ let assets = bat_utils::assets::HighlightingAssets::new();
let opt = cli::Opt::from_args_and_git_config(&mut git_config::GitConfig::try_create(), assets);
if opt.list_languages {
- list_languages()?;
+ bat_utils::assets::list_languages()?;
process::exit(0);
} else if opt.list_syntax_themes {
list_syntax_themes()?;
@@ -77,7 +44,8 @@ fn main() -> std::io::Result<()> {
);
}
- let mut output_type = OutputType::from_mode(config.paging_mode, None, &config).unwrap();
+ let mut output_type =
+ bat_utils::output::OutputType::from_mode(config.paging_mode, None, &config).unwrap();
let mut writer = output_type.handle().unwrap();
if let Err(error) = delta(io::stdin().lock().byte_lines(), &mut writer, &config) {
@@ -114,7 +82,8 @@ fn diff(
process::exit(1);
});
- let mut output_type = OutputType::from_mode(config.paging_mode, None, &config).unwrap();
+ let mut output_type =
+ bat_utils::output::OutputType::from_mode(config.paging_mode, None, &config).unwrap();
let mut writer = output_type.handle().unwrap();
if let Err(error) = delta(
BufReader::new(diff_process.stdout.unwrap()).byte_lines(),
@@ -227,9 +196,9 @@ fn show_config(config: &config::Config) {
max_line_length = config.max_line_length,
navigate = config.navigate,
paging_mode = match config.paging_mode {
- PagingMode::Always => "always",
- PagingMode::Never => "never",
- PagingMode::QuitIfOneScreen => "auto",
+ bat_utils::output::PagingMode::Always => "always",
+ bat_utils::output::PagingMode::Never => "never",
+ bat_utils::output::PagingMode::QuitIfOneScreen => "auto",
},
side_by_side = config.side_by_side,
syntax_theme = config
@@ -266,9 +235,9 @@ where
fn show_syntax_themes() -> std::io::Result<()> {
let mut opt = cli::Opt::from_args();
- let assets = HighlightingAssets::new();
- let mut output_type = OutputType::from_mode(
- PagingMode::QuitIfOneScreen,
+ let assets = bat_utils::assets::HighlightingAssets::new();
+ let mut output_type = bat_utils::output::OutputType::from_mode(
+ bat_utils::output::PagingMode::QuitIfOneScreen,
None,
&config::Config::from(cli::Opt::default()),
)
@@ -320,7 +289,7 @@ index f38589a..0f1bb83 100644
opt.computed.is_light_mode = is_light_mode;
let mut config = config::Config::from(opt);
let title_style = ansi_term::Style::new().bold();
- let assets = HighlightingAssets::new();
+ let assets = bat_utils::assets::HighlightingAssets::new();
for syntax_theme in assets
.theme_set
@@ -350,7 +319,7 @@ pub fn list_syntax_themes() -> std::io::Result<()> {
}
pub fn _list_syntax_themes_for_humans() -> std::io::Result<()> {
- let assets = HighlightingAssets::new();
+ let assets = bat_utils::assets::HighlightingAssets::new();
let themes = &assets.theme_set.themes;
let stdout = io::stdout();
let mut stdout = stdout.lock();
@@ -371,7 +340,7 @@ pub fn _list_syntax_themes_for_humans() -> std::io::Result<()> {
}
pub fn _list_syntax_themes_for_machines() -> std::io::Result<()> {
- let assets = HighlightingAssets::new();
+ let assets = bat_utils::assets::HighlightingAssets::new();
let themes = &assets.theme_set.themes;
let stdout = io::stdout();
let mut stdout = stdout.lock();
diff --git a/src/errors.rs b/src/errors.rs
new file mode 100644
index 00000000..1bf46c26
--- /dev/null
+++ b/src/errors.rs
@@ -0,0 +1,9 @@
+use error_chain::error_chain;
+
+error_chain! {
+ foreign_links {
+ Io(::std::io::Error);
+ SyntectError(::syntect::LoadingError);
+ ParseIntError(::std::num::ParseIntError);
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 00000000..a41c5f0b
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,22 @@
+mod align;
+mod ansi;
+pub mod bat_utils;
+pub mod cli;
+mod color;
+pub mod config;
+pub mod delta;
+mod draw;
+mod edits;
+mod env;
+mod errors;
+mod features;
+mod format;
+pub mod git_config;
+mod git_config_entry;
+pub mod options;
+mod paint;
+mod parse;
+mod parse_style;
+mod style;
+mod syntect_color;
+mod tests;