co.wrap(function * (languageCodeMap, solutionsDirPath) { const outputPath = path.resolve(solutionsDirPath, formatId(languageCodeMap._id) + '.' + languageCodeMap._title) ensureDirectoryExists(outputPath) try { let solveLang = [] let promises = Object.keys(languageCodeMap).filter((prop) => { return (prop in langExtMap) }).map(lang => { logger.info('write to file: ' + outputPath + ' ' + lang) solveLang.push(lang) return write(path.resolve(outputPath, languageCodeMap._title + '.' + langExtMap[lang]), languageCodeMap[lang]) }) languageCodeMap._solveLang = solveLang promises.push(write(path.resolve(outputPath, 'question.md'), languageCodeMap['_question'])) yield promises } catch (err) { debug('file write err', languageCodeMap._id) throw (err) } })