do not write any data files if preset validation fails

This commit is contained in:
tyr
2014-01-15 22:32:51 +01:00
parent 80dbf3085e
commit 4de0c6cb4e

View File

@@ -59,7 +59,7 @@ function generateCategories() {
categories[id] = field;
});
fs.writeFileSync('data/presets/categories.json', stringify(categories));
return categories;
}
function generateFields() {
@@ -86,7 +86,7 @@ function generateFields() {
fields[id] = field;
});
fs.writeFileSync('data/presets/fields.json', stringify(fields));
return fields;
}
function suggestionsToPresets(presets) {
@@ -171,20 +171,19 @@ function generatePresets() {
presets = _.merge(presets, suggestionsToPresets(presets));
fs.writeFileSync('data/presets/presets.json', stringify(presets));
fs.writeFileSync('js/id/core/area_keys.js', '/* jshint -W109 */\niD.areaKeys = ' + stringify(areaKeys) + ';');
var presetsYaml = _.cloneDeep(translations);
_.forEach(presetsYaml.presets, function(preset) {
preset.terms = "<translate with synonyms or related terms for '" + preset.name + "', separated by commas>"
});
fs.writeFileSync('data/presets.yaml', YAML.dump({en: {presets: presetsYaml}}));
return {
presets: presets,
areaKeys: areaKeys,
presetsYaml: presetsYaml
};
}
function validateCategoryPresets() {
var categories = rp('categories.json'),
presets = rp('presets.json');
function validateCategoryPresets(categories, presets) {
_.forEach(categories, function(category) {
if (category.members) {
category.members.forEach(function(preset) {
@@ -197,7 +196,7 @@ function validateCategoryPresets() {
});
}
function validatePresetFields() {
function validatePresetFields(presets, fields) {
var presets = rp('presets.json'),
fields = rp('fields.json');
_.forEach(presets, function(preset) {
@@ -212,13 +211,20 @@ function validatePresetFields() {
});
}
generateCategories();
generateFields();
generatePresets();
var categories = generateCategories(),
fields = generateFields(),
presets = generatePresets();
// additional consistency checks
validateCategoryPresets();
validatePresetFields();
validateCategoryPresets(categories, presets.presets);
validatePresetFields(presets.presets, fields);
// Save individual data files
fs.writeFileSync('data/presets/categories.json', stringify(categories));
fs.writeFileSync('data/presets/fields.json', stringify(fields));
fs.writeFileSync('data/presets/presets.json', stringify(presets.presets));
fs.writeFileSync('js/id/core/area_keys.js', '/* jshint -W109 */\niD.areaKeys = ' + stringify(presets.areaKeys) + ';');
fs.writeFileSync('data/presets.yaml', YAML.dump({en: {presets: presets.presetsYaml}}));
// Push changes from data/core.yaml into en.json
var core = YAML.load(fs.readFileSync('data/core.yaml', 'utf8'));