-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstackos.js
81 lines (73 loc) · 1.33 KB
/
stackos.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* Modules
*/
const os = require('os')
const chalk = require('chalk')
/**
* Identify OS nice name
*/
let osType = 'Unknown'
switch (os.type()) {
case 'Darwin': osType = 'MacOS'
break;
case 'Linux': osType = 'Linux'
break;
case 'Windows_NT': osType = 'Windows'
break;
}
// Module Exports
module.exports = {
/**
* Machine info
*/
info: {
os: osType,
arch: os.arch(),
cpus: {
cores: os.cpus().length,
model: os.cpus()[0].model
},
memory: {
total: os.totalmem(),
free: os.freemem()
},
dir: {
home: os.homedir(),
tmp: os.tmpdir()
}
},
/**
* Log a fancy summary of the machine
*/
log: function() {
// Get cores nicename
let cores = this.info.cpus.cores
switch (cores) {
case 2: cores = 'Dual'
break;
case 4: cores = 'Quad'
break;
case 8: cores = 'Octa'
break;
}
// Chalk strings
const out = {
os: chalk.green( this.info.os ),
arch: chalk.grey( this.info.arch ),
cores: `${cores} Core`,
cpu: chalk.grey(this.info.cpus.model),
ram: Math.floor( this.info.memory.total /1000000000 ) + 'GB RAM'
}
// Log
console.log(
os.EOL,
out.os,
out.arch,
os.EOL,
out.cores,
out.cpu,
os.EOL,
out.ram
)
}
}