const fs = require('fs');
const path = require('path');
const debug = require('debug');

const envPath = path.resolve(__dirname, '../../.env');
require('dotenv').config({ path: envPath });

const { createRedirects } = require('./createRedirects');

const log = debug('fcc:tools:ensure-env');
const {
  HOME_LOCATION: home,
  API_LOCATION: api,
  FORUM_LOCATION: forum,
  FORUM_PROXY_LOCATION: forumProxy,
  LOCALE: locale
} = process.env;

const locations = {
  homeLocation: home,
  apiLocation: api,
  forumLocation: forum,
  forumProxyLocation: forumProxy
};


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');
const env = Object.assign(locations, {locale});

const redirects = createRedirects({ api, home, forum, forumProxy });

fs.writeFile(`${clientStaticPath}/_redirects`, redirects, function(err) {
  if (err) {
    log('Error');
    console.error(err);
  }
  log('_redirects written');
});

fs.access(`${apiPath}/server/resources/pathMigration.json`, err => {
  if (err) {
    log('creating pathMigration');
    return fs.writeFileSync(
      `${apiPath}/server/resources/pathMigration.json`,
      '{}'
    );
  }
  log('pathMigration present');
  return null;
});

fs.writeFileSync(`${clientPath}/config/env.json`, JSON.stringify(env));
fs.writeFileSync(`${globalConfigPath}/env.json`, JSON.stringify(env));

const fs = require('fs');
const path = require('path');
const debug = require('debug');

const envPath = path.resolve(__dirname, '../../.env');
require('dotenv').config({ path: envPath });

const { createRedirects } = require('./createRedirects');

const log = debug('fcc:tools:ensure-env');
const {
  HOME_LOCATION: home,
  API_LOCATION: api,
  FORUM_LOCATION: forum,
  FORUM_PROXY_LOCATION: forumProxy,
  LOCALE: locale,
  NODE_ENV: NODE_ENV
} = process.env;

const locations = {
  homeLocation: home,
  apiLocation: api,
  forumLocation: forum,
  forumProxyLocation: forumProxy
};


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');
const env = Object.assign(locations, {locale});

if (NODE_ENV === 'production') {
  const redirects = createRedirects({ api, home, forum, forumProxy });
  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}`);
}

fs.access(`${apiPath}/server/resources/pathMigration.json`, err => {
  if (err) {
    log('creating pathMigration');
    return fs.writeFileSync(
      `${apiPath}/server/resources/pathMigration.json`,
      '{}'
    );
  }
  log('pathMigration present');
  return null;
});

fs.writeFileSync(`${clientPath}/config/env.json`, JSON.stringify(env));
fs.writeFileSync(`${globalConfigPath}/env.json`, JSON.stringify(env));

remove redirect build on dev