Skip to content

Commit

Permalink
build: support multiple packages in api approval script (#28348)
Browse files Browse the repository at this point in the history
Updates the `approve-api` script to allow more than one package to be approved at the same time.
  • Loading branch information
crisbeto authored Jan 1, 2024
1 parent b9450c9 commit 0365915
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions scripts/approve-api-golden.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,36 @@
const shelljs = require('shelljs');
const chalk = require('chalk');
const path = require('path');
const searchPackageName = process.argv[2];
const {guessPackageName} = require('./util');

if (!searchPackageName) {
console.error(chalk.red('No package name has been passed in for API golden approval.'));
process.exit(1);
}

const projectDir = path.join(__dirname, '../');
const packageNameGuess = guessPackageName(searchPackageName, path.join(projectDir, 'src'));

if (!packageNameGuess.result) {
console.error(
chalk.red(
`Could not find package for API golden approval called ` +
`${chalk.yellow(searchPackageName)}. Looked in packages:\n` +
`${packageNameGuess.attempts.join('\n')}`,
),
);
if (process.argv.length < 3) {
console.error(chalk.red('No package name has been passed in for API golden approval.'));
process.exit(1);
}

const [packageName, ...entryPointTail] = packageNameGuess.result.split('/');
const suffix = entryPointTail.length ? entryPointTail.join('-') : packageName;
const apiGoldenTargetName = `//tools/public_api_guard:${packageName}/${suffix}.md_api.accept`;

// ShellJS should exit if any command fails.
shelljs.set('-e');
shelljs.cd(projectDir);
shelljs.touch(path.join(projectDir, `tools/public_api_guard/${packageName}/${suffix}.md`));
shelljs.exec(`yarn bazel run ${apiGoldenTargetName}`);

for (const searchPackageName of process.argv.slice(2)) {
const packageNameGuess = guessPackageName(searchPackageName, path.join(projectDir, 'src'));

if (!packageNameGuess.result) {
console.error(
chalk.red(
`Could not find package for API golden approval called ` +
`${chalk.yellow(searchPackageName)}. Looked in packages:\n` +
`${packageNameGuess.attempts.join('\n')}`,
),
);
process.exit(1);
}

const [packageName, ...entryPointTail] = packageNameGuess.result.split('/');
const suffix = entryPointTail.length ? entryPointTail.join('-') : packageName;
const apiGoldenTargetName = `//tools/public_api_guard:${packageName}/${suffix}.md_api.accept`;

shelljs.touch(path.join(projectDir, `tools/public_api_guard/${packageName}/${suffix}.md`));
shelljs.exec(`yarn bazel run ${apiGoldenTargetName}`);
}

0 comments on commit 0365915

Please sign in to comment.