88 rcfile:: Rcfile ,
99 specifier:: Specifier ,
1010 } ,
11- glob :: glob ,
11+ ignore :: { overrides :: OverrideBuilder , WalkBuilder } ,
1212 log:: debug,
1313 serde:: Deserialize ,
1414 serde_json:: Value ,
@@ -35,6 +35,7 @@ impl Packages {
3535 /// Get every package.json file matched by the user's source patterns
3636 pub fn from_config ( config : & Config ) -> Self {
3737 let file_paths = get_file_paths ( config) ;
38+ debug ! ( "Found file paths: {file_paths:?}" ) ;
3839 let mut packages = Self :: new ( ) ;
3940 file_paths. iter ( ) . for_each ( |file_path| {
4041 if let Some ( package_json) = PackageJson :: from_file ( file_path) {
@@ -177,22 +178,18 @@ pub fn normalize_pattern(pattern: String) -> String {
177178/// Resolve every source glob pattern into their absolute file paths of
178179/// package.json files
179180fn get_file_paths ( config : & Config ) -> Vec < PathBuf > {
180- get_source_patterns ( config)
181- . iter ( )
182- . map ( |pattern| {
183- if PathBuf :: from ( pattern) . is_absolute ( ) {
184- pattern. clone ( )
185- } else {
186- config. cli . cwd . join ( pattern) . to_str ( ) . unwrap ( ) . to_string ( )
187- }
188- } )
189- . flat_map ( |pattern| glob ( & pattern) . ok ( ) )
190- . flat_map ( |paths| {
191- paths. filter_map ( Result :: ok) . fold ( vec ! [ ] , |mut paths, path| {
192- paths. push ( path. clone ( ) ) ;
193- paths
194- } )
195- } )
181+ let cwd = & config. cli . cwd ;
182+ let source_patterns = get_source_patterns ( config) ;
183+ let mut glob_filters = OverrideBuilder :: new ( cwd) ;
184+ for source_pattern in source_patterns {
185+ glob_filters. add ( & source_pattern) . unwrap ( ) ;
186+ }
187+ WalkBuilder :: new ( cwd)
188+ . overrides ( glob_filters. build ( ) . unwrap ( ) )
189+ . build ( )
190+ . filter_map ( Result :: ok)
191+ . filter ( |entry| entry. file_type ( ) . is_some_and ( |ft| ft. is_file ( ) ) )
192+ . map ( |entry| entry. into_path ( ) )
196193 . collect ( )
197194}
198195
@@ -233,6 +230,10 @@ fn get_source_patterns(config: &Config) -> Vec<String> {
233230 } )
234231 } )
235232 . map ( |patterns| patterns. into_iter ( ) . map ( normalize_pattern) . collect ( ) )
233+ . map ( |patterns| {
234+ debug ! ( "Found patterns: {patterns:?}" ) ;
235+ patterns
236+ } )
236237 . or_else ( get_default_patterns)
237238 . unwrap ( )
238239}
0 commit comments