mirror of
https://github.com/facebook/lexical.git
synced 2025-05-17 06:59:17 +08:00
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const readline = require('readline');
|
|
const {exec} = require('child-process-promise');
|
|
const {packagesManager} = require('../shared/packagesManager');
|
|
const argv = require('minimist')(process.argv.slice(2));
|
|
|
|
const nonInteractive = argv['non-interactive'];
|
|
const dryRun = argv['dry-run'];
|
|
const channel = argv.channel;
|
|
const validChannels = new Set(['next', 'latest', 'nightly', 'dev']);
|
|
if (!validChannels.has(channel)) {
|
|
console.error(`Invalid release channel: ${channel}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
async function publish() {
|
|
const pkgs = packagesManager.getPublicPackages();
|
|
if (!nonInteractive) {
|
|
console.info(
|
|
`You're about to publish:
|
|
${pkgs.map((pkg) => pkg.getNpmName()).join('\n')}
|
|
|
|
Type "publish" to confirm.`,
|
|
);
|
|
await waitForInput();
|
|
}
|
|
|
|
for (const pkg of pkgs) {
|
|
console.info(`Publishing ${pkg.getNpmName()}...`);
|
|
if (dryRun === undefined || dryRun === 0) {
|
|
await exec(
|
|
`cd ./packages/${pkg.getDirectoryName()}/npm && npm publish --access public --tag ${channel}`,
|
|
);
|
|
console.info(`Done!`);
|
|
} else {
|
|
console.info(`Dry run - skipping publish step.`);
|
|
}
|
|
}
|
|
}
|
|
|
|
async function waitForInput() {
|
|
return new Promise((resolve) => {
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout,
|
|
terminal: false,
|
|
});
|
|
|
|
rl.on('line', function (line) {
|
|
if (line === 'publish') {
|
|
rl.close();
|
|
resolve();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
publish();
|