@oclif/dev-cli
Version:
helpers for oclif CLIs
89 lines (88 loc) • 3.68 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs-extra");
const qq = require("qqjs");
const log_1 = require("./log");
const debug = log_1.debug.new('aws');
const cache = {};
const aws = {
get creds() {
const creds = {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
sessionToken: process.env.AWS_SESSION_TOKEN,
};
if (!creds.accessKeyId)
throw new Error('AWS_ACCESS_KEY_ID not set');
if (!creds.secretAccessKey)
throw new Error('AWS_SECRET_ACCESS_KEY not set');
return creds;
},
get s3() {
try {
cache.s3 = cache.s3 || new (require('aws-sdk/clients/s3'))(Object.assign(Object.assign({}, this.creds), { region: process.env.AWS_REGION, sslEnabled: process.env.AWS_SSL_ENABLED === undefined ? undefined : process.env.AWS_SSL_ENABLED === 'true', s3ForcePathStyle: process.env.AWS_S3_FORCE_PATH_STYLE === undefined ? undefined : process.env.AWS_S3_FORCE_PATH_STYLE === 'true', endpoint: process.env.AWS_S3_ENDPOINT }));
return cache.s3;
}
catch (error) {
if (error.code === 'MODULE_NOT_FOUND')
throw new Error(`${error.message}\naws-sdk is needed to run this command.\nInstall aws-sdk as a devDependency in your CLI. \`yarn add -D aws-sdk\``);
throw error;
}
},
get cloudfront() {
cache.cloudfront = cache.cloudfront || new (require('aws-sdk/clients/cloudfront'))(this.creds);
return cache.cloudfront;
},
};
exports.default = {
get cloudfront() {
return {
createCloudfrontInvalidation: (options) => new Promise((resolve, reject) => {
log_1.log('createCloudfrontInvalidation', options.DistributionId, options.InvalidationBatch.Paths.Items);
aws.cloudfront.createInvalidation(options, err => {
if (err)
reject(err);
else
resolve();
});
}),
};
},
get s3() {
return {
uploadFile: (local, options) => new Promise((resolve, reject) => {
log_1.log('s3:uploadFile', qq.prettifyPaths(local), `s3://${options.Bucket}/${options.Key}`);
options.Body = fs.createReadStream(local);
aws.s3.upload(options, err => {
if (err)
reject(err);
else
resolve();
});
}),
headObject: (options) => new Promise((resolve, reject) => {
debug('s3:headObject', `s3://${options.Bucket}/${options.Key}`);
aws.s3.headObject(options, (err, data) => {
if (err)
reject(err);
else
resolve(data);
});
}),
};
},
};
// export const getObject = (options: S3.Types.GetObjectRequest) => new Promise<S3.GetObjectOutput>((resolve, reject) => {
// debug('getObject', `s3://${options.Bucket}/${options.Key}`)
// s3().getObject(options, (err, data) => {
// if (err) reject(err)
// else resolve(data)
// })
// })
// export const listObjects = (options: S3.Types.ListObjectsV2Request) => new Promise<S3.ListObjectsV2Output>((resolve, reject) => {
// debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
// s3().listObjectsV2(options, (err, objects) => {
// if (err) reject(err)
// else resolve(objects)
// })
// })
;