From ddbcf1d1bc5cf99462dd435928c35e4f2f959d08 Mon Sep 17 00:00:00 2001 From: erezrokah Date: Thu, 20 Aug 2020 19:15:44 +0200 Subject: [PATCH 1/2] refactor: clean up addEnvVariables function --- src/commands/dev/exec.js | 3 +-- src/commands/dev/index.js | 18 ++++++++++++------ src/commands/functions/create.js | 6 +++--- src/utils/dev.js | 9 ++++----- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/commands/dev/exec.js b/src/commands/dev/exec.js index 48aa83be63e..fb6c77c5584 100644 --- a/src/commands/dev/exec.js +++ b/src/commands/dev/exec.js @@ -15,9 +15,8 @@ class ExecCommand extends Command { const { site, api } = this.netlify if (site.id) { this.log(`${NETLIFYDEVLOG} Checking your site's environment variables...`) // just to show some visual response first - const accessToken = api.accessToken const { addEnvVariables } = require('../../utils/dev') - await addEnvVariables(api, site, accessToken) + await addEnvVariables(api, site) } else { this.log( `${NETLIFYDEVERR} No Site ID detected. You probably forgot to run \`netlify link\` or \`netlify init\`. ` diff --git a/src/commands/dev/index.js b/src/commands/dev/index.js index ed1eb9b0bbc..ee633e73cf5 100644 --- a/src/commands/dev/index.js +++ b/src/commands/dev/index.js @@ -460,6 +460,16 @@ const getBuildFunction = functionBuilder => } } +const getAddonsUrlsAndAddEnvVariablesToProcessEnv = async ({ api, site, flags }) => { + if (site.id && !flags.offline) { + const { addEnvVariables } = require('../../utils/dev') + const addonUrls = await addEnvVariables(api, site) + return addonUrls + } else { + return {} + } +} + class DevCommand extends Command { async run() { this.log(`${NETLIFYDEV}`) @@ -476,13 +486,8 @@ class DevCommand extends Command { ...config.dev, ...flags, } - let addonUrls = {} - const accessToken = api.accessToken - if (site.id && !flags.offline) { - const { addEnvVariables } = require('../../utils/dev') - addonUrls = await addEnvVariables(api, site, accessToken) - } + const addonUrls = await getAddonsUrlsAndAddEnvVariablesToProcessEnv({ api, site, flags }) process.env.NETLIFY_DEV = 'true' // Override env variables with .env file @@ -553,6 +558,7 @@ class DevCommand extends Command { } if (flags.live) { + const accessToken = api.accessToken await waitPort({ port: settings.frameworkPort, output: 'silent' }) const liveSession = await createTunnel(site.id, accessToken, this.log) url = liveSession.session_url diff --git a/src/commands/functions/create.js b/src/commands/functions/create.js index e3e72c84842..5e7aac21897 100644 --- a/src/commands/functions/create.js +++ b/src/commands/functions/create.js @@ -246,7 +246,7 @@ async function downloadFromURL(flags, args, functionsDir) { await installAddons.call(this, addons, path.resolve(fnFolder)) if (onComplete) { - await addEnvVariables(this.netlify.api, this.netlify.site, this.netlify.api.accessToken) + await addEnvVariables(this.netlify.api, this.netlify.site) await onComplete.call(this) } fs.unlinkSync(fnTemplateFile) // delete @@ -329,7 +329,7 @@ async function scaffoldFromTemplate(flags, args, functionsDir) { installAddons.call(this, addons, path.resolve(functionPath)) if (onComplete) { - await addEnvVariables(this.netlify.api, this.netlify.site, this.netlify.api.accessToken) + await addEnvVariables(this.netlify.api, this.netlify.site) await onComplete.call(this) } }) @@ -357,7 +357,7 @@ async function installAddons(addons = [], fnPath) { // spinner.success("installed addon: " + addonName); if (addonDidInstall) { const { addEnvVariables } = require('../../utils/dev') - await addEnvVariables(api, site, accessToken) + await addEnvVariables(api, site) const { confirmPostInstall } = await inquirer.prompt([ { type: 'confirm', diff --git a/src/utils/dev.js b/src/utils/dev.js index 03c8e37f555..af29ff070cb 100644 --- a/src/utils/dev.js +++ b/src/utils/dev.js @@ -15,18 +15,17 @@ const { * * ``` * // usage example - * const { site, api } = this.netlify + * const { api, site } = this.netlify * if (site.id) { - * const accessToken = api.accessToken - * const addonUrls = await addEnvVariables(site, accessToken) + * const addonUrls = await addEnvVariables(api, site) * // addonUrls is only for startProxy in netlify dev:index * } * ``` */ -async function addEnvVariables(api, site, accessToken) { +async function addEnvVariables(api, site) { /** from addons */ const addonUrls = {} - const addons = await getAddons(site.id, accessToken).catch(error => { + const addons = await getAddons(site.id, api.accessToken).catch(error => { console.error(error) switch (error.status) { default: From c33e4d56fe0daa311a970f8aa66e8bd6be426168 Mon Sep 17 00:00:00 2001 From: erezrokah Date: Thu, 20 Aug 2020 19:25:20 +0200 Subject: [PATCH 2/2] refactor: extract .env handling to a function --- src/commands/dev/index.js | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/commands/dev/index.js b/src/commands/dev/index.js index ee633e73cf5..56586ac6487 100644 --- a/src/commands/dev/index.js +++ b/src/commands/dev/index.js @@ -470,6 +470,19 @@ const getAddonsUrlsAndAddEnvVariablesToProcessEnv = async ({ api, site, flags }) } } +const addDotFileEnvs = async ({ site }) => { + const envSettings = await getEnvSettings(site.root) + if (envSettings.file) { + console.log( + `${NETLIFYDEVLOG} Overriding the following env variables with ${chalk.blue( + path.relative(site.root, envSettings.file) + )} file:`, + chalk.yellow(Object.keys(envSettings.vars)) + ) + Object.entries(envSettings.vars).forEach(([key, val]) => (process.env[key] = val)) + } +} + class DevCommand extends Command { async run() { this.log(`${NETLIFYDEV}`) @@ -488,19 +501,8 @@ class DevCommand extends Command { } const addonUrls = await getAddonsUrlsAndAddEnvVariablesToProcessEnv({ api, site, flags }) - process.env.NETLIFY_DEV = 'true' - // Override env variables with .env file - const envSettings = await getEnvSettings(site.root) - if (envSettings.file) { - console.log( - `${NETLIFYDEVLOG} Overriding the following env variables with ${chalk.blue( - path.relative(site.root, envSettings.file) - )} file:`, - chalk.yellow(Object.keys(envSettings.vars)) - ) - Object.entries(envSettings.vars).forEach(([key, val]) => (process.env[key] = val)) - } + await addDotFileEnvs({ site }) let settings = {} try {