bbc/psammead

View on GitHub
scripts/bumpPackages/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
91%
const { execSync } = require('child_process');
const { readFileSync } = require('fs');
const getPackagePath = require('../utilities/getPackagePath');
const getPackages = require('../utilities/getPackages');

const getVersion = packageDir => {
  const { version } = JSON.parse(readFileSync(`${packageDir}/package.json`));

  return version;
};

const runExec = (strategy, packageName) => {
  const packageDir = getPackagePath(packageName);

  if (packageDir) {
    const version = getVersion(packageDir);
    const isAlphaVersion = version.includes('-alpha');
    const versionTag = isAlphaVersion ? 'prerelease' : strategy;

    execSync(
      `yarn version ${versionTag}`,
      {
        cwd: packageDir,
      },
      error => {
        if (error) {
          console.log(error);
        }
      },
    );

    const newVersion = getVersion(packageDir);

    console.log(
      '✔',
      packageName,
      `version has been bumped: ${version} -> ${newVersion}`,
    );
  }
};

module.exports = ({ packageNames, strategy }) => {
  const packagePaths = getPackages().map(({ location }) => location);
  const bumpVersion = packageName => runExec(strategy, packageName);

  packageNames.map(bumpVersion);

  return [packageNames, packagePaths];
};