var chalk = require('chalk');
var semver = require('semver');
var packageConfig = require('../package.json');

function exec(cmd) {
    return require('child_process').execSync(cmd).toString().trim();
}

var versionRequirements = [{
        name: 'node',
        currentVersion: semver.clean(process.version),
        versionRequirement: packageConfig.engines.node
    },
    {
        name: 'npm',
        currentVersion: exec('npm --version'),
        versionRequirement: packageConfig.engines.npm
    }
]

module.exports = function() {
    var warnings = [];
    for (var i = 0; i < versionRequirements.length; i++) {
        var mod = versionRequirements[i];
        if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
            warnings.push(mod.name + ': ' +
                chalk.red(mod.currentVersion) + ' 需要 ' +
                chalk.green(mod.versionRequirement)
            );
        }
    }

    if (warnings.length) {
        console.log('');
        console.log(chalk.yellow('环境错误:'));
        console.log();
        for (var i = 0; i < warnings.length; i++) {
            var warning = warnings[i];
            console.log(warning)
        }
        console.log();
        process.exit(1);
    }
};