mirror of
https://github.com/home-assistant/frontend.git
synced 2025-04-28 23:37:20 +00:00
74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
const del = require("del");
|
|
const gulp = require("gulp");
|
|
const mapStream = require("map-stream");
|
|
|
|
const inDir = "translations/frontend";
|
|
const downloadDir = inDir + "/downloads";
|
|
|
|
const tasks = [];
|
|
|
|
function hasHtml(data) {
|
|
return /<[a-z][\s\S]*>/i.test(data);
|
|
}
|
|
|
|
function recursiveCheckHasHtml(file, data, errors, recKey) {
|
|
Object.keys(data).forEach(function (key) {
|
|
if (typeof data[key] === "object") {
|
|
const nextRecKey = recKey ? `${recKey}.${key}` : key;
|
|
recursiveCheckHasHtml(file, data[key], errors, nextRecKey);
|
|
} else if (hasHtml(data[key])) {
|
|
errors.push(`HTML found in ${file.path} at key ${recKey}.${key}`);
|
|
}
|
|
});
|
|
}
|
|
|
|
function checkHtml() {
|
|
const errors = [];
|
|
|
|
return mapStream(function (file, cb) {
|
|
const content = file.contents;
|
|
let error;
|
|
if (content) {
|
|
if (hasHtml(String(content))) {
|
|
const data = JSON.parse(String(content));
|
|
recursiveCheckHasHtml(file, data, errors);
|
|
if (errors.length > 0) {
|
|
error = errors.join("\r\n");
|
|
}
|
|
}
|
|
}
|
|
cb(error, file);
|
|
});
|
|
}
|
|
|
|
let taskName = "clean-downloaded-translations";
|
|
gulp.task(taskName, function () {
|
|
return del([`${downloadDir}/**`]);
|
|
});
|
|
tasks.push(taskName);
|
|
|
|
taskName = "check-translations-html";
|
|
gulp.task(taskName, function () {
|
|
return gulp.src(`${downloadDir}/*.json`).pipe(checkHtml());
|
|
});
|
|
tasks.push(taskName);
|
|
|
|
taskName = "move-downloaded-translations";
|
|
gulp.task(taskName, function () {
|
|
return gulp.src(`${downloadDir}/*.json`).pipe(gulp.dest(inDir));
|
|
});
|
|
tasks.push(taskName);
|
|
|
|
taskName = "check-downloaded-translations";
|
|
gulp.task(
|
|
taskName,
|
|
gulp.series(
|
|
"check-translations-html",
|
|
"move-downloaded-translations",
|
|
"clean-downloaded-translations"
|
|
)
|
|
);
|
|
tasks.push(taskName);
|
|
|
|
module.exports = tasks;
|