ToolJet/marketplace/scripts/upload-to-s3.js
Arpit 636c4a62c5
[chore] Eslint fixes (#5988)
* lint fixes: frontend

* lint fixes: marketplace

* lint fixes: plugins-client js files

* typo fix

* eslint updates/fixes for marketplace

* eslint updates/fixes for plugins

* removing "@typescript-eslint/no-floating-promises for plugins"

* ignore client.js and server.js

* ignore client.js and server.js

* ignore client.js and server.tss

* Delete client.js

* ignore cypress-test/**
2023-04-11 15:34:58 +05:30

72 lines
1.9 KiB
JavaScript

import { createReadStream } from 'fs';
import readDir from 'recursive-readdir';
import { resolve as _resolve } from 'path';
import aws from 'aws-sdk';
import { lookup } from 'mime-types';
const { config, S3 } = aws;
const __dirname = _resolve();
config.update({
region: process.env.AWS_REGION || 'us-west-1',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
maxRetries: 3,
});
const directoryPath = _resolve(__dirname, 'plugins');
const getDirectoryFilesRecursive = (dir, ignores = []) => {
return new Promise((resolve, reject) => {
readDir(dir, ignores, (err, files) => (err ? reject(err) : resolve(files)));
});
};
const generateFileKey = (fileName) => {
const S3objectPath = fileName.split('/marketplace/plugins/')[1];
return `marketplace-assets/${S3objectPath}`;
};
const s3 = new S3();
const uploadToS3 = async () => {
try {
const fileArray = await getDirectoryFilesRecursive(directoryPath, [
'common',
'.DS_Store',
'.gitignore',
'index.d.ts',
'index.d.ts.map',
'README.md',
'package-lock.json',
'package.json',
'tsconfig.json',
]);
fileArray.map((file) => {
// Configuring parameters for S3 Object
const S3params = {
Bucket: process.env.AWS_BUCKET,
Body: createReadStream(file),
Key: generateFileKey(file),
ContentType: lookup(file),
ContentEncoding: 'utf-8',
CacheControl: 'immutable,max-age=31536000,public',
};
s3.upload(S3params, function (err, data) {
if (err) {
// Set the exit code while letting
// the process exit gracefully.
console.error(err);
process.exitCode = 1;
} else {
console.log(`Assets uploaded to S3: `, data);
}
});
});
} catch (error) {
console.error(error);
}
};
uploadToS3();