mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 10:25:42 +02:00
Allow def-env to hide environment variables (#921)
This commit is contained in:
@ -140,6 +140,23 @@ impl Stack {
|
||||
result
|
||||
}
|
||||
|
||||
/// Same as get_env_vars, but returns only the names as a HashSet
|
||||
pub fn get_env_var_names(&self, engine_state: &EngineState) -> HashSet<String> {
|
||||
let mut result: HashSet<String> = engine_state
|
||||
.env_vars
|
||||
.keys()
|
||||
.filter(|k| !self.env_hidden.contains(*k))
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
for scope in &self.env_vars {
|
||||
let scope_keys: HashSet<String> = scope.keys().cloned().collect();
|
||||
result.extend(scope_keys);
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
pub fn get_env_var(&self, engine_state: &EngineState, name: &str) -> Option<Value> {
|
||||
for scope in self.env_vars.iter().rev() {
|
||||
if let Some(v) = scope.get(name) {
|
||||
@ -154,6 +171,20 @@ impl Stack {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn has_env_var(&self, engine_state: &EngineState, name: &str) -> bool {
|
||||
for scope in self.env_vars.iter().rev() {
|
||||
if scope.contains_key(name) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if self.env_hidden.contains(name) {
|
||||
false
|
||||
} else {
|
||||
engine_state.env_vars.contains_key(name)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_env_var(&mut self, engine_state: &EngineState, name: &str) -> Option<Value> {
|
||||
for scope in self.env_vars.iter_mut().rev() {
|
||||
if let Some(v) = scope.remove(name) {
|
||||
|
Reference in New Issue
Block a user