|
|
|
|
@ -3,6 +3,8 @@ const del = require('del');
|
|
|
|
|
const ts = require('gulp-typescript');
|
|
|
|
|
const exec = require('child_process').exec;
|
|
|
|
|
const sass = require('gulp-sass');
|
|
|
|
|
const fs = require('fs');
|
|
|
|
|
const path = require('path');
|
|
|
|
|
sass.compiler = require('node-sass');
|
|
|
|
|
let tsSource = ts.createProject('tsconfig.json')
|
|
|
|
|
|
|
|
|
|
@ -11,8 +13,34 @@ function clean(cb) {
|
|
|
|
|
cb();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function validateConfigSources(){
|
|
|
|
|
|
|
|
|
|
function validateConfigSources(cb) {
|
|
|
|
|
let confBase = "src/assets/conf/";
|
|
|
|
|
let configsToCheck = ["resources-landing-page.json"];
|
|
|
|
|
for (let i = 0, l = configsToCheck.length; i < l; i++) {
|
|
|
|
|
let currConfig = configsToCheck[i];
|
|
|
|
|
let configContent = fs.readFileSync(path.join(confBase, currConfig));
|
|
|
|
|
let conf = JSON.parse(configContent.toString());
|
|
|
|
|
let keys = Object.keys(conf);
|
|
|
|
|
for (let j = 0, m = keys.length; j < m; j++) {
|
|
|
|
|
let key = keys[i];
|
|
|
|
|
let content = conf[key];
|
|
|
|
|
let rules = resourceLandingPageRules[key];
|
|
|
|
|
let ruleKeys = Object.keys(rules);
|
|
|
|
|
for (let k = 0, n = ruleKeys.length; k < n; k++) {
|
|
|
|
|
let rule = ruleKeys[k];
|
|
|
|
|
let ruleValidator = rules[rule];
|
|
|
|
|
for (let x = 0, y = content.length; x < y; x++) {
|
|
|
|
|
let renderObj = content[x];
|
|
|
|
|
let ruleSubject = renderObj[rule];
|
|
|
|
|
let validResults = ruleValidator(ruleSubject, currConfig, rule);
|
|
|
|
|
if (null !== validResults) {
|
|
|
|
|
cb(validResults);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
cb();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function conf() {
|
|
|
|
|
@ -63,8 +91,23 @@ function dependencies(cb) {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let stringLengthRule = function (str, fileName, rulename) {
|
|
|
|
|
let maxLen = 125;
|
|
|
|
|
if (str.length > maxLen) {
|
|
|
|
|
return Error(`Content too long in ${fileName}->${rulename}! Expected ${maxLen} characters, got ${str.length} "${str}"`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let resourceLandingPageRules = {
|
|
|
|
|
"grid-container": {
|
|
|
|
|
"description": stringLengthRule
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.clean = clean;
|
|
|
|
|
|
|
|
|
|
exports.default = series(conf, style, scss, root, pkg, typescript, dependencies);
|
|
|
|
|
exports.default = series(validateConfigSources, conf, style, scss, root, pkg, typescript, dependencies);
|
|
|
|
|
|
|
|
|
|
exports.runFast = series(conf, style, scss, root, pkg)
|
|
|
|
|
exports.runFast = series(validateConfigSources, conf, style, scss, root, pkg)
|