feat: Implement `starship configure` command (#751)

This commit is contained in:
Dominik Braun 2019-12-18 22:09:36 +01:00 committed by Matan Kushner
parent c82aeb70db
commit a4c5c00a73
2 changed files with 40 additions and 0 deletions

37
src/configure.rs Normal file
View File

@ -0,0 +1,37 @@
use std::env;
use std::process::Command;
const UNKNOWN_CONFIG: &str = "<unknown config>";
const STD_EDITOR: &str = "vi";
pub fn edit_configuration() {
let editor = get_editor();
let config_path = get_config_path();
Command::new(editor)
.arg(config_path)
.status()
.expect("failed to open file");
}
fn get_editor() -> String {
match env::var("EDITOR") {
Ok(val) => val,
Err(_) => STD_EDITOR.to_string(),
}
}
fn get_config_path() -> String {
let home_dir = dirs::home_dir();
if home_dir.is_none() {
return UNKNOWN_CONFIG.to_string();
}
let path = home_dir.unwrap().join(".config/starship.toml");
match path.to_str() {
Some(p) => String::from(p),
None => UNKNOWN_CONFIG.to_string(),
}
}

View File

@ -4,6 +4,7 @@ extern crate clap;
mod bug_report;
mod config;
mod configs;
mod configure;
mod context;
mod init;
mod module;
@ -110,6 +111,7 @@ fn main() {
.arg(&keymap_arg)
.arg(&jobs_arg),
)
.subcommand(SubCommand::with_name("configure").about("Edit the starship configuration"))
.subcommand(SubCommand::with_name("bug-report").about(
"Create a pre-populated GitHub issue with information about your configuration",
))
@ -137,6 +139,7 @@ fn main() {
print::module(module_name, sub_m.clone());
}
}
("configure", Some(_)) => configure::edit_configuration(),
("bug-report", Some(_)) => bug_report::create(),
_ => {}
}