-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdep.js
More file actions
48 lines (41 loc) · 1.08 KB
/
Copy pathdep.js
File metadata and controls
48 lines (41 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var path = require('path');
var util = require('util');
function getDependencyGraph(config){
var rootPath = config.rootPath;
var initialFile = config.initialFile;
var fileHandlers = config.fileHandlers;
var fileQueue = [initialFile];
var processedFiles = {};
var deps = {};
var sharedConfig = {
rootPath: rootPath,
basisPath: 'lib/basis/src/basis'
};
function addInFileQueue(file){
if (!processedFiles[file.fileName]){
processedFiles[file.fileName] = true;
fileQueue.push(file);
}
}
function getFileType(file){
return file.match(/\.(\w+)/)[1];
}
do {
var file = fileQueue.shift();
var fileType = getFileType(file.fileName);
if (fileHandlers[fileType])
{
var handleInfo = fileHandlers[fileType].handle(file, sharedConfig);
deps[file.fileName] = handleInfo.fileDeps;
handleInfo.fileList.forEach(addInFileQueue);
}
else
{
//console.log('unsupported file type: ' + file.fileName);
}
} while(fileQueue.length);
return deps;
}
module.exports = {
getDependencyGraph: getDependencyGraph
};