mirror of
https://github.com/nushell/nushell.git
synced 2025-05-29 22:29:06 +02:00
# Description This PR removes the required positional argument from `run-external` and `exec` in favor of the rest arguments, meaning lists of external commands can be spread directly into `run-external` and `exec`. This does have the drawback of making calling `run-external` and `exec` with no arguments a run-time error rather than a parse error, but I don't imagine that is an issue. Before (for both `run-external` and `exec`): ```nushell run-external # => Error: nu::parser::missing_positional # => # => × Missing required positional argument. # => ╭─[entry #9:1:13] # => 1 │ run-external # => ╰──── # => help: Usage: run-external <command> ...(args) . Use `--help` for more # => information. let command = ["cat" "hello.txt"] run-external ...$command # => Error: nu::parser::missing_positional # => # => × Missing required positional argument. # => ╭─[entry #11:1:14] # => 1 │ run-external ...$command # => · ▲ # => · ╰── missing command # => ╰──── # => help: Usage: run-external <command> ...(args) . Use `--help` for more # => information. run-external ($command | first) ...($command | skip 1) # => hello world! ``` After (for both `run-external` and `exec`): ```nushell run-external # => Error: nu:🐚:missing_parameter # => # => × Missing parameter: no command given. # => ╭─[entry #2:1:1] # => 1 │ run-external # => · ──────┬───── # => · ╰── missing parameter: no command given # => ╰──── # => let command = ["cat" "hello.txt"] run-external ...$command # => hello world! ``` # User-Facing Changes Lists can now be spread directly into `run-external` and `exec`: ```nushell let command = [cat hello.txt] run-external ...$command # => hello world! ``` # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting N/A
40 lines
821 B
Rust
40 lines
821 B
Rust
mod complete;
|
|
mod exec;
|
|
mod nu_check;
|
|
#[cfg(any(
|
|
target_os = "android",
|
|
target_os = "linux",
|
|
target_os = "freebsd",
|
|
target_os = "netbsd",
|
|
target_os = "openbsd",
|
|
target_os = "macos",
|
|
target_os = "windows"
|
|
))]
|
|
mod ps;
|
|
#[cfg(windows)]
|
|
mod registry_query;
|
|
mod run_external;
|
|
mod sys;
|
|
mod uname;
|
|
mod which_;
|
|
|
|
pub use complete::Complete;
|
|
pub use exec::Exec;
|
|
pub use nu_check::NuCheck;
|
|
#[cfg(any(
|
|
target_os = "android",
|
|
target_os = "linux",
|
|
target_os = "freebsd",
|
|
target_os = "netbsd",
|
|
target_os = "openbsd",
|
|
target_os = "macos",
|
|
target_os = "windows"
|
|
))]
|
|
pub use ps::Ps;
|
|
#[cfg(windows)]
|
|
pub use registry_query::RegistryQuery;
|
|
pub use run_external::{command_not_found, eval_external_arguments, which, External};
|
|
pub use sys::*;
|
|
pub use uname::UName;
|
|
pub use which_::Which;
|