From 14d25d2a380425ae7606306e36cfed02c2e41002 Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Mon, 15 Jun 2020 12:39:49 +1000 Subject: [PATCH 1/4] fix(activate): prepare and pass env vars to serverless-api activateBuild Fixes: #109 --- src/config/activate.ts | 5 ++++- src/config/deploy.ts | 16 ++-------------- src/config/utils/env.ts | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/config/activate.ts b/src/config/activate.ts index 643be10d..41ff7510 100644 --- a/src/config/activate.ts +++ b/src/config/activate.ts @@ -9,7 +9,7 @@ import { } from '../commands/shared'; import { getFullCommand } from '../commands/utils'; import { readSpecializedConfig } from './global'; -import { getCredentialsFromFlags } from './utils'; +import { getCredentialsFromFlags, readLocalEnvFile, prepareEnvForDeploy } from './utils'; import { mergeFlagsAndConfig } from './utils/mergeFlagsAndConfig'; type ActivateConfig = ApiActivateConfig & { @@ -61,6 +61,8 @@ export async function getConfigFromFlags( flags, externalCliOptions ); + const { localEnv } = await readLocalEnvFile(flags); + const env = prepareEnvForDeploy(localEnv); const command = getFullCommand(flags); const serviceSid = checkForValidServiceSid(command, flags.serviceSid); @@ -79,5 +81,6 @@ export async function getConfigFromFlags( sourceEnvironment: flags.sourceEnvironment, region, edge, + env }; } diff --git a/src/config/deploy.ts b/src/config/deploy.ts index 58843e48..421cc59d 100644 --- a/src/config/deploy.ts +++ b/src/config/deploy.ts @@ -14,6 +14,7 @@ import { getServiceNameFromFlags, readLocalEnvFile, readPackageJsonContent, + prepareEnvForDeploy } from './utils'; import { mergeFlagsAndConfig } from './utils/mergeFlagsAndConfig'; @@ -69,6 +70,7 @@ export async function getConfigFromFlags( externalCliOptions ); const { localEnv, envPath } = await readLocalEnvFile(flags); + const env = prepareEnvForDeploy(localEnv); const serviceSid = flags.serviceSid || @@ -83,20 +85,6 @@ export async function getConfigFromFlags( const pkgJson = await readPackageJsonContent(flags); - const env = { - ...localEnv, - }; - - for (let key of Object.keys(env)) { - const val = env[key]; - if (typeof val === 'string' && val.length === 0) { - delete env[key]; - } - } - - delete env.ACCOUNT_SID; - delete env.AUTH_TOKEN; - let serviceName: string | undefined = await getServiceNameFromFlags(flags); if (!serviceName) { diff --git a/src/config/utils/env.ts b/src/config/utils/env.ts index 5f3655cc..bfd55715 100644 --- a/src/config/utils/env.ts +++ b/src/config/utils/env.ts @@ -1,6 +1,7 @@ import dotenv from 'dotenv'; import path from 'path'; import { EnvironmentVariablesWithAuth } from '../../types/generic'; +import { EnvironmentVariables } from '@twilio-labs/serverless-api'; import { fileExists, readFile } from '../../utils/fs'; export async function readLocalEnvFile(flags: { @@ -25,3 +26,21 @@ export async function readLocalEnvFile(flags: { } return { envPath: '', localEnv: {} }; } + +export function prepareEnvForDeploy(localEnv: EnvironmentVariablesWithAuth): EnvironmentVariables { + const env = { + ...localEnv, + }; + + for (let key of Object.keys(env)) { + const val = env[key]; + if (typeof val === 'string' && val.length === 0) { + delete env[key]; + } + } + + delete env.ACCOUNT_SID; + delete env.AUTH_TOKEN; + + return env; +} \ No newline at end of file From 8f24baccd87a3ef6be5ddac64c3dd327d08ddb4e Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Tue, 16 Jun 2020 10:50:23 +1000 Subject: [PATCH 2/4] Rename prepareEnvForDeploy to filterEnvVariablesForDeploy --- src/config/activate.ts | 4 ++-- src/config/deploy.ts | 4 ++-- src/config/utils/env.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/config/activate.ts b/src/config/activate.ts index 41ff7510..ee36c356 100644 --- a/src/config/activate.ts +++ b/src/config/activate.ts @@ -9,7 +9,7 @@ import { } from '../commands/shared'; import { getFullCommand } from '../commands/utils'; import { readSpecializedConfig } from './global'; -import { getCredentialsFromFlags, readLocalEnvFile, prepareEnvForDeploy } from './utils'; +import { getCredentialsFromFlags, readLocalEnvFile, filterEnvVariablesForDeploy } from './utils'; import { mergeFlagsAndConfig } from './utils/mergeFlagsAndConfig'; type ActivateConfig = ApiActivateConfig & { @@ -62,7 +62,7 @@ export async function getConfigFromFlags( externalCliOptions ); const { localEnv } = await readLocalEnvFile(flags); - const env = prepareEnvForDeploy(localEnv); + const env = filterEnvVariablesForDeploy(localEnv); const command = getFullCommand(flags); const serviceSid = checkForValidServiceSid(command, flags.serviceSid); diff --git a/src/config/deploy.ts b/src/config/deploy.ts index 421cc59d..65631bc3 100644 --- a/src/config/deploy.ts +++ b/src/config/deploy.ts @@ -14,7 +14,7 @@ import { getServiceNameFromFlags, readLocalEnvFile, readPackageJsonContent, - prepareEnvForDeploy + filterEnvVariablesForDeploy } from './utils'; import { mergeFlagsAndConfig } from './utils/mergeFlagsAndConfig'; @@ -70,7 +70,7 @@ export async function getConfigFromFlags( externalCliOptions ); const { localEnv, envPath } = await readLocalEnvFile(flags); - const env = prepareEnvForDeploy(localEnv); + const env = filterEnvVariablesForDeploy(localEnv); const serviceSid = flags.serviceSid || diff --git a/src/config/utils/env.ts b/src/config/utils/env.ts index bfd55715..46a75aba 100644 --- a/src/config/utils/env.ts +++ b/src/config/utils/env.ts @@ -27,7 +27,7 @@ export async function readLocalEnvFile(flags: { return { envPath: '', localEnv: {} }; } -export function prepareEnvForDeploy(localEnv: EnvironmentVariablesWithAuth): EnvironmentVariables { +export function filterEnvVariablesForDeploy(localEnv: EnvironmentVariablesWithAuth): EnvironmentVariables { const env = { ...localEnv, }; From 82e818bfc6387e1ca1217a732ef0d1420aadeb0b Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Tue, 16 Jun 2020 10:59:48 +1000 Subject: [PATCH 3/4] Adds test for filterEnvVariablesForDeploy --- __tests__/config/utils/env.test.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 __tests__/config/utils/env.test.ts diff --git a/__tests__/config/utils/env.test.ts b/__tests__/config/utils/env.test.ts new file mode 100644 index 00000000..f0366dd1 --- /dev/null +++ b/__tests__/config/utils/env.test.ts @@ -0,0 +1,27 @@ +import { filterEnvVariablesForDeploy } from '../../../src/config/utils/env'; +import { EnvironmentVariablesWithAuth } from '../../../src/types/generic'; + +describe('filterEnvVariablesForDeploy', () => { + const testVars: EnvironmentVariablesWithAuth = { + ACCOUNT_SID: 'ACCOUNT_SID', + AUTH_TOKEN: 'AUTH_TOKEN', + empty: '', + hello: 'world', + }; + + it('deletes ACCOUNT_SID and AUTH_TOKEN', () => { + const deployVars = filterEnvVariablesForDeploy(testVars); + expect(deployVars['ACCOUNT_SID']).toBeUndefined(); + expect(deployVars['AUTH_TOKEN']).toBeUndefined(); + }); + + it('deletes empty env vars', () => { + const deployVars = filterEnvVariablesForDeploy(testVars); + expect(deployVars['empty']).toBeUndefined(); + }); + + it('leaves other variables as they were', () => { + const deployVars = filterEnvVariablesForDeploy(testVars); + expect(deployVars['hello']).toEqual('world'); + }); +}); From b6710e7919695b20cf0b78870339f369f9dce07a Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Tue, 16 Jun 2020 15:59:28 +1000 Subject: [PATCH 4/4] chore(deps): updates @twilio-labs/serverless-api to 3.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1550160c..f4e694a8 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "author": "Dominik Kundel ", "license": "MIT", "dependencies": { - "@twilio-labs/serverless-api": "^3.0.0", + "@twilio-labs/serverless-api": "^3.1.0", "@twilio-labs/serverless-runtime-types": "^1.1.7", "@types/express": "^4.17.0", "@types/inquirer": "^6.0.3",