mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const BbPromise = require('bluebird');
|
|
const validateInput = require('./lib/validateInput');
|
|
const initializeResources = require('./lib/initializeResources');
|
|
const createStack = require('./lib/createStack');
|
|
const deployFunctions = require('./lib/deployFunctions');
|
|
const updateStack = require('./lib/updateStack');
|
|
|
|
const AWS = require('aws-sdk');
|
|
|
|
class AwsDeploy {
|
|
constructor(serverless) {
|
|
this.serverless = serverless;
|
|
|
|
Object.assign(
|
|
this,
|
|
validateInput,
|
|
initializeResources,
|
|
createStack,
|
|
deployFunctions,
|
|
updateStack
|
|
);
|
|
|
|
this.hooks = {
|
|
'before:deploy:initializeResources': (options) => {
|
|
this.options = options || {};
|
|
|
|
const config = {
|
|
region: this.options.region,
|
|
};
|
|
|
|
this.CloudFormation = new AWS.CloudFormation(config);
|
|
this.S3 = new AWS.S3(config);
|
|
BbPromise.promisifyAll(this.CloudFormation, { suffix: 'Promised' });
|
|
BbPromise.promisifyAll(this.S3, { suffix: 'Promised' });
|
|
|
|
return BbPromise.bind(this)
|
|
.then(this.validateInput);
|
|
},
|
|
|
|
'deploy:initializeResources': () => {
|
|
return BbPromise.bind(this)
|
|
.then(this.initializeResources);
|
|
},
|
|
|
|
'deploy:createProviderStacks': () => {
|
|
return BbPromise.bind(this)
|
|
.then(this.createStack);
|
|
},
|
|
|
|
'deploy:deploy': () => {
|
|
return BbPromise.bind(this)
|
|
.then(this.deployFunctions)
|
|
.then(this.updateStack)
|
|
.then(() => this.serverless.cli.log('Deployment successful!'));
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = AwsDeploy;
|