diff --git a/build.js b/build.js index 5ca513330..84d5d5136 100644 --- a/build.js +++ b/build.js @@ -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 = "" }); - 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'));