Skip to content

Commit 8b35c8a

Browse files
author
Andrews
committed
read outputs from cloudformation for post-config
1 parent 2fde6d4 commit 8b35c8a

File tree

4 files changed

+49
-24
lines changed

4 files changed

+49
-24
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"config": "node scripts/configure.js",
2828
"pre-config": "node scripts/pre-configure.js",
2929
"post-config": "node scripts/post-configure.js",
30-
"deconfig": "node scripts/deconfigure.js",
30+
"deconfig": "node -e \"require('./scripts/deconfigure.js')()\"",
3131
"create-artifacts-bucket": "aws s3 mb s3://$npm_package_config_artifactsS3Bucket --region $npm_package_config_primaryAwsRegion",
3232
"delete-artifacts-bucket": "aws s3 rm s3://$npm_package_config_artifactsS3Bucket/lambda-function.zip --region $npm_package_config_primaryAwsRegion; aws s3 rm s3://$npm_package_config_artifactsS3Bucket/dev-portal-express-proxy-api.yaml --region $npm_package_config_primaryAwsRegion; aws s3 rb s3://$npm_package_config_artifactsS3Bucket --region $npm_package_config_primaryAwsRegion",
3333
"upload-site": "cd ./dev-portal && npm run build && aws s3 sync ./build s3://$npm_package_config_siteS3Bucket --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --region $npm_package_config_primaryAwsRegion && cd ..",
@@ -39,7 +39,9 @@
3939
"clean": "npm run delete-artifacts-bucket && npm run delete-stack"
4040
},
4141
"license": "Apache-2.0",
42-
"dependencies": {},
42+
"dependencies": {
43+
"aws-sdk": "^2.7.8"
44+
},
4345
"devDependencies": {
4446
"inquirer": "^1.2.1"
4547
}

