diff --git a/gulpfile.js b/gulpfile.js index 1af3aad..b559e0a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -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) \ No newline at end of file +exports.runFast = series(validateConfigSources, conf, style, scss, root, pkg) \ No newline at end of file