Add --config-file option

This commit is contained in:
sharkdp 2018-10-17 23:02:53 +02:00
parent 10965a6122
commit 8dc7e2efa3
3 changed files with 19 additions and 2 deletions

View File

@ -265,6 +265,14 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
.hidden(true)
.help("Do not use the configuration file"),
)
.arg(
Arg::with_name("config-file")
.long("config-file")
.conflicts_with("list-languages")
.conflicts_with("list-themes")
.hidden(true)
.help("Show path to the configuration file"),
)
.subcommand(
SubCommand::with_name("cache")
.about("Modify the syntax-definition and theme cache")

View File

@ -1,16 +1,20 @@
use std::env;
use std::ffi::OsString;
use std::fs;
use std::path::PathBuf;
use shell_words;
use dirs::PROJECT_DIRS;
use util::transpose;
pub fn config_file() -> PathBuf {
PROJECT_DIRS.config_dir().join("config")
}
pub fn get_args_from_config_file() -> Result<Vec<OsString>, shell_words::ParseError> {
let config_file = PROJECT_DIRS.config_dir().join("config");
Ok(transpose(
fs::read_to_string(config_file)
fs::read_to_string(config_file())
.ok()
.map(|content| get_args_from_str(&content)),
)?

View File

@ -50,6 +50,7 @@ use ansi_term::Style;
use app::{App, Config};
use assets::{clear_assets, config_dir, HighlightingAssets};
use config::config_file;
use controller::Controller;
use inputfile::InputFile;
use style::{OutputComponent, OutputComponents};
@ -224,6 +225,10 @@ fn run() -> Result<bool> {
} else if app.matches.is_present("list-themes") {
list_themes(&config)?;
Ok(true)
} else if app.matches.is_present("config-file") {
println!("{}", config_file().to_string_lossy());
Ok(true)
} else {
run_controller(&config)