From 7f17a13b0e82114be7f305bf604d03ec56c4f32d Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Thu, 6 Jun 2024 18:31:35 -0700 Subject: [PATCH] clean up the handling of name in run_external, now that we don't need to know about the expr --- crates/nu-command/src/system/run_external.rs | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index c86c86008a..0de013faae 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -53,26 +53,15 @@ impl Command for External { ) -> Result { let cwd = engine_state.cwd(Some(stack))?; - // Evaluate the command name in the same way the arguments are evaluated. Since this isn't - // a spread, it should return a one-element vec. - let name_expr = call - .positional_nth(0) - .ok_or_else(|| ShellError::MissingParameter { - param_name: "command".into(), - span: call.head, - })?; - let name = eval_argument(engine_state, stack, name_expr, false)? - .pop() - .expect("eval_argument returned zero-element vec") - .into_spanned(name_expr.span); + let name: Value = call.req(engine_state, stack, 0)?; - let name_str: Cow = match &name.item { + let name_str: Cow = match &name { Value::Glob { val, .. } => Cow::Borrowed(val), Value::String { val, .. } => Cow::Borrowed(val), - _ => Cow::Owned(name.item.clone().coerce_into_string()?), + _ => Cow::Owned(name.clone().coerce_into_string()?), }; - let expanded_name = match &name.item { + let expanded_name = match &name { // Expand tilde and ndots on the name if it's a bare string / glob (#13000) Value::Glob { no_expand, .. } if !*no_expand => expand_ndots(expand_tilde(&*name_str)), _ => Path::new(&*name_str).to_owned(),