UNPKG

1.12 kBJavaScriptView Raw
1'use strict';
2const os = require('os');
3const macosRelease = require('macos-release');
4const winRelease = require('windows-release');
5
6const osName = (platform, release) => {
7 if (!platform && release) {
8 throw new Error('You can\'t specify a `release` without specifying `platform`');
9 }
10
11 platform = platform || os.platform();
12
13 let id;
14
15 if (platform === 'darwin') {
16 if (!release && os.platform() === 'darwin') {
17 release = os.release();
18 }
19
20 const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
21
22 try {
23 id = release ? macosRelease(release).name : '';
24 } catch {}
25
26 return prefix + (id ? ' ' + id : '');
27 }
28
29 if (platform === 'linux') {
30 if (!release && os.platform() === 'linux') {
31 release = os.release();
32 }
33
34 id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
35 return 'Linux' + (id ? ' ' + id : '');
36 }
37
38 if (platform === 'win32') {
39 if (!release && os.platform() === 'win32') {
40 release = os.release();
41 }
42
43 id = release ? winRelease(release) : '';
44 return 'Windows' + (id ? ' ' + id : '');
45 }
46
47 return platform;
48};
49
50module.exports = osName;