Home / File/ guess-stable-version-numbers.js — react Source File

guess-stable-version-numbers.js — react Source File

Architecture documentation for guess-stable-version-numbers.js, a javascript file in the react codebase.

Entity Profile

Relationship Graph

Source Code

#!/usr/bin/env node

'use strict';

const semver = require('semver');
const {execRead, logPromise} = require('../utils');

const run = async (
  {cwd, packages, skipPackages, ci, publishVersion},
  versionsMap
) => {
  const branch = await execRead('git branch | grep \\* | cut -d " " -f2', {
    cwd,
  });

  for (let i = 0; i < packages.length; i++) {
    const packageName = packages[i];

    if (ci === true) {
      if (publishVersion != null) {
        versionsMap.set(packageName, publishVersion);
      } else {
        console.error(
          'When running in CI mode, a publishVersion must be supplied'
        );
        process.exit(1);
      }
    } else {
      try {
        // In case local package JSONs are outdated,
        // guess the next version based on the latest NPM release.
        const version = await execRead(`npm show ${packageName} version`);

        if (skipPackages.includes(packageName)) {
          versionsMap.set(packageName, version);
        } else {
          const {major, minor, patch} = semver(version);

          // Guess the next version by incrementing patch.
          // The script will confirm this later.
          // By default, new releases from mains should increment the minor version number,
          // and patch releases should be done from branches.
          if (branch === 'main') {
            versionsMap.set(packageName, `${major}.${minor + 1}.0`);
          } else {
            versionsMap.set(packageName, `${major}.${minor}.${patch + 1}`);
          }
        }
      } catch (error) {
        // If the package has not yet been published,
        // we'll require a version number to be entered later.
        versionsMap.set(packageName, null);
      }
    }
  }
};

module.exports = async (params, versionsMap) => {
  return logPromise(
    run(params, versionsMap),
    'Guessing stable version numbers'
  );
};

Domain

Subdomains

Functions

Frequently Asked Questions

What does guess-stable-version-numbers.js do?
guess-stable-version-numbers.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Entrypoint subdomain.
What functions are defined in guess-stable-version-numbers.js?
guess-stable-version-numbers.js defines 2 function(s): module, run.
Where is guess-stable-version-numbers.js in the architecture?
guess-stable-version-numbers.js is located at scripts/release/prepare-release-from-npm-commands/guess-stable-version-numbers.js (domain: BabelCompiler, subdomain: Entrypoint, 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