Skip to content

Commit

Permalink
fix: env add/remove, fix imports
Browse files Browse the repository at this point in the history
  • Loading branch information
jhockett committed Nov 18, 2020
1 parent 81fd4d9 commit d85a6dc
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 44 deletions.
1 change: 0 additions & 1 deletion packages/amplify-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@
"ci-info": "^2.0.0",
"cli-table3": "^0.6.0",
"colors": "^1.4.0",
"cors": "^2.8.5",
"ejs": "^3.0.1",
"enquirer": "^2.3.6",
"env-editor": "^0.4.1",
Expand Down
1 change: 1 addition & 0 deletions packages/amplify-provider-awscloudformation/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"chalk": "^3.0.0",
"cloudform": "^4.2.0",
"columnify": "^1.5.4",
"cors": "^2.8.5",
"extract-zip": "^2.0.1",
"folder-hash": "^3.3.0",
"fs-extra": "^8.1.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ const inquirer = require('inquirer');
const sequential = require('promise-sequential');
const { S3 } = require('./aws-utils/aws-s3');
const { getConfiguredAmplifyClient } = require('./aws-utils/aws-amplify');
const constants = require('./constants');
const { ProviderName, AmplifyAppIdLabel } = require('./constants');
const { checkAmplifyServiceIAMPermission } = require('./amplify-service-permission-check');
const { stateManager } = require('amplify-cli-core');

async function init(amplifyServiceParams) {
const { context, awsConfig, projectName, envName, stackName } = amplifyServiceParams;
Expand Down Expand Up @@ -54,28 +55,19 @@ async function init(amplifyServiceParams) {

if (!amplifyAppId) {
// in the "amplify env add" workflow, there might be other envs, new env can be added to existing appId
let teamProviderFilePath;
try {
teamProviderFilePath = context.amplify.pathManager.getProviderInfoFilePath();
} catch (e) {
// do nothing
}

if (teamProviderFilePath && fs.existsSync(teamProviderFilePath)) {
const teamProviderInfo = context.amplify.readJsonFile(teamProviderFilePath);

if (stateManager.teamProviderInfoExists()) {
const teamProviderInfo = stateManager.getTeamProviderInfo();
const envList = Object.keys(teamProviderInfo);

let appIdsInTheSameLocalProjectAndRegion = [];
for (let i = 0; i < envList.length; i++) {
const env = envList[i];
for (let env of envList) {
if (
env !== envName &&
teamProviderInfo[env][constants.ProviderName].Region === awsConfig.region &&
teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel] &&
!appIdsInTheSameLocalProjectAndRegion.includes(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel])
teamProviderInfo[env][ProviderName].Region === awsConfig.region &&
teamProviderInfo[env][ProviderName][AmplifyAppIdLabel] &&
!appIdsInTheSameLocalProjectAndRegion.includes(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel])
) {
appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]);
appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]);
}
}

Expand Down Expand Up @@ -175,13 +167,12 @@ async function init(amplifyServiceParams) {
}

async function deleteEnv(context, envName, awsConfig) {
const teamProviderFilePath = context.amplify.pathManager.getProviderInfoFilePath();
if (fs.existsSync(teamProviderFilePath)) {
const teamProviderInfo = context.amplify.readJsonFile(teamProviderFilePath);
if (stateManager.teamProviderInfoExists()) {
const teamProviderInfo = stateManager.getTeamProviderInfo();
if (
teamProviderInfo[envName] &&
teamProviderInfo[envName][constants.ProviderName] &&
teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel]
teamProviderInfo[envName][ProviderName] &&
teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel]
) {
const amplifyClient = await getConfiguredAmplifyClient(context, awsConfig);
if (!amplifyClient) {
Expand All @@ -194,7 +185,7 @@ async function deleteEnv(context, envName, awsConfig) {
return;
}

const amplifyAppId = teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel];
const amplifyAppId = teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel];
const deleteEnvParams = {
appId: amplifyAppId,
environmentName: envName,
Expand All @@ -208,10 +199,10 @@ async function postPushCheck(context) {
const { projectConfig, amplifyMeta, localEnvInfo, teamProviderInfo } = context.amplify.getProjectDetails();

const { envName } = localEnvInfo;
const stackName = teamProviderInfo[envName][constants.ProviderName].StackName;
const region = teamProviderInfo[envName][constants.ProviderName].Region;
const stackName = teamProviderInfo[envName][ProviderName].StackName;
const region = teamProviderInfo[envName][ProviderName].Region;

if (!teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel]) {
if (!teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel]) {
let amplifyAppId;

const amplifyClient = await getConfiguredAmplifyClient(context);
Expand All @@ -233,14 +224,13 @@ async function postPushCheck(context) {
const envList = Object.keys(teamProviderInfo);

let appIdsInTheSameLocalProjectAndRegion = [];
for (let i = 0; i < envList.length; i++) {
const env = envList[i];
for (const env of envList) {
if (
env !== envName &&
teamProviderInfo[env][constants.ProviderName].Region === region &&
teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]
teamProviderInfo[env][ProviderName].Region === region &&
teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]
) {
appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]);
appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]);
}
}

Expand Down Expand Up @@ -286,23 +276,18 @@ async function postPushCheck(context) {
const createEnvParams = {
appId: amplifyAppId,
environmentName: envName,
stackName: teamProviderInfo[envName][constants.ProviderName].StackName,
deploymentArtifacts: teamProviderInfo[envName][constants.ProviderName].DeploymentBucketName,
stackName: teamProviderInfo[envName][ProviderName].StackName,
deploymentArtifacts: teamProviderInfo[envName][ProviderName].DeploymentBucketName,
};

await amplifyClient.createBackendEnvironment(createEnvParams).promise();
}

teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel] = amplifyAppId;
amplifyMeta.providers[constants.ProviderName][constants.AmplifyAppIdLabel] = amplifyAppId;

const amplifyMetaFilePath = context.amplify.pathManager.getAmplifyMetaFilePath();
let jsonString = JSON.stringify(amplifyMeta, null, 4);
fs.writeFileSync(amplifyMetaFilePath, jsonString, 'utf8');
teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel] = amplifyAppId;
amplifyMeta.providers[ProviderName][AmplifyAppIdLabel] = amplifyAppId;

const teamProviderInfoFilePath = context.amplify.pathManager.getProviderInfoFilePath();
jsonString = JSON.stringify(teamProviderInfo, null, 4);
fs.writeFileSync(teamProviderInfoFilePath, jsonString, 'utf8');
stateManager.setMeta(undefined, amplifyMeta);
stateManager.setTeamProviderInfo(undefined, teamProviderInfo);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,10 @@ async function getAwsConfig(context) {
const appId = _.get(meta, ['providers', 'awscloudformation', 'AmplifyAppId']);
const authConfig = await getRefreshedTokens(appId, context.print);
const { idToken, IdentityId, region } = authConfig;
awsConfig = (await getAdminCredentials(idToken, IdentityId, region)).Credentials;
awsConfig = {
...(await getAdminCredentials(idToken, IdentityId, region)).Credentials,
region,
};
} catch (e) {
throw new Error('Failed to get Amplify Admin credentials.');
}
Expand Down

0 comments on commit d85a6dc

Please sign in to comment.