From 7989a5e9f9ed027a43926fdb8dc4c4d8b461fafa Mon Sep 17 00:00:00 2001 From: Nils Knappmeier Date: Sat, 5 Aug 2023 18:26:51 +0200 Subject: [PATCH] function to upload a file list --- .../generateFileList-test.js | 25 +++++++++++++++++++ tasks/aws-s3-builds-page/generateFileList.js | 13 ++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tasks/aws-s3-builds-page/generateFileList-test.js create mode 100644 tasks/aws-s3-builds-page/generateFileList.js diff --git a/tasks/aws-s3-builds-page/generateFileList-test.js b/tasks/aws-s3-builds-page/generateFileList-test.js new file mode 100644 index 00000000..e3cf3d70 --- /dev/null +++ b/tasks/aws-s3-builds-page/generateFileList-test.js @@ -0,0 +1,25 @@ +const crypto = require('crypto'); + +const { runTest } = require('./test-utils/runTest'); +const { createS3Client } = require('./s3client'); +const { generateFileList } = require('./generateFileList'); +const assert = require('node:assert'); + +// This is a test file. It is intended to be run manually with the proper environment variables set +// +// Run it from the project root using "node tasks/aws-s3-builds-page/generateFileList-test.js" + +const s3Client = createS3Client(); + +runTest(async ({ log }) => { + log('Generate file list'); + const filename = `test-file-list${crypto.randomUUID()}`; + await generateFileList(filename); + + log(`Checking JSON at ${s3Client.fileUrl(`${filename}.json`)}`); + const jsonList = JSON.parse(await s3Client.fetchFile(`${filename}.json`)); + assert(jsonList.includes('handlebars-v4.7.7.js')); + + log(`Deleting file ${filename}.json`); + await s3Client.deleteFile(`${filename}.json`); +}); diff --git a/tasks/aws-s3-builds-page/generateFileList.js b/tasks/aws-s3-builds-page/generateFileList.js new file mode 100644 index 00000000..49cceb50 --- /dev/null +++ b/tasks/aws-s3-builds-page/generateFileList.js @@ -0,0 +1,13 @@ +/* eslint-disable no-console */ +const { createS3Client } = require('./s3client'); + +async function generateFileList(nameWithoutExtension) { + const s3Client = createS3Client(); + const fileList = await s3Client.listFiles(); + const fileListJson = JSON.stringify(fileList, null, 2); + await s3Client.uploadData(fileListJson, nameWithoutExtension + '.json', { + contentType: 'application/json' + }); +} + +module.exports = { generateFileList };