summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cli.rs2
-rw-r--r--src/config.rs5
-rw-r--r--src/gitconfig.rs14
-rw-r--r--src/main.rs6
-rw-r--r--src/rewrite.rs47
-rw-r--r--src/tests/integration_test_utils.rs5
6 files changed, 38 insertions, 41 deletions
diff --git a/src/cli.rs b/src/cli.rs
index 0a81126f..6627ac17 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -450,7 +450,7 @@ pub struct Opt {
pub fn process_command_line_arguments<'a>(
mut opt: Opt,
- arg_matches: Option<clap::ArgMatches>,
+ arg_matches: clap::ArgMatches,
git_config: &mut Option<git2::Config>,
) -> config::Config<'a> {
let assets = HighlightingAssets::new();
diff --git a/src/config.rs b/src/config.rs
index af8b57cb..f68f7b9a 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -380,6 +380,8 @@ mod tests {
use super::*;
use std::env;
+ use structopt::clap;
+
use crate::cli;
use crate::color;
use crate::tests::integration_test_utils::integration_test_utils;
@@ -469,7 +471,8 @@ mod tests {
options.dark = false;
}
}
- let config = cli::process_command_line_arguments(options, None, &mut None);
+ let config =
+ cli::process_command_line_arguments(options, clap::ArgMatches::new(), &mut None);
assert_eq!(config.syntax_theme_name, expected_syntax_theme);
if syntax_theme::is_no_syntax_highlighting_theme_name(expected_syntax_theme) {
assert!(config.syntax_theme.is_none())
diff --git a/src/gitconfig.rs b/src/gitconfig.rs
index 54451ab3..2ee689c3 100644
--- a/src/gitconfig.rs
+++ b/src/gitconfig.rs
@@ -13,7 +13,7 @@ mod set_options {
([$( ($opt_name:expr, $field_ident:ident, $keys:expr, $default:expr) ),* ],
$opt:expr, $arg_matches:expr, $git_config:expr) => {
$(
- if $arg_matches.is_none() || !$crate::cli::user_supplied_option($opt_name, $arg_matches.unwrap()) {
+ if !$crate::cli::user_supplied_option($opt_name, $arg_matches) {
$opt.$field_ident =
$crate::gitconfig::git_config_get::_string($keys, $git_config)
.unwrap_or_else(|| $default.to_string());
@@ -26,7 +26,7 @@ mod set_options {
([$( ($opt_name:expr, $field_ident:ident, $keys:expr, $default:expr) ),* ],
$opt:expr, $arg_matches:expr, $git_config:expr) => {
$(
- if $arg_matches.is_none() || !$crate::cli::user_supplied_option($opt_name, $arg_matches.unwrap()) {
+ if !$crate::cli::user_supplied_option($opt_name, $arg_matches) {
$opt.$field_ident = match ($crate::gitconfig::git_config_get::_string($keys, $git_config), $default) {
(Some(s), _) => Some(s),
(None, Some(default)) => Some(default.to_string()),
@@ -41,7 +41,7 @@ mod set_options {
([$( ($opt_name:expr, $field_ident:ident, $keys:expr, $default:expr) ),* ],
$opt:expr, $arg_matches:expr, $git_config:expr) => {
$(
- if $arg_matches.is_none() || !$crate::cli::user_supplied_option($opt_name, $arg_matches.unwrap()) {
+ if !$crate::cli::user_supplied_option($opt_name, $arg_matches) {
$opt.$field_ident =
$crate::gitconfig::git_config_get::_bool($keys, $git_config)
.unwrap_or_else(|| $default);
@@ -54,7 +54,7 @@ mod set_options {
([$( ($opt_name:expr, $field_ident:ident, $keys:expr, $default:expr) ),* ],
$opt:expr, $arg_matches:expr, $git_config:expr) => {
$(
- if $arg_matches.is_none() || !$crate::cli::user_supplied_option($opt_name, $arg_matches.unwrap()) {
+ if !$crate::cli::user_supplied_option($opt_name, $arg_matches) {
$opt.$field_ident = match $crate::gitconfig::git_config_get::_string($keys, $git_config) {
Some(s) => s.parse::<f64>().unwrap_or($default),
None => $default,
@@ -68,7 +68,7 @@ mod set_options {
([$( ($opt_name:expr, $field_ident:ident, $keys:expr, $default:expr) ),* ],
$opt:expr, $arg_matches:expr, $git_config:expr) => {
$(
- if $arg_matches.is_none() || !$crate::cli::user_supplied_option($opt_name, $arg_matches.unwrap()) {
+ if !$crate::cli::user_supplied_option($opt_name, $arg_matches) {
$opt.$field_ident = match $crate::gitconfig::git_config_get::_i64($keys, $git_config) {
Some(int) => int as usize,
None => $default,
@@ -241,7 +241,7 @@ mod tests {
use std::path::Path;
use git2;
- use structopt::StructOpt;
+ use structopt::{clap, StructOpt};
use crate::cli;
use crate::config;
@@ -295,6 +295,6 @@ mod tests {
Some(contents) => Some(make_git_config(contents)),
None => None,
};
- cli::process_command_line_arguments(options, None, &mut git_config)
+ cli::process_command_line_arguments(options, clap::ArgMatches::new(), &mut git_config)
}
}
diff --git a/src/main.rs b/src/main.rs
index 3d9fa3d7..f32000ca 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -29,7 +29,7 @@ use std::process;
use ansi_term::{self, Color};
use atty;
use bytelines::ByteLinesReader;
-use structopt::StructOpt;
+use structopt::{clap, StructOpt};
use crate::bat::assets::{list_languages, HighlightingAssets};
use crate::bat::output::{OutputType, PagingMode};
@@ -73,7 +73,7 @@ fn main() -> std::io::Result<()> {
Err(_) => None,
};
- let config = cli::process_command_line_arguments(opt, Some(arg_matches), &mut git_config);
+ let config = cli::process_command_line_arguments(opt, arg_matches, &mut git_config);
if atty::is(atty::Stream::Stdin) {
return diff(
@@ -204,7 +204,7 @@ index f38589a..0f1bb83 100644
hunk_header_style: "omit".to_string(),
..opt.clone()
},
- None,
+ clap::ArgMatches::new(),
&mut None,
);
let mut output_type =
diff --git a/src/rewrite.rs b/src/rewrite.rs
index eff185eb..57ce7d5d 100644
--- a/src/rewrite.rs
+++ b/src/rewrite.rs
@@ -10,18 +10,18 @@ use crate::cli::{self, user_supplied_option};
pub fn apply_rewrite_rules(
opt: &mut cli::Opt,
- arg_matches: Option<clap::ArgMatches>,
+ arg_matches: clap::ArgMatches,
git_config: &mut Option<git2::Config>,
) {
- _rewrite_options_to_honor_git_config(opt, arg_matches.as_ref(), git_config);
+ _rewrite_options_to_honor_git_config(opt, &arg_matches, git_config);
_rewrite_style_strings_to_honor_deprecated_minus_plus_options(opt);
_rewrite_options_to_implement_deprecated_commit_and_file_style_box_option(opt);
_rewrite_options_to_implement_deprecated_hunk_style_option(opt);
- _rewrite_options_to_implement_deprecated_theme_option(opt, arg_matches.as_ref());
+ _rewrite_options_to_implement_deprecated_theme_option(opt, &arg_matches);
_rewrite_options_to_implement_color_only(opt);
- _rewrite_options_to_implement_diff_highlight_emulation(opt, arg_matches.as_ref(), git_config);
- _rewrite_options_to_implement_diff_so_fancy_emulation(opt, arg_matches.as_ref(), git_config);
- _rewrite_options_to_implement_navigate(opt, arg_matches.as_ref());
+ _rewrite_options_to_implement_diff_highlight_emulation(opt, &arg_matches, git_config);
+ _rewrite_options_to_implement_diff_so_fancy_emulation(opt, &arg_matches, git_config);
+ _rewrite_options_to_implement_navigate(opt, &arg_matches);
}
/// Implement --color-only
@@ -40,7 +40,7 @@ fn _rewrite_options_to_implement_color_only(opt: &mut cli::Opt) {
fn _rewrite_options_to_honor_git_config(
opt: &mut cli::Opt,
- arg_matches: Option<&clap::ArgMatches>,
+ arg_matches: &clap::ArgMatches,
git_config: &mut Option<git2::Config>,
) {
if opt.no_gitconfig {
@@ -111,7 +111,7 @@ fn _rewrite_options_to_honor_git_config(
/// Implement --emulate-diff-highlight
fn _rewrite_options_to_implement_diff_highlight_emulation(
opt: &mut cli::Opt,
- arg_matches: Option<&clap::ArgMatches>,
+ arg_matches: &clap::ArgMatches,
git_config: &mut Option<git2::Config>,
) {
if !opt.emulate_diff_highlight {
@@ -166,7 +166,7 @@ fn _rewrite_options_to_implement_diff_highlight_emulation(
/// Implement --emulate-diff-so-fancy
fn _rewrite_options_to_implement_diff_so_fancy_emulation(
opt: &mut cli::Opt,
- arg_matches: Option<&clap::ArgMatches>,
+ arg_matches: &clap::ArgMatches,
git_config: &mut Option<git2::Config>,
) {
if !opt.emulate_diff_so_fancy {
@@ -220,15 +220,10 @@ fn _rewrite_options_to_implement_diff_so_fancy_emulation(
}
/// Implement --navigate
-fn _rewrite_options_to_implement_navigate(
- opt: &mut cli::Opt,
- arg_matches: Option<&clap::ArgMatches>,
-) {
+fn _rewrite_options_to_implement_navigate(opt: &mut cli::Opt, arg_matches: &clap::ArgMatches) {
if opt.navigate {
- if let Some(arg_matches) = arg_matches {
- if !user_supplied_option("file-modified-label", arg_matches) {
- opt.file_modified_label = "Δ".to_string();
- }
+ if !user_supplied_option("file-modified-label", arg_matches) {
+ opt.file_modified_label = "Δ".to_string();
}
}
}
@@ -236,13 +231,11 @@ fn _rewrite_options_to_implement_navigate(
/// Honor deprecated --theme
fn _rewrite_options_to_implement_deprecated_theme_option(
opt: &mut cli::Opt,
- arg_matches: Option<&clap::ArgMatches>,
+ arg_matches: &clap::ArgMatches,
) {
- if let Some(arg_matches) = arg_matches {
- if user_supplied_option("deprecated-theme", arg_matches) {
- if let Some(syntax_theme) = opt.deprecated_theme.as_ref() {
- opt.syntax_theme = Some(syntax_theme.to_string());
- }
+ if user_supplied_option("deprecated-theme", arg_matches) {
+ if let Some(syntax_theme) = opt.deprecated_theme.as_ref() {
+ opt.syntax_theme = Some(syntax_theme.to_string());
}
}
}
@@ -409,7 +402,7 @@ fn _get_rewritten_minus_plus_style_string(
mod tests {
use std::ffi::OsString;
- use structopt::StructOpt;
+ use structopt::{clap, StructOpt};
use crate::cli;
use crate::rewrite::apply_rewrite_rules;
@@ -419,7 +412,7 @@ mod tests {
let mut opt = cli::Opt::from_iter(Vec::<OsString>::new());
let before = opt.clone();
- apply_rewrite_rules(&mut opt, None, &mut None);
+ apply_rewrite_rules(&mut opt, clap::ArgMatches::new(), &mut None);
assert_eq!(opt, before);
}
@@ -432,7 +425,7 @@ mod tests {
opt.deprecated_hunk_style = Some("underline".to_string());
let default = "blue box";
assert_eq!(opt.hunk_header_decoration_style, default);
- apply_rewrite_rules(&mut opt, None, &mut None);
+ apply_rewrite_rules(&mut opt, clap::ArgMatches::new(), &mut None);
assert_eq!(opt.deprecated_hunk_style, None);
assert_eq!(opt.hunk_header_decoration_style, "underline");
}
@@ -443,7 +436,7 @@ mod tests {
opt.deprecated_hunk_style = Some("".to_string());
let default = "blue box";
assert_eq!(opt.hunk_header_decoration_style, default);
- apply_rewrite_rules(&mut opt, None, &mut None);
+ apply_rewrite_rules(&mut opt, clap::ArgMatches::new(), &mut None);
assert_eq!(opt.deprecated_hunk_style, None);
assert_eq!(opt.hunk_header_decoration_style, default);
}
diff --git a/src/tests/integration_test_utils.rs b/src/tests/integration_test_utils.rs
index 8d847c56..e67038c8 100644
--- a/src/tests/integration_test_utils.rs
+++ b/src/tests/integration_test_utils.rs
@@ -5,7 +5,7 @@ pub mod integration_test_utils {
use bytelines::ByteLines;
use console::strip_ansi_codes;
- use structopt::StructOpt;
+ use structopt::{clap, StructOpt};
use crate::cli;
use crate::config;
@@ -33,7 +33,8 @@ pub mod integration_test_utils {
pub fn run_delta<'a>(input: &str, options: cli::Opt) -> (String, config::Config<'a>) {
let mut writer: Vec<u8> = Vec::new();
- let config = cli::process_command_line_arguments(options, None, &mut None);
+ let config =
+ cli::process_command_line_arguments(options, clap::ArgMatches::new(), &mut None);
delta(
ByteLines::new(BufReader::new(input.as_bytes())),