Replace remaining usages of glob crate with globset

Max Brunsfeld created

Change summary

Cargo.lock                                  | 4 +---
Cargo.toml                                  | 1 -
crates/copilot_button/src/copilot_button.rs | 5 ++---
crates/editor/Cargo.toml                    | 2 --
crates/language/Cargo.toml                  | 2 +-
crates/language/src/language_settings.rs    | 7 ++++---
crates/settings/Cargo.toml                  | 1 -
7 files changed, 8 insertions(+), 14 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -2038,7 +2038,6 @@ dependencies = [
  "futures 0.3.28",
  "fuzzy",
  "git",
- "glob",
  "gpui",
  "indoc",
  "itertools",
@@ -3442,7 +3441,7 @@ dependencies = [
  "futures 0.3.28",
  "fuzzy",
  "git",
- "glob",
+ "globset",
  "gpui",
  "indoc",
  "lazy_static",
@@ -6111,7 +6110,6 @@ dependencies = [
  "collections",
  "fs",
  "futures 0.3.28",
- "glob",
  "gpui",
  "json_comments",
  "lazy_static",

Cargo.toml 🔗

@@ -78,7 +78,6 @@ ctor = { version = "0.1" }
 env_logger = { version = "0.9" }
 futures = { version = "0.3" }
 globset = { version = "0.4" }
-glob = { version = "0.3.1" }
 lazy_static = { version = "1.4.0" }
 log = { version = "0.4.16", features = ["kv_unstable_serde"] }
 ordered-float = { version = "2.1.1" }

crates/copilot_button/src/copilot_button.rs 🔗

@@ -335,10 +335,9 @@ async fn configure_disabled_globs(
                     .get::<AllLanguageSettings>(None)
                     .copilot
                     .disabled_globs
-                    .clone()
                     .iter()
-                    .map(|glob| glob.as_str().to_string())
-                    .collect::<Vec<_>>()
+                    .map(|glob| glob.glob().to_string())
+                    .collect()
             });
 
             if let Some(path_to_disable) = &path_to_disable {

crates/editor/Cargo.toml 🔗

@@ -49,7 +49,6 @@ workspace = { path = "../workspace" }
 aho-corasick = "0.7"
 anyhow.workspace = true
 futures.workspace = true
-glob.workspace = true
 indoc = "1.0.4"
 itertools = "0.10"
 lazy_static.workspace = true
@@ -82,7 +81,6 @@ workspace = { path = "../workspace", features = ["test-support"] }
 
 ctor.workspace = true
 env_logger.workspace = true
-glob.workspace = true
 rand.workspace = true
 unindent.workspace = true
 tree-sitter = "0.20"

crates/language/Cargo.toml 🔗

@@ -41,7 +41,7 @@ anyhow.workspace = true
 async-broadcast = "0.4"
 async-trait.workspace = true
 futures.workspace = true
-glob.workspace = true
+globset.workspace = true
 lazy_static.workspace = true
 log.workspace = true
 parking_lot.workspace = true

crates/language/src/language_settings.rs 🔗

@@ -1,5 +1,6 @@
 use anyhow::Result;
 use collections::HashMap;
+use globset::GlobMatcher;
 use gpui::AppContext;
 use schemars::{
     schema::{InstanceType, ObjectValidation, Schema, SchemaObject},
@@ -45,7 +46,7 @@ pub struct LanguageSettings {
 #[derive(Clone, Debug, Default)]
 pub struct CopilotSettings {
     pub feature_enabled: bool,
-    pub disabled_globs: Vec<glob::Pattern>,
+    pub disabled_globs: Vec<GlobMatcher>,
 }
 
 #[derive(Clone, Serialize, Deserialize, JsonSchema)]
@@ -151,7 +152,7 @@ impl AllLanguageSettings {
             .copilot
             .disabled_globs
             .iter()
-            .any(|glob| glob.matches_path(path))
+            .any(|glob| glob.is_match(path))
     }
 
     pub fn copilot_enabled(&self, language_name: Option<&str>, path: Option<&Path>) -> bool {
@@ -236,7 +237,7 @@ impl settings::Setting for AllLanguageSettings {
                 feature_enabled: copilot_enabled,
                 disabled_globs: copilot_globs
                     .iter()
-                    .filter_map(|pattern| glob::Pattern::new(pattern).ok())
+                    .filter_map(|g| Some(globset::Glob::new(g).ok()?.compile_matcher()))
                     .collect(),
             },
             defaults,

crates/settings/Cargo.toml 🔗

@@ -22,7 +22,6 @@ util = { path = "../util" }
 
 anyhow.workspace = true
 futures.workspace = true
-glob.workspace = true
 json_comments = "0.2"
 lazy_static.workspace = true
 postage.workspace = true