12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 'use strict'
- var validate = require('aproba')
- var npm = require('../npm.js')
- module.exports = function (differences, decomposed, next) {
- validate('AAF', arguments)
- differences.forEach((action) => {
- var cmd = action[0]
- var pkg = action[1]
- switch (cmd) {
- case 'add':
- addSteps(decomposed, pkg)
- break
- case 'update':
- updateSteps(decomposed, pkg)
- break
- case 'move':
- moveSteps(decomposed, pkg)
- break
- case 'remove':
- removeSteps(decomposed, pkg)
- break
- default:
- defaultSteps(decomposed, cmd, pkg)
- }
- })
- next()
- }
- function addAction (decomposed, action, pkg) {
- if (decomposed.some((_) => _[0] === action && _[1] === pkg)) return
- decomposed.push([action, pkg])
- }
- function addSteps (decomposed, pkg) {
- if (pkg.fromBundle) {
- // make sure our source module exists to extract ourselves from
- // if we're installing our source module anyway, the duplication
- // of these steps will be elided by `addAction` automatically
- addAction(decomposed, 'fetch', pkg.fromBundle)
- addAction(decomposed, 'extract', pkg.fromBundle)
- }
- if (!pkg.fromBundle && !pkg.isLink) {
- addAction(decomposed, 'fetch', pkg)
- addAction(decomposed, 'extract', pkg)
- }
- if (!pkg.fromBundle || npm.config.get('rebuild-bundle')) {
- addAction(decomposed, 'preinstall', pkg)
- addAction(decomposed, 'build', pkg)
- addAction(decomposed, 'install', pkg)
- addAction(decomposed, 'postinstall', pkg)
- }
- if (!pkg.fromBundle || !pkg.isLink) {
- addAction(decomposed, 'finalize', pkg)
- }
- addAction(decomposed, 'refresh-package-json', pkg)
- }
- function updateSteps (decomposed, pkg) {
- removeSteps(decomposed, pkg.oldPkg)
- addSteps(decomposed, pkg)
- }
- function removeSteps (decomposed, pkg) {
- addAction(decomposed, 'unbuild', pkg)
- addAction(decomposed, 'remove', pkg)
- }
- function moveSteps (decomposed, pkg) {
- addAction(decomposed, 'move', pkg)
- addAction(decomposed, 'build', pkg)
- addAction(decomposed, 'install', pkg)
- addAction(decomposed, 'postinstall', pkg)
- addAction(decomposed, 'refresh-package-json', pkg)
- }
- function defaultSteps (decomposed, cmd, pkg) {
- addAction(decomposed, cmd, pkg)
- }
|