@@ -9,15 +9,41 @@ const OsHelpers = require('./os-helpers');
9
9
10
10
/**
11
11
* Collect the extra files requested by the rules.
12
- * @param {Options } options
13
- * @param {Path[] } requestedFiles
12
+ * @param {{ files : { pattern: string, included: boolean }[], excludedFolders: string[] }[] } requests
14
13
* @returns {Promise<ExtraFile[]> }
15
14
*/
16
- async function collect ( options , requestedFiles ) {
15
+ async function collect ( requests ) {
17
16
const { globby} = await import ( 'globby' ) ;
18
- const files = await globby (
19
- requestedFiles . map ( ( file ) => OsHelpers . makePathOsAgnostic ( file ) ) ,
17
+ const files = await Promise . all (
18
+ requests . map ( ( request ) => getFiles ( globby , request ) )
19
+ )
20
+ . then ( ( files ) => files . reduce ( ( acc , items ) => acc . concat ( items ) , [ ] ) )
21
+ . then ( unique ) ;
22
+
23
+ return Promise . all (
24
+ files . map ( async ( filePath ) => {
25
+ const content = await FS . readFile ( filePath ) ;
26
+ return {
27
+ path : filePath ,
28
+ content : content
29
+ } ;
30
+ } )
31
+ ) ;
32
+ }
33
+
34
+ /** .
35
+ * @param {any } globby
36
+ * @param {{ files : { pattern: string, included: boolean }[], excludedFolders: string[] } } request
37
+ * @returns {Promise<ExtraFile[]> }
38
+ */
39
+ function getFiles ( globby , request ) {
40
+ return globby (
41
+ request . files . map (
42
+ ( file ) =>
43
+ ( file . included ? '' : '!' ) + OsHelpers . makePathOsAgnostic ( file . pattern )
44
+ ) ,
20
45
{
46
+ ignore : request . excludedFolders ,
21
47
followSymbolicLinks : true ,
22
48
expandDirectories : false ,
23
49
caseSensitiveMatch : true ,
@@ -26,17 +52,10 @@ async function collect(options, requestedFiles) {
26
52
extglob : false
27
53
}
28
54
) ;
29
- console . log ( files . sort ( ) )
55
+ }
30
56
31
- return Promise . all (
32
- files . sort ( ) . map ( async ( filePath ) => {
33
- const content = await FS . readFile ( filePath ) ;
34
- return {
35
- path : filePath ,
36
- content : content
37
- } ;
38
- } )
39
- ) ;
57
+ function unique ( array ) {
58
+ return [ ...new Set ( array ) ] ;
40
59
}
41
60
42
61
module . exports = {
0 commit comments