const { writeFile } = require('fs');
const { argv } = require('yargs');
const colors = require('colors');
require('dotenv').config();

const environment = argv.environment;
const isProduction = environment === 'prod';

const targetPath = isProduction ? `./src/environments/environment.prod.ts` : `./src/environments/environment.dev.ts`;

const environmentVars = `import {NgxLoggerLevel} from 'ngx-logger';

export const environment = {
  production: ${isProduction},
  bloxbergChainId: ${process.env.CIC_CHAIN_ID || 8996},
  logLevel: ${process.env.LOG_LEVEL || 'NgxLoggerLevel.ERROR'},
  serverLogLevel: ${process.env.SERVER_LOG_LEVEL || 'NgxLoggerLevel.OFF'},
  loggingUrl: '${process.env.CIC_LOGGING_URL || ''}',
  cicMetaUrl: '${process.env.CIC_META_URL || 'https://meta.dev.grassrootseconomics.net'}',
  publicKeysUrl: '${process.env.CIC_KEYS_URL || 'https://dev.grassrootseconomics.net/.well-known/publickeys'}',
  cicCacheUrl: '${process.env.CIC_CACHE_URL || 'https://cache.dev.grassrootseconomics.net'}',
  web3Provider: '${process.env.CIC_WEB3_PROVIDER || 'wss://bloxberg-ws.dev.grassrootseconomics.net'}',
  cicUssdUrl: '${process.env.CIC_USSD_URL || 'https://ussd.dev.grassrootseconomics.net'}',
  registryAddress: '${process.env.CIC_REGISTRY_ADDRESS || '0xea6225212005e86a4490018ded4bf37f3e772161'}',
  trustedDeclaratorAddress: '${process.env.CIC_TRUSTED_ADDRESS || '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C'}'
};
`;

function setConfigs(configs): void {
  writeFile(targetPath, configs, err => {
    if (err) {
      throw console.error(err);
    } else {
      console.log(colors.green(`Wrote variables to '${targetPath}`));
    }
  });
}


if (isProduction) {
  console.log(colors.cyan('Running in production environment!'));
  setConfigs(environmentVars);
} else {
  console.log(colors.cyan('Running in development environment!'));
  setConfigs(environmentVars);
}