mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
var path = require('path');
|
|
var loaderUtils = require('loader-utils');
|
|
var fs = require('fs');
|
|
|
|
var licenseFileUtf8Store = undefined;
|
|
|
|
function readLicenseHeaderFile(licenseFilePath) {
|
|
if (licenseFileUtf8Store) {
|
|
return licenseFileUtf8Store;
|
|
}
|
|
|
|
if (fs.existsSync(licenseFilePath)) {
|
|
licenseFileUtf8Store = fs.readFileSync(licenseFilePath, 'utf8').split(/\r?\n/);
|
|
return licenseFileUtf8Store;
|
|
}
|
|
|
|
throw new Error('The license header file path is wrong ' + licenseFilePath);
|
|
}
|
|
|
|
function isFileEmpty(fileContents) {
|
|
return fileContents.toString('utf8').trim() === '';
|
|
}
|
|
|
|
function readCurrentFile(fileContent) {
|
|
return fileContent.toString('utf8').split(/\r?\n/);
|
|
}
|
|
|
|
function isLicenseHeaderPresent(currentFileContent, licenseFilePath) {
|
|
if (!isFileEmpty(currentFileContent)) {
|
|
var currentFileUtf8 = readCurrentFile(currentFileContent),
|
|
licenseFileUtf8 = readLicenseHeaderFile(licenseFilePath);
|
|
skipStrict = 0;
|
|
|
|
if(currentFileUtf8[0] === '"use strict";' ) {
|
|
skipStrict = 1;
|
|
}
|
|
|
|
for (var i = skipStrict; i < licenseFileUtf8.length; i++) {
|
|
if (currentFileUtf8[i + skipStrict] !== licenseFileUtf8[i]) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function report(hasHeader, emitter, filename) {
|
|
if (hasHeader) return;
|
|
emitter('Missing license header file : ' + filename);
|
|
}
|
|
|
|
function licenseCheck(webpackInstance, input, options) {
|
|
var isLicensePresent = isLicenseHeaderPresent(input, options.licenseFile);
|
|
|
|
var emitter = options.emitErrors ? webpackInstance.emitError : webpackInstance.emitWarning;
|
|
|
|
report(isLicensePresent, emitter, webpackInstance.resourcePath);
|
|
}
|
|
|
|
module.exports = function(input, map) {
|
|
this.cacheable && this.cacheable();
|
|
var callback = this.async();
|
|
|
|
var options = loaderUtils.getOptions(this);
|
|
licenseCheck(this, input, options);
|
|
callback(null, input, map);
|
|
};
|