2015-11-10 01:27:56 +00:00
|
|
|
import path from 'path';
|
|
|
|
import { Observable } from 'rx';
|
|
|
|
|
|
|
|
const basePath = process.cwd() + '/seed/challenges/';
|
|
|
|
|
|
|
|
export default function getFromDisk$(challenge) {
|
2015-11-10 06:37:16 +00:00
|
|
|
if (challenge && !challenge.fileName) {
|
|
|
|
throw new Error(
|
|
|
|
`Challenge ${challenge.name} has no fileName.
|
|
|
|
Did you remember run node seed?`
|
|
|
|
);
|
|
|
|
}
|
2015-11-10 01:27:56 +00:00
|
|
|
delete require.cache[require.resolve(
|
|
|
|
path.join(basePath, challenge.fileName)
|
|
|
|
)];
|
|
|
|
|
|
|
|
return Observable.just(require(path.join(basePath, challenge.fileName)))
|
|
|
|
.map(challengeSpec => challengeSpec.challenges[challenge.suborder - 1])
|
|
|
|
.map(challenge => {
|
|
|
|
challenge.head = challenge.head || [];
|
|
|
|
challenge.tail = challenge.tail || [];
|
|
|
|
challenge.challengeType = '' + challenge.challengeType;
|
|
|
|
|
2016-01-12 06:47:49 +00:00
|
|
|
challenge.name = challenge.title.replace(/[^a-zA-Z0-9\s]/g, '');
|
2015-11-10 01:27:56 +00:00
|
|
|
|
|
|
|
challenge.dashedName = challenge.name
|
|
|
|
.toLowerCase()
|
|
|
|
.replace(/\:/g, '')
|
|
|
|
.replace(/\s/g, '-');
|
|
|
|
|
|
|
|
return challenge;
|
|
|
|
});
|
|
|
|
}
|