nushell/crates/nu-engine/src
Yash Thakur 62bd6fe08b
Create nu_glob::is_glob function (#14717)
# Description

Adds an `is_glob` function to the nu-glob crate that takes a string
pattern and returns whether or not it's a glob that would be expanded by
nu-glob. Right now, this just means checking if it contains `*`, `?`, or
`[`.

Previously, this same code was duplicated in the following places:
- `ls`: Determining whether to read a folder's contents or expand a glob
- `run_external.rs` in nu-command: Arguments to externals only have
n-dots and tilde expansion applied if they weren't globs
- `glob_from` in nu-engine:
  - `glob_from` can get the prefix in a simpler way for non-globs
- If the canonical path for a non-glob path contains glob
metacharacters, it needs to be escaped
- `completion_common.rs` in nu-cli: File/folder completions containing
glob metacharacters need to be wrapped in quotes

All of these locations can use `nu_glob::is_glob` now instead of rolling
their own checks. This does mean that nu-cli now has a dependency on
nu-glob.

# User-Facing Changes

Users of nu-glob will now be able to check if a given pattern is a glob
expanded by nu-glob.

For users of Nushell, completion suggestions for files containing `]`
will no longer be wrapped in quotes if they contain no other glob
metacharacters. This is because unmatched `]`s are ignored by nu-glob,
but we used to consider such file completions contaminated anyway.

# Tests + Formatting

This is a very basic function, so I just added some doctests.

# After Submitting

This is meant to be used in
https://github.com/nushell/nushell/pull/14674.
2025-01-01 19:04:17 -05:00
..
compile Run ENV_CONVERSIONS whenever it's modified (#14591) 2024-12-25 21:37:24 +08:00
call_ext.rs Remove duplicate implementations of CallExt::rest (#14484) 2024-12-01 15:03:45 +01:00
closure_eval.rs Make timeit take only closures as an argument (#14483) 2024-12-10 23:08:53 +08:00
column.rs Use Record's public API in a bunch of places (#10927) 2023-11-08 14:24:00 +01:00
command_prelude.rs Add --long flag for sys cpu (#14485) 2024-12-01 05:56:42 -06:00
documentation.rs Add auto option for config.use_ansi_coloring (#14647) 2024-12-26 11:00:01 -06:00
env.rs Run ENV_CONVERSIONS whenever it's modified (#14591) 2024-12-25 21:37:24 +08:00
eval.rs Revert "Feature: PWD-per-drive to facilitate working on multiple drives at Windows" (#14598) 2024-12-16 13:52:07 -06:00
eval_helpers.rs Error on non-zero exit statuses (#13515) 2024-09-07 06:44:26 +00:00
eval_ir.rs Run ENV_CONVERSIONS whenever it's modified (#14591) 2024-12-25 21:37:24 +08:00
glob_from.rs Create nu_glob::is_glob function (#14717) 2025-01-01 19:04:17 -05:00
lib.rs Add top-level crate documentation/READMEs (#12907) 2024-07-14 10:10:41 +02:00
scope.rs return const values from scope variables (#14577) 2024-12-13 16:23:17 -06:00