serverless-aliyun-function-compute-wnj
Version:
Provider plugin for the Serverless Framework v1.x which adds support for Aliyun Function Compute
60 lines (51 loc) • 1.75 kB
JavaScript
'use strict';
const BbPromise = require('bluebird');
module.exports = {
removeArtifacts() {
this.bucket = undefined;
this.objects = [];
return BbPromise.bind(this)
.then(this.getBucket)
.then(this.getObjectsToRemove)
.then(this.removeObjects)
.then(this.removeBucket);
},
getBucket() {
const bucketName = this.provider.getDeploymentBucketName();
return this.provider.getBucket(bucketName).then((bucket) => {
this.bucket = bucket;
});
},
getObjectsToRemove() {
if (!this.bucket) {return BbPromise.resolve();}
const bucketName = this.bucket.name;
this.provider.resetOssClient(bucketName);
const prefix = this.provider.getArtifactDirectoryPrefix();
return this.provider.getObjects({ prefix }).then((objects) => {
this.objects = objects;
});
},
removeObjects() {
if (!this.objects.length) {
this.serverless.cli.log(`No artifacts to remove.`);
return BbPromise.resolve();
}
const bucketName = this.bucket.name;
const names = this.objects.map((obj) => obj.name);
this.serverless.cli.log(`Removing ${names.length} artifacts in OSS bucket ${bucketName}...`);
return this.provider.deleteObjects(names).then(() => {
this.serverless.cli.log(`Removed ${names.length} artifacts in OSS bucket ${bucketName}`);
});
},
removeBucket() {
if (!this.bucket) {
this.serverless.cli.log(`No buckets to remove.`);
return BbPromise.resolve();
}
const bucketName = this.bucket.name;
this.serverless.cli.log(`Removing OSS bucket ${bucketName}...`);
return this.provider.deleteBucket(bucketName).then(() => {
this.serverless.cli.log(`Removed OSS bucket ${bucketName}`);
});
},
};