mirror of
https://github.com/nushell/nushell
synced 2024-12-28 05:53:09 +00:00
plugin_nu_path
This commit is contained in:
parent
0ea3527544
commit
7801c03e2d
1 changed files with 40 additions and 34 deletions
74
src/cli.rs
74
src/cli.rs
|
@ -163,6 +163,8 @@ fn load_plugins(context: &mut Context) -> Result<(), ShellError> {
|
||||||
require_literal_leading_dot: false,
|
require_literal_leading_dot: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
set_path_from_config();
|
||||||
|
|
||||||
for path in search_paths() {
|
for path in search_paths() {
|
||||||
let mut pattern = path.to_path_buf();
|
let mut pattern = path.to_path_buf();
|
||||||
|
|
||||||
|
@ -472,6 +474,43 @@ fn chomp_newline(s: &str) -> &str {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn set_path_from_config() {
|
||||||
|
let config = crate::data::config::read(Tag::unknown(), &None).unwrap();
|
||||||
|
if config.contains_key("path") {
|
||||||
|
// Override the path with what they give us from config
|
||||||
|
let value = config.get("path");
|
||||||
|
|
||||||
|
match value {
|
||||||
|
Some(value) => match value {
|
||||||
|
Tagged {
|
||||||
|
item: Value::Table(table),
|
||||||
|
..
|
||||||
|
} => {
|
||||||
|
let mut paths = vec![];
|
||||||
|
for val in table {
|
||||||
|
let path_str = val.as_string();
|
||||||
|
match path_str {
|
||||||
|
Err(_) => {}
|
||||||
|
Ok(path_str) => {
|
||||||
|
paths.push(PathBuf::from(path_str));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let path_os_string = std::env::join_paths(&paths);
|
||||||
|
match path_os_string {
|
||||||
|
Ok(path_os_string) => {
|
||||||
|
std::env::set_var("PATH", path_os_string);
|
||||||
|
}
|
||||||
|
Err(_) => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
enum LineResult {
|
enum LineResult {
|
||||||
Success(String),
|
Success(String),
|
||||||
Error(String, ShellError),
|
Error(String, ShellError),
|
||||||
|
@ -526,40 +565,7 @@ async fn process_line(readline: Result<String, ReadlineError>, ctx: &mut Context
|
||||||
|
|
||||||
// Check the config to see if we need to update the path
|
// Check the config to see if we need to update the path
|
||||||
// TODO: make sure config is cached so we don't path this load every call
|
// TODO: make sure config is cached so we don't path this load every call
|
||||||
let config = crate::data::config::read(Tag::unknown(), &None).unwrap();
|
set_path_from_config();
|
||||||
if config.contains_key("path") {
|
|
||||||
// Override the path with what they give us from config
|
|
||||||
let value = config.get("path");
|
|
||||||
|
|
||||||
match value {
|
|
||||||
Some(value) => match value {
|
|
||||||
Tagged {
|
|
||||||
item: Value::Table(table),
|
|
||||||
..
|
|
||||||
} => {
|
|
||||||
let mut paths = vec![];
|
|
||||||
for val in table {
|
|
||||||
let path_str = val.as_string();
|
|
||||||
match path_str {
|
|
||||||
Err(_) => {}
|
|
||||||
Ok(path_str) => {
|
|
||||||
paths.push(PathBuf::from(path_str));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let path_os_string = std::env::join_paths(&paths);
|
|
||||||
match path_os_string {
|
|
||||||
Ok(path_os_string) => {
|
|
||||||
std::env::set_var("PATH", path_os_string);
|
|
||||||
}
|
|
||||||
Err(_) => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
},
|
|
||||||
None => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let item: Option<ClassifiedCommand> = iter.next();
|
let item: Option<ClassifiedCommand> = iter.next();
|
||||||
|
|
Loading…
Reference in a new issue