From 7706bcd8f0615ccc7db3a447d4782f22167ba35e Mon Sep 17 00:00:00 2001 From: Jenni Nurmi Date: Wed, 9 Jan 2019 16:05:23 +0200 Subject: [PATCH] Save mandatory env variables to .env file --- scripts/config.js | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/scripts/config.js b/scripts/config.js index 7908ee7d..80ae628e 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -1,8 +1,70 @@ +const inquirer = require('inquirer'); const fs = require('fs'); +const readline = require('readline'); const chalk = require('chalk'); +const mandatoryVariables = [ + { + type: 'input', + name: 'REACT_APP_SHARETRIBE_SDK_CLIENT_ID', + message: `What is your Flex client id?`, + }, + { + type: 'input', + name: 'REACT_APP_STRIPE_PUBLISHABLE_KEY', + message: `What is your Stripe publishable key?`, + }, + { + type: 'input', + name: 'REACT_APP_MAPBOX_ACCESS_TOKEN', + message: `What is your Mapbox access token?`, + }, +]; +const updateEnvFile = data => { + let content = ''; + data.map(line => { + content = content + line.toString(); + }); + + fs.writeFileSync('./.env', content); +}; + +const checkIfSameLine = (answers, line) => { + let foundKey; + if (answers) { + Object.keys(answers).map(key => { + if (line.includes(key)) { + foundKey = key; + } + }); + } + return foundKey; +}; + +const readLines = answers => { + return new Promise((resolve, reject) => { + const rl = readline.createInterface({ + input: require('fs').createReadStream('./.env') + }); + + const data = []; + rl.on('line', function (line) { + const key = checkIfSameLine(answers, line); + if (key) { + data.push(`${key}=${answers[key]}\n`); + } else { + data.push(`${line}\n`); + } + }); + + rl.on('close', () => { + resolve(data); + }); + }); +}; + const createEnvFile = () => { fs.copyFileSync('./.env-template', './.env', err => { if (err) throw err; @@ -21,6 +83,18 @@ if (fs.existsSync(`./.env`)) { createEnvFile(); + console.log(chalk.bold('Mandatory variables')); + inquirer + .prompt(mandatoryVariables) + .then(answers => { + return readLines(answers); + }) + .then(data => { + updateEnvFile(data); + }) + .catch(err => { + console.log(chalk.red(`An error occurred due to: ${err.message}`)); + }); } };