| 'use strict' | 
| const chalk = require('chalk') | 
| const semver = require('semver') | 
| const packageConfig = require('../package.json') | 
| const shell = require('shelljs') | 
|   | 
| function exec (cmd) { | 
|   return require('child_process').execSync(cmd).toString().trim() | 
| } | 
|   | 
| const versionRequirements = [ | 
|   { | 
|     name: 'node', | 
|     currentVersion: semver.clean(process.version), | 
|     versionRequirement: packageConfig.engines.node | 
|   } | 
| ] | 
|   | 
| if (shell.which('npm')) { | 
|   versionRequirements.push({ | 
|     name: 'npm', | 
|     currentVersion: exec('npm --version'), | 
|     versionRequirement: packageConfig.engines.npm | 
|   }) | 
| } | 
|   | 
| module.exports = function () { | 
|   const warnings = [] | 
|   | 
|   for (let i = 0; i < versionRequirements.length; i++) { | 
|     const mod = versionRequirements[i] | 
|   | 
|     if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { | 
|       warnings.push(mod.name + ': ' + | 
|         chalk.red(mod.currentVersion) + ' should be ' + | 
|         chalk.green(mod.versionRequirement) | 
|       ) | 
|     } | 
|   } | 
|   | 
|   if (warnings.length) { | 
|     console.log('') | 
|     console.log(chalk.yellow('To use this template, you must update following to modules:')) | 
|     console.log() | 
|   | 
|     for (let i = 0; i < warnings.length; i++) { | 
|       const warning = warnings[i] | 
|       console.log('  ' + warning) | 
|     } | 
|   | 
|     console.log() | 
|     process.exit(1) | 
|   } | 
| } |