47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| const os = require('os');
 | |
| const macosRelease = require('macos-release');
 | |
| const winRelease = require('windows-release');
 | |
| 
 | |
| const osName = (platform, release) => {
 | |
| 	if (!platform && release) {
 | |
| 		throw new Error('You can\'t specify a `release` without specifying `platform`');
 | |
| 	}
 | |
| 
 | |
| 	platform = platform || os.platform();
 | |
| 
 | |
| 	let id;
 | |
| 
 | |
| 	if (platform === 'darwin') {
 | |
| 		if (!release && os.platform() === 'darwin') {
 | |
| 			release = os.release();
 | |
| 		}
 | |
| 
 | |
| 		const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
 | |
| 		id = release ? macosRelease(release).name : '';
 | |
| 		return prefix + (id ? ' ' + id : '');
 | |
| 	}
 | |
| 
 | |
| 	if (platform === 'linux') {
 | |
| 		if (!release && os.platform() === 'linux') {
 | |
| 			release = os.release();
 | |
| 		}
 | |
| 
 | |
| 		id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
 | |
| 		return 'Linux' + (id ? ' ' + id : '');
 | |
| 	}
 | |
| 
 | |
| 	if (platform === 'win32') {
 | |
| 		if (!release && os.platform() === 'win32') {
 | |
| 			release = os.release();
 | |
| 		}
 | |
| 
 | |
| 		id = release ? winRelease(release) : '';
 | |
| 		return 'Windows' + (id ? ' ' + id : '');
 | |
| 	}
 | |
| 
 | |
| 	return platform;
 | |
| };
 | |
| 
 | |
| module.exports = osName;
 |