From 0d247b38c86aa4ad1b4a5f64fa296191331fee38 Mon Sep 17 00:00:00 2001 From: Mirko Budszuhn Date: Wed, 12 Jun 2024 14:07:59 +0200 Subject: [PATCH] Update deploy script --- scripts/deploy-assets.mjs | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/scripts/deploy-assets.mjs b/scripts/deploy-assets.mjs index 06622f7..53feb4b 100644 --- a/scripts/deploy-assets.mjs +++ b/scripts/deploy-assets.mjs @@ -1,10 +1,18 @@ -import { readFile } from 'node:fs/promises'; +import chalk from 'chalk'; import { exec } from 'child_process'; +import { readFile } from 'node:fs/promises'; import { promisify } from 'util'; -import chalk from 'chalk'; const execAsync = promisify(exec); +const execAsyncWithErrors = async (command, options) => { + try { + const { stdout, stderr } = await execAsync(command, options); + } catch (error) { + throw error; + } +}; + async function syncToS3() { try { // Load package.json @@ -38,10 +46,27 @@ async function syncToS3() { `NOTE: Syncing might fail when aws client ist not installed nor configured in silence!` )}` ); + // cwd based on package name: + const cwd = path; + // npm packing: + await execAsyncWithErrors( + `rm -rf ./${path}/tmp && mkdir -p ./${path}/tmp` + ); + // we pack the package to also publish the package.tgz to s3 + const packCommand = `npm pack . --pack-destination ./tmp`; + console.log(`Packing ${packageName} using ${packCommand}...`); + await execAsyncWithErrors(packCommand, { cwd }); + // rename the .tgz from e.g imgly-background-removal-data-1.5.3.tgz to package.tgz to have a stable name + await execAsyncWithErrors('mv ./tmp/*.tgz ./tmp/package.tgz', { cwd }); + // npm extract: + const extractCommand = `tar -xvzf ./tmp/* -C ./tmp --strip-components=1`; + console.log(`Extracting ${packageName} using ${extractCommand}...`); + await execAsyncWithErrors(extractCommand, { cwd }); + // sync to s3: console.log(`Syncing ${packageName} to S3...`); - const command = `aws s3 sync --endpoint-url ${endpointUrl} ./${path}/dist s3://${bucketName}/${packageName}/${version}/dist`; + const command = `aws s3 sync --endpoint-url ${endpointUrl} ./${path}/tmp s3://${bucketName}/${packageName}/${version}`; console.log(`Command: ${command}`); - return await execAsync(command); + return await execAsyncWithErrors(command); }) );