glint
Version:
Glint is an asset (css, js, whatever-you-need) management that helps you organize and manage your client side files
59 lines (45 loc) • 1.36 kB
JavaScript
;
module.exports = BundleParser;
var fs = require('fs');
var path = require('path');
function BundleParser(rawBundle, assetsDir) {
this.parse = function () {
updateFilesPaths();
checkFiles();
};
function updateFilesPaths() {
rawBundle.forEach(updateFilesPathsInPackage);
}
function updateFilesPathsInPackage(pkg) {
var files = (pkg.files || []).map(function updateFilePath(filePath) {
var pth = path.join(assetsDir, filePath);
return path.normalize(pth);
});
pkg.files = files;
}
function checkFiles() {
var fileChecker = new FileChecker(rawBundle);
if (!fileChecker.check()) {
throw new Error('File : ' + fileChecker.getLastFailedFile() + 'does not exists!');
}
}
}
function FileChecker(packages) {
var lastFailedFile;
this.getLastFailedFile = function () {
return lastFailedFile;
};
this.check = function () {
return packages.every(checkFilesFromPackage);
};
function checkFilesFromPackage(pkg) {
var files = pkg.files;
for (var i = 0, len = files.length; i < len; i++) {
if (!fs.existsSync(files[i])) {
lastFailedFile = files[i];
return false;
}
}
return true;
}
}