Skip to content

Commit

Permalink
Support a hidden arg --no-custom-assets that skips loading assets fro…
Browse files Browse the repository at this point in the history
…m the cache
  • Loading branch information
Enselic committed Jul 28, 2021
1 parent c0e0966 commit f92bf43
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 6 deletions.
1 change: 1 addition & 0 deletions assets/completions/bat.zsh.in
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ _{{PROJECT_EXECUTABLE}}_main() {
'(-r --line-range)'{-r+,--line-range=}'[Only print the lines from N to M]:<N\:M>...'
'(: --list-themes --list-languages -L)'{-L,--list-languages}'[Display all supported languages]'
'(: --no-config)'--no-config'[Do not use the configuration file]'
'(: --no-custom-assets)'--no-custom-assets'[Do not load custom assets]'
'(: --config-dir)'--config-dir'[Show bat'"'"'s configuration directory]'
'(: --config-file)'--config-file'[Show path to the configuration file]'
'(: --generate-config-file)'--generate-config-file'[Generates a default configuration file]'
Expand Down
1 change: 1 addition & 0 deletions src/bin/bat/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ impl App {
.map(LineRanges::from)
.map(HighlightedLineRanges)
.unwrap_or_default(),
use_custom_assets: !self.matches.is_present("no-custom-assets"),
})
}

Expand Down
10 changes: 7 additions & 3 deletions src/bin/bat/assets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ pub fn clear_assets() {
clear_asset("metadata.yaml", "metadata file");
}

pub fn assets_from_cache_or_binary() -> Result<HighlightingAssets> {
pub fn assets_from_cache_or_binary(use_custom_assets: bool) -> Result<HighlightingAssets> {
let cache_dir = PROJECT_DIRS.cache_dir();
if let Some(metadata) = AssetsMetadata::load_from_folder(&cache_dir)? {
if !metadata.is_compatible_with(crate_version!()) {
Expand All @@ -41,8 +41,12 @@ pub fn assets_from_cache_or_binary() -> Result<HighlightingAssets> {
}
}

Ok(HighlightingAssets::from_cache(&cache_dir)
.unwrap_or_else(|_| HighlightingAssets::from_binary()))
let custom_assets = if use_custom_assets {
HighlightingAssets::from_cache(&cache_dir).ok()
} else {
None
};
Ok(custom_assets.unwrap_or_else(|| HighlightingAssets::from_binary()))
}

fn clear_asset(filename: &str, description: &str) {
Expand Down
6 changes: 6 additions & 0 deletions src/bin/bat/clap_app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,12 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
.hidden(true)
.help("Do not use the configuration file"),
)
.arg(
Arg::with_name("no-custom-assets")
.long("no-custom-assets")
.hidden(true)
.help("Do not load custom assets"),
)
.arg(
Arg::with_name("config-file")
.long("config-file")
Expand Down
6 changes: 3 additions & 3 deletions src/bin/bat/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ fn get_syntax_mapping_to_paths<'a>(
pub fn get_languages(config: &Config) -> Result<String> {
let mut result: String = String::new();

let assets = assets_from_cache_or_binary()?;
let assets = assets_from_cache_or_binary(config.use_custom_assets)?;
let mut languages = assets
.syntaxes()
.iter()
Expand Down Expand Up @@ -175,7 +175,7 @@ fn theme_preview_file<'a>() -> Input<'a> {
}

pub fn list_themes(cfg: &Config) -> Result<()> {
let assets = assets_from_cache_or_binary()?;
let assets = assets_from_cache_or_binary(cfg.use_custom_assets)?;
let mut config = cfg.clone();
let mut style = HashSet::new();
style.insert(StyleComponent::Plain);
Expand Down Expand Up @@ -216,7 +216,7 @@ pub fn list_themes(cfg: &Config) -> Result<()> {
}

fn run_controller(inputs: Vec<Input>, config: &Config) -> Result<bool> {
let assets = assets_from_cache_or_binary()?;
let assets = assets_from_cache_or_binary(config.use_custom_assets)?;
let controller = Controller::new(&config, &assets);
controller.run(inputs)
}
Expand Down
5 changes: 5 additions & 0 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ pub struct Config<'a> {

/// Ranges of lines which should be highlighted with a special background color
pub highlighted_lines: HighlightedLineRanges,

/// If custom (a.k.a. cached) assets are allowed to be used.
/// If this is false or if custom assets are not available, assets
/// from the binary will be used instead.
pub use_custom_assets: bool,
}

#[cfg(all(feature = "application", feature = "paging"))]
Expand Down
11 changes: 11 additions & 0 deletions tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,17 @@ fn does_not_print_unwanted_file_named_cache() {
bat_with_config().arg("cach").assert().failure();
}

#[test]
fn accepts_no_custom_assets_arg() {
// Just make sure --no-custom-assets is considered a valid arg
// Don't bother to actually verify that it works
bat()
.arg("--no-custom-assets")
.arg("test.txt")
.assert()
.success();
}

#[test]
fn unicode_wrap() {
bat_with_config()
Expand Down

0 comments on commit f92bf43

Please sign in to comment.