diff options
-rw-r--r-- | src/cli.rs | 2 | ||||
-rw-r--r-- | src/config.rs | 5 | ||||
-rw-r--r-- | src/gitconfig.rs | 14 | ||||
-rw-r--r-- | src/main.rs | 6 | ||||
-rw-r--r-- | src/rewrite.rs | 47 | ||||
-rw-r--r-- | src/tests/integration_test_utils.rs | 5 |
6 files changed, 38 insertions, 41 deletions
@@ -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())), |