Allow let-env to be dynamic (#940)

This commit is contained in:
JT 2022-02-04 16:19:13 -05:00 committed by GitHub
parent 8204cc4f28
commit f29dbeddd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

View File

@ -1,4 +1,4 @@
use nu_engine::{current_dir, eval_expression_with_input};
use nu_engine::{current_dir, eval_expression_with_input, CallExt};
use nu_protocol::ast::Call;
use nu_protocol::engine::{Command, EngineState, Stack};
use nu_protocol::{Category, PipelineData, Signature, SyntaxShape, Value};
@ -33,9 +33,7 @@ impl Command for LetEnv {
call: &Call,
input: PipelineData,
) -> Result<nu_protocol::PipelineData, nu_protocol::ShellError> {
let env_var = call.positional[0]
.as_string()
.expect("internal error: missing variable");
let env_var = call.req(engine_state, stack, 0)?;
let keyword_expr = call.positional[1]
.as_keyword()

View File

@ -230,3 +230,8 @@ fn export_def_env() -> TestResult {
"BAZ",
)
}
#[test]
fn dynamic_let_env() -> TestResult {
run_test(r#"let x = "FOO"; let-env $x = "BAZ"; $env.FOO"#, "BAZ")
}