Permalink
Cannot retrieve contributors at this time
Fetching contributors…

/* eslint-disable no-process-exit */ | |
require('babel/register'); | |
require('dotenv').load(); | |
var Rx = require('rx'), | |
_ = require('lodash'), | |
getChallenges = require('./getChallenges'), | |
app = require('../server/server'); | |
var Challenge = app.models.Challenge; | |
var destroy = Rx.Observable.fromNodeCallback(Challenge.destroyAll, Challenge); | |
var create = Rx.Observable.fromNodeCallback(Challenge.create, Challenge); | |
destroy() | |
.flatMap(function() { return Rx.Observable.from(getChallenges()); }) | |
.flatMap(function(challengeSpec) { | |
var order = challengeSpec.order; | |
var block = challengeSpec.name; | |
var isBeta = !!challengeSpec.isBeta; | |
console.log('parsed %s successfully', block); | |
// challenge file has no challenges... | |
if (challengeSpec.challenges.length === 0) { | |
return Rx.Observable.just([{ block: 'empty ' + block }]); | |
} | |
var challenges = challengeSpec.challenges | |
.map(function(challenge, index) { | |
// NOTE(berks): add title for displaying in views | |
challenge.name = | |
_.capitalize(challenge.type) + | |
': ' + | |
challenge.title.replace(/[^a-zA-Z0-9\s]/g, ''); | |
challenge.dashedName = challenge.name | |
.toLowerCase() | |
.replace(/\:/g, '') | |
.replace(/\s/g, '-'); | |
challenge.order = order; | |
challenge.suborder = index + 1; | |
challenge.block = block; | |
challenge.isBeta = challenge.isBeta || isBeta; | |
challenge.time = challengeSpec.time; | |
return challenge; | |
}); | |
return create(challenges); | |
}) | |
.subscribe( | |
function(challenges) { | |
console.log('%s successfully saved', challenges[0].block); | |
}, | |
function(err) { throw err; }, | |
function() { | |
console.log('challenge seed completed'); | |
process.exit(0); | |
} | |
); |