Use "context" to contain run details (#14)

* Create "context" to contain run details

* Use context in tests and benchmarks
This commit is contained in:
Matan Kushner
2019-04-19 16:57:14 -04:00
committed by GitHub
parent 6d7485cf50
commit 022e0002e4
11 changed files with 81 additions and 45 deletions
+13 -5
View File
@@ -1,18 +1,26 @@
use clap::{App, Arg};
use starship::context::Context;
use starship::modules;
use std::path::Path;
use std::path::PathBuf;
pub fn render_segment(module: &str, path: &Path) -> String {
render_segment_with_status(module, path, "0")
pub fn render_segment<T>(module: &str, path: T) -> String
where
T: Into<PathBuf>,
{
render_segment_with_status(module, &path.into(), "0")
}
pub fn render_segment_with_status(module: &str, path: &Path, status: &str) -> String {
pub fn render_segment_with_status<T>(module: &str, path: T, status: &str) -> String
where
T: Into<PathBuf>,
{
// Create an `Arg` with status_code of "0"
let args = App::new("starship")
.arg(Arg::with_name("status_code"))
.get_matches_from(vec!["starship", status]);
let context = Context::new_with_dir(args, path.into());
let segment = modules::handle(module, path, &args);
let segment = modules::handle(module, &context);
segment.unwrap().output()
}