| 'use strict'; | |
| var os = require('os'); | |
| var semver = require('semver'); | |
| 
 | |
| var nameMap = { | |
| 	'10.0': '10', | |
| 	'6.3': '8.1', | |
| 	'6.2': '8', | |
| 	'6.1': '7', | |
| 	'6.0': 'Vista', | |
| 	'5.1': 'XP', | |
| 	'5.0': '2000', | |
| 	'4.9': 'ME', | |
| 	'4.1': '98', | |
| 	'4.0': '95' | |
| }; | |
| 
 | |
| module.exports = function (release) { | |
| 	var verRe = /\d+\.\d+/; | |
| 	var version = verRe.exec(release || os.release()); | |
| 
 | |
| 	// workaround for Windows 10 on node < 3.1.0 | |
| 	if (!release && process.platform === 'win32' && | |
| 		semver.satisfies(process.version, '>=0.12.0 <3.1.0')) { | |
| 		try { | |
| 			version = verRe.exec(String(require('child_process').execSync('ver.exe', {timeout: 2000}))); | |
| 		} catch (err) {} | |
| 	} | |
| 
 | |
| 	if (release && !version) { | |
| 		throw new Error('`release` argument doesn\'t match `n.n`'); | |
| 	} | |
| 
 | |
| 	return nameMap[(version || [])[0]]; | |
| };
 |