Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create nu_glob::is_glob function #14717

Merged
merged 1 commit into from
Jan 2, 2025
Merged

Create nu_glob::is_glob function #14717

merged 1 commit into from
Jan 2, 2025

Conversation

ysthakur
Copy link
Member

@ysthakur ysthakur commented Jan 1, 2025

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 #14674.

Copy link
Collaborator

@fdncred fdncred left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems pretty straight forward. Thanks for cleaning this up.

@ysthakur ysthakur merged commit 62bd6fe into nushell:main Jan 2, 2025
16 checks passed
@ysthakur ysthakur deleted the is-glob branch January 2, 2025 00:04
@github-actions github-actions bot added this to the v0.102.0 milestone Jan 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants