Source: Npm.js

const Command = require('./Command')

/**
 * @module Npm
 */

/**
 * This function installs global packages in a sync way.
 * @param {string} packages
 * @param {string} packageManager
 */
exports.installGlobalSync = function (packages, packageManager = 'npm') {
  if (packageManager === 'yarn') {
    Command.runSync(`yarn global add ${packages}`)
  } else {
    Command.runSync(`npm install -g ${packages}`)
  }
}

/**
 * This function updates global packages in a sync way.
 * @param {string} packages
 * @param {string} packageManager
 */
exports.upgradeGlobalSync = function (packages, packageManager = 'npm') {
  if (packageManager === 'yarn') {
    Command.runSync(`yarn global add ${packages}`)
  } else {
    Command.runSync(`npm update -g ${packages}`)
  }
}

/**
 * This function installs dependencies packages in a sync way.
 * @param {string} packages
 * @param {string} pathName
 * @param {string} packageManager
 */
exports.installSync = function (packages, pathName = './', packageManager = 'npm') {
  if (packageManager === 'yarn') {
    Command.runSync(`yarn install ${packages} --modules-folder ${pathName}`)
  } else {
    Command.runSync(`npm --prefix ${pathName} install --save ${packages}`)
  }
}

/**
 * This function installs development dependencies packages in a sync way.
 * @param {string} packages
 * @param {string} pathName
 * @param {string} packageManager
 */
exports.installDevSync = function (packages, pathName = './', packageManager = 'npm') {
  if (packageManager === 'yarn') {
    Command.runSync(`yarn install ${packages} --dev --modules-folder ${pathName}`)
  } else {
    Command.runSync(`npm --prefix ${pathName} install --save-dev ${packages}`)
  }
}