Validate preset defaults at build step

This commit is contained in:
Gregor MacLennan
2016-11-01 10:50:51 -07:00
parent 7735c2eb1a
commit 8ae68fbf57
+13
View File
@@ -30,12 +30,14 @@ unlink('dist/locales/en.json');
var categories = generateCategories();
var fields = generateFields();
var presets = generatePresets();
var defaults = read('data/presets/defaults.json');
var translations = generateTranslations(fields, presets);
var taginfo = generateTaginfo(presets);
// Additional consistency checks
validateCategoryPresets(categories, presets);
validatePresetFields(presets, fields);
validateDefaults(defaults, categories, presets);
// Save individual data files
fs.writeFileSync('data/presets/categories.json', JSON.stringify({ categories: categories }, null, 4));
@@ -299,6 +301,17 @@ function validatePresetFields(presets, fields) {
});
}
function validateDefaults (defaults, categories, presets) {
_.forEach(defaults.defaults, function (members, name) {
members.forEach(function (id) {
if (!presets[id] && !categories[id]) {
console.error('Unknown category or preset: ' + id + ' in default ' + name);
process.exit(1);
}
});
});
}
function translationsToYAML(translations) {
// comment keys end with '#' and should sort immediately before their related key.
function commentFirst(a, b) {