scripts/configure.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
const fs = require('fs')
55
const inquirer = require('inquirer')
66
const deconfigure = require('./deconfigure')
7-
console.log(deconfigure)
8-
deconfigure()
7+
98
const questions = [{
109
name: 'accountId',
1110
message: 'AWS account id:',

scripts/post-configure.js

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
'use strict'
33

44
const fs = require('fs')
5-
const inquirer = require('inquirer')
6-
const packageJson = require('./package.json')
5+
const path = require('path')
6+
const AWS = require('aws-sdk')
7+
const rootDir = path.resolve(__dirname, '..')
8+
const packageJson = require(`${rootDir}/package.json`)
9+
AWS.config.update({region:'us-east-1'})//packageJson.primaryAwsRegion
10+
11+
const cloudformation = new AWS.CloudFormation();
12+
// const inquirer = require('inquirer')
713
const primaryAwsRegion = packageJson.config.primaryAwsRegion
814

9-
const questions = [{
15+
/*const questions = [{
1016
name: 'apiGatewayApiId',
1117
message: 'API ID:',
1218
type: 'input'
@@ -16,12 +22,12 @@ const questions = [{
1622
type: 'list',
1723
choices: ['us-east-1', 'us-west-2'],
1824
default: 'us-east-1'
19-
}*/, {
25+
}* /, {
2026
name: 'cognitoUserPoolId',
2127
message: 'Cognito User Pool ID:',
2228
type: 'input'
2329
}, {
24-
name: 'cognitoClientId',
30+
name: 'cognitoUserPoolClientId',
2531
message: 'Cognito Client ID:',
2632
type: 'input'
2733
}, {
@@ -30,40 +36,56 @@ const questions = [{
3036
type: 'input'
3137
}]
3238
33-
inquirer.prompt(questions).then((answers) => {
34-
modifyPackageFile(answers.apiGatewayApiId, primaryAwsRegion, answers.cognitoUserPoolId, answers.cognitoClientId, answers.cognitoIdentityPoolId)
35-
modifyDevPortalJs(answers.cognitoIdentityPoolId, primaryAwsRegion, primaryAwsRegion, answers.cognitoUserPoolId, answers.cognitoClientId)
36-
modifyApigClient(answers.apiGatewayApiId, primaryAwsRegion)
39+
inquirer.prompt(questions).then(answers => {
40+
*/
41+
42+
cloudformation.describeStacks({
43+
StackName: 'DevPortalStack'//packageJson.config.cloudFormationStackName
44+
})
45+
.promise()
46+
.then(data => {
47+
const stack = data.Stacks[0]
48+
const outputs = stack.Outputs
49+
const apiGatewayApiId = getOutputValue(outputs, 'ApiId')
50+
const cognitoIdentityPoolId = getOutputValue(outputs, 'CognitoIdentityPoolId')
51+
const cognitoUserPoolClientId = getOutputValue(outputs, 'CognitoUserPoolClientId')
52+
const cognitoUserPoolId = getOutputValue(outputs, 'CognitoUserPoolId')
53+
modifyPackageFile(apiGatewayApiId, primaryAwsRegion, cognitoUserPoolId, cognitoUserPoolClientId, cognitoIdentityPoolId)
54+
modifyDevPortalJs(cognitoIdentityPoolId, primaryAwsRegion, primaryAwsRegion, cognitoUserPoolId, cognitoUserPoolClientId)
55+
modifyApigClient(apiGatewayApiId, primaryAwsRegion)
3756
}).catch(e => {console.log(e)})
3857

39-
function modifyPackageFile(apiGatewayApiId, cognitoRegion, cognitoUserPoolId, cognitoClientId, cognitoIdentityPoolId) {
40-
const packageJsonPath = './package.json'
58+
function getOutputValue(outputs, key) {
59+
return outputs.find(o => o.OutputKey === key).OutputValue
60+
}
61+
function modifyPackageFile(apiGatewayApiId, cognitoRegion, cognitoUserPoolId, cognitoUserPoolClientId, cognitoIdentityPoolId) {
62+
const packageJsonPath = `${rootDir}/package.json`
4163
const packageJson = fs.readFileSync(packageJsonPath, 'utf8')
4264
const packageJsonModified = packageJson
4365
.replace(/YOUR_API_GATEWAY_API_ID/g, apiGatewayApiId)
4466
.replace(/YOUR_COGNITO_REGION/g, cognitoRegion)
4567
.replace(/YOUR_COGNITO_USER_POOL_ID/g, cognitoUserPoolId)
46-
.replace(/YOUR_COGNITO_CLIENT_ID/g, cognitoClientId)
68+
.replace(/YOUR_COGNITO_CLIENT_ID/g, cognitoUserPoolClientId)
4769
.replace(/YOUR_COGNITO_IDENTITY_POOL_ID/g, cognitoIdentityPoolId)
4870

4971
fs.writeFileSync(packageJsonPath, packageJsonModified, 'utf8')
5072
}
5173

52-
function modifyDevPortalJs(cognitoIdentityPoolId, primaryAwsRegion, cognitoRegion, cognitoUserPoolId, cognitoClientId) {
53-
const htmlPath = './dev-portal/src/services/aws.js'
74+
function modifyDevPortalJs(cognitoIdentityPoolId, primaryAwsRegion, cognitoRegion, cognitoUserPoolId, cognitoUserPoolClientId) {
75+
const htmlPath = `${rootDir}/dev-portal/src/services/aws.js`
5476
const html = fs.readFileSync(htmlPath, 'utf8')
5577
const htmlModified = html
5678
.replace(/YOUR_COGNITO_IDENTITY_POOL_ID/g, cognitoIdentityPoolId)
5779
.replace(/YOUR_COGNITO_REGION/g, cognitoRegion)
5880
.replace(/YOUR_PRIMARY_AWS_REGION/g, primaryAwsRegion)
5981
.replace(/YOUR_COGNITO_USER_POOL_ID/g, cognitoUserPoolId)
60-
.replace(/YOUR_COGNITO_CLIENT_ID/g, cognitoClientId)
82+
.replace(/YOUR_COGNITO_CLIENT_ID/g, cognitoUserPoolClientId)
6183

6284
fs.writeFileSync(htmlPath, htmlModified, 'utf8')
6385
}
6486

6587
function modifyApigClient(apiGatewayApiId, primaryAwsRegion) {
66-
const apigClientPath = './dev-portal/public/apigateway-js-sdk/apigClient.js'
88+
const apigClientPath = `${rootDir}/dev-portal/public/apigateway-js-sdk/apigClient.js`
6789
const apigClient = fs.readFileSync(apigClientPath, 'utf8')
6890
const apigClientModified = apigClient
6991
.replace(/YOUR_API_GATEWAY_API_ID/g, apiGatewayApiId)

scripts/pre-configure.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
'use strict'
33

44
const fs = require('fs')
5+
const path = require('path')
56
const inquirer = require('inquirer')
7+
const rootDir = path.resolve(__dirname, '..')
68

79
const questions = [{
810
name: 'accountId',
@@ -51,7 +53,7 @@ inquirer.prompt(questions).then((answers) => {
5153
}).catch(e => {console.log(e)})
5254

5355
function modifyPackageFile(artifactsS3BucketName, clientS3BucketName, primaryAwsRegion, apiGatewayApiName, cloudFormationStackName/*, expressLambdaFunctionName*/, accountId) {
54-
const packageJsonPath = './package.json'
56+
const packageJsonPath = `${rootDir}./package.json`
5557
const packageJson = fs.readFileSync(packageJsonPath, 'utf8')
5658
const packageJsonModified = packageJson
5759
.replace(/YOUR_ARTIFACTS_BUCKET_NAME/g, artifactsS3BucketName)
@@ -66,7 +68,7 @@ function modifyPackageFile(artifactsS3BucketName, clientS3BucketName, primaryAws
6668
}
6769

6870
function modifyUiPackageFile(clientS3BucketName, primaryAwsRegion) {
69-
const packageJsonPath = './dev-portal/package.json'
71+
const packageJsonPath = `${rootDir}./dev-portal/package.json`
7072
const packageJson = fs.readFileSync(packageJsonPath, 'utf8')
7173
const packageJsonModified = packageJson
7274
.replace(/YOUR_CLIENT_BUCKET_NAME/g, clientS3BucketName)
@@ -76,7 +78,7 @@ function modifyUiPackageFile(clientS3BucketName, primaryAwsRegion) {
7678
}
7779

7880
function modifyExpressServer(clientS3BucketName, primaryAwsRegion) {
79-
const expressServerPath = './lambdas/backend/express-server.js'
81+
const expressServerPath = `${rootDir}./lambdas/backend/express-server.js`
8082
const expressServer = fs.readFileSync(expressServerPath, 'utf8')
8183
const expressServerModified = expressServer
8284
.replace(/YOUR_CLIENT_BUCKET_NAME/g, clientS3BucketName)
@@ -86,7 +88,7 @@ function modifyExpressServer(clientS3BucketName, primaryAwsRegion) {
8688
}
8789

8890
function modifySwaggerFile(accountId, primaryAwsRegion, apiGatewayApiName/*, expressLambdaFunctionName*/) {
89-
const swaggerDefinitionPath = './lambdas/backend/dev-portal-express-proxy-api.yaml'
91+
const swaggerDefinitionPath = `${rootDir}./lambdas/backend/dev-portal-express-proxy-api.yaml`
9092
const swaggerDefinition = fs.readFileSync(swaggerDefinitionPath, 'utf8')
9193
const simpleProxyApiModified = swaggerDefinition
9294
.replace(/YOUR_ACCOUNT_ID/g, accountId)

0 commit comments

Comments
 (0)