1 | 'use strict';
|
2 | const os = require('os');
|
3 | const macosRelease = require('macos-release');
|
4 | const winRelease = require('windows-release');
|
5 |
|
6 | const 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 |
|
50 | module.exports = osName;
|