42 lines
1.1 KiB
JavaScript

'use strict';
const validate = require('../lib/validate');
const monitorStack = require('../lib/monitorStack');
const emptyS3Bucket = require('./lib/bucket');
const removeStack = require('./lib/stack');
const removeEcrRepository = require('./lib/ecr');
const checkIfEcrRepositoryExists = require('../lib/checkIfEcrRepositoryExists');
class AwsRemove {
constructor(serverless, options) {
this.serverless = serverless;
this.options = options || {};
this.provider = this.serverless.getProvider('aws');
Object.assign(
this,
validate,
emptyS3Bucket,
removeStack,
monitorStack,
removeEcrRepository,
checkIfEcrRepositoryExists
);
this.hooks = {
'remove:remove': async () => {
const doesEcrRepositoryExistPromise = this.checkIfEcrRepositoryExists();
await this.validate();
await this.emptyS3Bucket();
const cfData = await this.removeStack();
await this.monitorStack('delete', cfData);
if (await doesEcrRepositoryExistPromise) {
await this.removeEcrRepository();
}
},
};
}
}
module.exports = AwsRemove;