1
1
use crate :: trap;
2
- use globset:: { Glob , GlobSetBuilder } ;
2
+ use globset:: { GlobBuilder , GlobSetBuilder } ;
3
3
use rayon:: prelude:: * ;
4
4
use std:: fs:: File ;
5
5
use std:: io:: BufRead ;
@@ -89,7 +89,10 @@ impl Extractor {
89
89
let mut glob_lang_mapping = vec ! [ ] ;
90
90
for ( i, lang) in self . languages . iter ( ) . enumerate ( ) {
91
91
for glob_str in & lang. file_globs {
92
- let glob = Glob :: new ( glob_str) . expect ( "invalid glob" ) ;
92
+ let glob = GlobBuilder :: new ( glob_str)
93
+ . literal_separator ( true )
94
+ . build ( )
95
+ . expect ( "invalid glob" ) ;
93
96
builder. add ( glob) ;
94
97
glob_lang_mapping. push ( i) ;
95
98
}
@@ -114,33 +117,40 @@ impl Extractor {
114
117
let source = std:: fs:: read ( & path) ?;
115
118
let mut trap_writer = trap:: Writer :: new ( ) ;
116
119
117
- let matches = globset. matches ( & path) ;
118
- if matches. is_empty ( ) {
119
- tracing:: error!( ?path, "No matching language found, skipping file." ) ;
120
- } else {
121
- let mut languages_processed = vec ! [ false ; self . languages. len( ) ] ;
122
-
123
- for m in matches {
124
- let i = glob_language_mapping[ m] ;
125
- if languages_processed[ i] {
126
- continue ;
120
+ match path. file_name ( ) {
121
+ None => {
122
+ tracing:: error!( ?path, "No file name found, skipping file." ) ;
123
+ }
124
+ Some ( filename) => {
125
+ let matches = globset. matches ( & filename) ;
126
+ if matches. is_empty ( ) {
127
+ tracing:: error!( ?path, "No matching language found, skipping file." ) ;
128
+ } else {
129
+ let mut languages_processed = vec ! [ false ; self . languages. len( ) ] ;
130
+
131
+ for m in matches {
132
+ let i = glob_language_mapping[ m] ;
133
+ if languages_processed[ i] {
134
+ continue ;
135
+ }
136
+ languages_processed[ i] = true ;
137
+ let lang = & self . languages [ i] ;
138
+
139
+ crate :: extractor:: extract (
140
+ lang. ts_language ,
141
+ lang. prefix ,
142
+ & schemas[ i] ,
143
+ & mut diagnostics_writer,
144
+ & mut trap_writer,
145
+ & path,
146
+ & source,
147
+ & [ ] ,
148
+ ) ;
149
+ std:: fs:: create_dir_all ( src_archive_file. parent ( ) . unwrap ( ) ) ?;
150
+ std:: fs:: copy ( & path, & src_archive_file) ?;
151
+ write_trap ( & self . trap_dir , & path, & trap_writer, trap_compression) ?;
152
+ }
127
153
}
128
- languages_processed[ i] = true ;
129
- let lang = & self . languages [ i] ;
130
-
131
- crate :: extractor:: extract (
132
- lang. ts_language ,
133
- lang. prefix ,
134
- & schemas[ i] ,
135
- & mut diagnostics_writer,
136
- & mut trap_writer,
137
- & path,
138
- & source,
139
- & [ ] ,
140
- ) ;
141
- std:: fs:: create_dir_all ( src_archive_file. parent ( ) . unwrap ( ) ) ?;
142
- std:: fs:: copy ( & path, & src_archive_file) ?;
143
- write_trap ( & self . trap_dir , & path, & trap_writer, trap_compression) ?;
144
154
}
145
155
}
146
156
Ok ( ( ) ) as std:: io:: Result < ( ) >
0 commit comments