mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-27 17:45:40 -05:00
Refactored the config defaults script to work on systems, too, and save results.
This commit is contained in:
parent
bcffc5811f
commit
f8f67833d1
2 changed files with 45 additions and 33 deletions
|
@ -0,0 +1,45 @@
|
||||||
|
load('bower_components/lodash/dist/lodash.js');
|
||||||
|
load('bower_components/underscore.string/dist/underscore.string.min.js');
|
||||||
|
load('bower_components/tv4/tv4.js');
|
||||||
|
load('bower_components/treema/treema-utils.js');
|
||||||
|
|
||||||
|
print(db.level.components.count());
|
||||||
|
|
||||||
|
// This script can be modified later to also remove the old defaults in these components and systems.
|
||||||
|
|
||||||
|
migrateDefault = function (doc) {
|
||||||
|
thisTv4 = tv4.freshApi();
|
||||||
|
thisTv4.addSchema('#', doc.configSchema || {});
|
||||||
|
var data = TreemaUtils.cloneDeep(doc.configSchema.default) || {};
|
||||||
|
TreemaUtils.populateRequireds(data, doc.configSchema);
|
||||||
|
var props = doc.configSchema.properties;
|
||||||
|
if(props) {
|
||||||
|
_.keys(doc.configSchema.properties).forEach(function (key) {
|
||||||
|
if(data[key]) return;
|
||||||
|
var childSchema = props[key];
|
||||||
|
var workingSchema = TreemaUtils.buildWorkingSchemas(childSchema, thisTv4)[0];
|
||||||
|
if(workingSchema.default)
|
||||||
|
return data[key] = TreemaUtils.cloneDeep(workingSchema.default);
|
||||||
|
var type = props[key].type;
|
||||||
|
if(!type) return;
|
||||||
|
if(Array.isArray(type)) type = type[0];
|
||||||
|
data[key] = TreemaUtils.defaultForType(type);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
delete doc.configSchema.required;
|
||||||
|
doc.configSchema.default = data;
|
||||||
|
// print('\n\n--------------------', doc.name);
|
||||||
|
// print("SCHEMA: ", JSON.stringify(doc.configSchema, null, '\t'));
|
||||||
|
if(doc.system) {
|
||||||
|
print('saving component', doc.name);
|
||||||
|
db.level.components.save(doc);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print('saving system', doc.name);
|
||||||
|
db.level.systems.save(doc);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
db.level.components.find({slug: {$exists: true}}).forEach(migrateDefault);
|
||||||
|
db.level.systems.find({slug: {$exists: true}}).forEach(migrateDefault);
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
load('bower_components/lodash/dist/lodash.js');
|
|
||||||
load('bower_components/underscore.string/dist/underscore.string.min.js');
|
|
||||||
load('bower_components/tv4/tv4.js');
|
|
||||||
load('bower_components/treema/treema-utils.js');
|
|
||||||
print(typeof TreemaUtils);
|
|
||||||
|
|
||||||
print(db.level.components.count());
|
|
||||||
db.level.components.find().limit(3000000).forEach(function (levelComponent) {
|
|
||||||
thisTv4 = tv4.freshApi();
|
|
||||||
thisTv4.addSchema('#', levelComponent.configSchema || {});
|
|
||||||
var data = levelComponent.configSchema.default || {};
|
|
||||||
TreemaUtils.populateRequireds(data, levelComponent.configSchema);
|
|
||||||
var props = levelComponent.configSchema.properties;
|
|
||||||
if(props) {
|
|
||||||
_.keys(levelComponent.configSchema.properties).forEach(function (key) {
|
|
||||||
if(data[key]) return;
|
|
||||||
var childSchema = props[key];
|
|
||||||
var workingSchema = TreemaUtils.buildWorkingSchemas(childSchema, thisTv4)[0];
|
|
||||||
if(workingSchema.default)
|
|
||||||
return data[key] = TreemaUtils.cloneDeep(workingSchema.default);
|
|
||||||
var type = props[key].type;
|
|
||||||
if(!type) return;
|
|
||||||
if(Array.isArray(type)) type = type[0];
|
|
||||||
data[key] = TreemaUtils.defaultForType(type);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
delete levelComponent.configSchema.required;
|
|
||||||
levelComponent.configSchema.default = data;
|
|
||||||
print('\n\n--------------------', levelComponent.name);
|
|
||||||
print("SCHEMA: ", JSON.stringify(levelComponent.configSchema, null, '\t'));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
Loading…
Reference in a new issue