const fs = require('fs'); const path = require('path'); const debug = require('debug'); const env = require('../../config/env'); const { getChallengesForLang } = require('../../curriculum/getChallenges'); const { createPathMigrationMap } = require('./seed/createPathMigrationMap'); const { createRedirects } = require('./createRedirects'); const log = debug('fcc:tools:ensure-env'); const { NODE_ENV } = process.env; const { apiLocation: api, forumLocation: forum, locale, newsLocation: news } = env; const apiPath = path.resolve(__dirname, '../../api-server'); const clientPath = path.resolve(__dirname, '../../client'); const clientStaticPath = path.resolve(clientPath, 'static'); const globalConfigPath = path.resolve(__dirname, '../../config'); if (NODE_ENV === 'production') { const redirects = createRedirects({ api, news, forum }); fs.writeFile(`${clientStaticPath}/_redirects`, redirects, function(err) { if (err) { log('Error'); console.error(err); } log('_redirects written'); }); } else { log(`ignoring creation of redirect file in ${NODE_ENV}`); } const migrationMapPath = `${apiPath}/server/resources/pathMigration.json`; fs.access(migrationMapPath, err => { if (err && NODE_ENV !== 'production') { log('creating pathMigration'); return fs.writeFileSync(migrationMapPath, '{}'); } if (NODE_ENV === 'production') { return getChallengesForLang(locale) .then(createPathMigrationMap) .then(map => { fs.writeFileSync(migrationMapPath, JSON.stringify(map)); log('pathMigration has been written'); }) .catch(err => { console.error(err); // eslint-disable-next-line process.exit(1); }); } log('pathMigration present'); return null; }); fs.writeFileSync(`${clientPath}/config/env.json`, JSON.stringify(env)); fs.writeFileSync(`${globalConfigPath}/env.json`, JSON.stringify(env));