Skip to content

Commit

Permalink
Merge pull request #1169 from jetstreamapp/chore/improve-web-extensio…
Browse files Browse the repository at this point in the history
…n-release-command

Improve web-extension release command
  • Loading branch information
paustint authored Feb 8, 2025
2 parents 644aad2 + a5daa33 commit c471b8c
Show file tree
Hide file tree
Showing 4 changed files with 244 additions and 20 deletions.
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,10 @@
"build:web-extension": "nx run jetstream-web-extension:build",
"build:web-extension:dev": "nx run jetstream-web-extension:build --configuration=development",
"build:web-extension:staging": "nx run jetstream-web-extension:build --configuration=staging",
"build:web-extension:clean": "rm -rf dist/apps/jetstream-web-extension",
"build:web-extension:zip": "yarn build:web-extension:clean && cd dist/apps/jetstream-web-extension && zip -q -o -r -9 ../../jetstream-web-extension/web-ext-${version}.zip *",
"build:web-extension:status": "node scripts/publish-web-extension.mjs --check-status",
"build:web-extension:upload": "node scripts/publish-web-extension.mjs --upload -f dist/jetstream-web-extension/web-ext-${version}.zip",
"build:web-extension:publish": "node scripts/publish-web-extension.mjs --upload -f dist/jetstream-web-extension/web-ext-${version}.zip",
"build:web-extension:zip": "node scripts/web-extension-zip.mjs --version=${version}",
"build:web-extension:status": "node scripts/web-extension-publish.mjs --check-status",
"build:web-extension:upload": "node scripts/web-extension-publish.mjs --upload -f dist/web-extension-build/web-ext-${version}.zip",
"build:web-extension:publish": "node scripts/web-extension-publish.mjs --publish -f dist/web-extension-build/web-ext-${version}.zip",
"email:dev": "email dev --dir ./libs/email/src/lib/email-templates --port 3003",
"email:build": "email build --dir ./libs/email/src/lib/email-templates --packageManager yarn",
"scripts:replace-deps": "node ./scripts/replace-package-deps.mjs",
Expand Down Expand Up @@ -151,6 +150,7 @@
"@testing-library/react": "15.0.6",
"@testing-library/user-event": "^13.0.7",
"@types/amplitude-js": "^8.16.5",
"@types/archiver": "^6.0.3",
"@types/bcrypt": "^5.0.2",
"@types/chrome": "^0.0.268",
"@types/connect-pg-simple": "^4.2.2",
Expand Down Expand Up @@ -187,6 +187,7 @@
"@vitejs/plugin-react": "4.2.1",
"@vitest/coverage-v8": "1.5.2",
"@vitest/ui": "1.5.2",
"archiver": "^7.0.1",
"auth0": "^4.10.0",
"autoprefixer": "10.4.13",
"babel-jest": "29.7.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,19 @@ const argv = minimist(process.argv.slice(2), {

if (argv.help) {
console.log(`
Usage: publish-web-extension [options]
Usage: web-extension-publish [options]
To check extension status:
node scripts/publish-web-extension.mjs --status
node scripts/web-extension-publish.mjs --status
To upload an extension:
node scripts/publish-web-extension.mjs --upload -f dist/jetstream-web-extension-v.0.0.1.zip
node scripts/web-extension-publish.mjs --upload -f dist/jetstream-web-extension-v.0.0.1.zip
To upload and publish an extension:
node scripts/publish-web-extension.mjs --upload --publish -f dist/jetstream-web-extension-v.0.0.1.zip
node scripts/web-extension-publish.mjs --upload --publish -f dist/jetstream-web-extension-v.0.0.1.zip
To publish a previously uploaded extension:
node scripts/publish-web-extension.mjs --publish
node scripts/web-extension-publish.mjs --publish
Options:
-u, --upload Upload extension to the web store (default=true)
Expand Down
78 changes: 78 additions & 0 deletions scripts/web-extension-zip.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/usr/bin/env node
import archiver from 'archiver';
import 'dotenv/config';
import minimist from 'minimist';
import { join } from 'path';
import { $, chalk, fs } from 'zx'; // https://github.com/google/zx

const argv = minimist(process.argv.slice(2), {
boolean: ['help'],
string: ['version'],
default: {
help: false,
},
alias: {
h: 'help',
v: 'version',
},
});

if (argv.help) {
console.log(`
Usage: web-extension-zip [options]
To build new extension zip:
node scripts/web-extension-zip.mjs --version <version>
Options:
-c, --version version number to use for zip file
-h, --help display help for command
`);
process.exit(0);
}

const version = argv.version;
if (!version) {
console.error(chalk.red('--version must be provided'));
process.exit(1);
}

const ZIP_INPUT_DIR = join(process.cwd(), 'dist/apps/jetstream-web-extension');
const OUTPUT_DIR = join(process.cwd(), 'dist/web-extension-build');
const OUTPUT_FILENAME = `web-ext-${version}.zip`;
const OUTPUT_PATH = join(OUTPUT_DIR, OUTPUT_FILENAME);

async function main() {
console.log(chalk.blue(`🔥 Removing existing output directory:`), OUTPUT_DIR);

$.verbose = false;

await $`rm -rf dist/web-extension-build`;
await $`mkdir dist/web-extension-build`;

console.log(chalk.blue(`💾 Saving output file to:`), OUTPUT_PATH);

const output = fs.createWriteStream(OUTPUT_PATH);
const archive = archiver('zip', {
zlib: { level: 9 },
});

output.on('close', function () {
console.log(chalk.green(`✅ Zip file created successfully. ${chalk.yellow(`${Math.floor(archive.pointer() / 1024 / 10) / 100} MB`)}`));
});

archive.on('error', (err) => {
throw err;
});

archive.pipe(output);
archive.directory(ZIP_INPUT_DIR, false);
await archive.finalize();

if (!fs.existsSync(OUTPUT_PATH)) {
console.error(chalk.red('❌ Failed to create zip file'));
process.exit(1);
}
}

main();
Loading

0 comments on commit c471b8c

Please sign in to comment.