confirm-stable-version-numbers.js — react Source File
Architecture documentation for confirm-stable-version-numbers.js, a javascript file in the react codebase.
Entity Profile
Relationship Graph
Source Code
#!/usr/bin/env node
'use strict';
const prompt = require('prompt-promise');
const semver = require('semver');
const theme = require('../theme');
const {confirm} = require('../utils');
const run = async ({ci, skipPackages}, versionsMap) => {
const groupedVersionsMap = new Map();
// Group packages with the same source versions.
// We want these to stay lock-synced anyway.
// This will require less redundant input from the user later,
// and reduce the likelihood of human error (entering the wrong version).
versionsMap.forEach((version, packageName) => {
if (!groupedVersionsMap.has(version)) {
groupedVersionsMap.set(version, [packageName]);
} else {
groupedVersionsMap.get(version).push(packageName);
}
});
if (ci !== true) {
// Prompt user to confirm or override each version group if not running in CI.
const entries = [...groupedVersionsMap.entries()];
for (let i = 0; i < entries.length; i++) {
const [bestGuessVersion, packages] = entries[i];
const packageNames = packages.map(name => theme.package(name)).join(', ');
let version = bestGuessVersion;
if (
skipPackages.some(skipPackageName => packages.includes(skipPackageName))
) {
await confirm(
theme`{spinnerSuccess ✓} Version for ${packageNames} will remain {version ${bestGuessVersion}}`
);
} else {
const defaultVersion = bestGuessVersion
? theme.version(` (default ${bestGuessVersion})`)
: '';
version =
(await prompt(
theme`{spinnerSuccess ✓} Version for ${packageNames}${defaultVersion}: `
)) || bestGuessVersion;
prompt.done();
}
// Verify a valid version has been supplied.
try {
semver(version);
packages.forEach(packageName => {
versionsMap.set(packageName, version);
});
} catch (error) {
console.log(
theme`{spinnerError ✘} Version {version ${version}} is invalid.`
);
// Prompt again
i--;
}
}
}
};
// Run this directly because it's fast,
// and logPromise would interfere with console prompting.
module.exports = run;
Domain
Subdomains
Functions
Source
Frequently Asked Questions
What does confirm-stable-version-numbers.js do?
confirm-stable-version-numbers.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Optimization subdomain.
What functions are defined in confirm-stable-version-numbers.js?
confirm-stable-version-numbers.js defines 1 function(s): run.
Where is confirm-stable-version-numbers.js in the architecture?
confirm-stable-version-numbers.js is located at scripts/release/prepare-release-from-npm-commands/confirm-stable-version-numbers.js (domain: BabelCompiler, subdomain: Optimization, directory: scripts/release/prepare-release-from-npm-commands).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free