aaden-cli 1.6.101 → 1.6.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
File without changes
File without changes
package/dist/index.js CHANGED
@@ -99,7 +99,7 @@ const {hillo} = __nccwpck_require__(6365)
99
99
  const version = (__nccwpck_require__(4147)/* .version */ .i8)
100
100
  const colors = __nccwpck_require__(3045)
101
101
  const defaultData = {
102
- frontendVersion: '', cliVersion: '', diskUsage: '', upTime: '', ngrokIsNew: false
102
+ frontendVersion: '', cliVersion: '', diskUsage: '', upTime: '', ngrokIsNew: false, hostInfo: {}
103
103
  }
104
104
 
105
105
  async function deviceEcho(data) {
@@ -110,7 +110,7 @@ async function deviceEcho(data) {
110
110
  Object.entries(data).forEach(en => {
111
111
  console.log(...en)
112
112
  })
113
- const {frontendVersion, cliVersion, diskUsage, upTime, ngrokIsNew} = Object.assign({}, defaultData, data)
113
+ const {frontendVersion, cliVersion, diskUsage, upTime, ngrokIsNew, hostInfo} = Object.assign({}, defaultData, data)
114
114
  if (parseInt(myDeviceId) === -1) {
115
115
  return
116
116
  }
@@ -131,7 +131,8 @@ async function deviceEcho(data) {
131
131
  diskUsage,
132
132
  lastUptime: upTime,
133
133
  ngrokOk: ngrokIsNew,
134
- deviceName: `${name}\n${adress1}\n${postCode} ${city} ${state}`
134
+ deviceName: `${name}\n${adress1}\n${postCode} ${city} ${state}`,
135
+ ...hostInfo
135
136
  })
136
137
  console.log('report to remote server complete')
137
138
  } catch (e) {
@@ -179,6 +180,75 @@ async function getNiceRestaurantInfo() {
179
180
 
180
181
 
181
182
 
183
+ /***/ }),
184
+
185
+ /***/ 3727:
186
+ /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
187
+
188
+ const os = __nccwpck_require__(2037)
189
+ const fs = __nccwpck_require__(7147)
190
+ const {execSync} = __nccwpck_require__(8493)
191
+
192
+ // do-log 顺带上报的宿主机信息,用来在云端看车队的系统/硬件分布。
193
+ // 每一项单独兜底:探测失败就报 null,不能让 do-log 本身挂掉。
194
+
195
+ function safe(fn, fallback = null) {
196
+ try {
197
+ const value = fn()
198
+ return value === undefined ? fallback : value
199
+ } catch (e) {
200
+ return fallback
201
+ }
202
+ }
203
+
204
+ function run(cmd) {
205
+ return execSync(cmd, {
206
+ encoding: 'utf-8', timeout: 5000, stdio: ['ignore', 'pipe', 'ignore']
207
+ }).trim()
208
+ }
209
+
210
+ function osRelease() {
211
+ const text = fs.readFileSync('/etc/os-release', 'utf-8')
212
+ const match = text.match(/^PRETTY_NAME="?([^"\n]*)"?$/m)
213
+ return match ? match[1] : null
214
+ }
215
+
216
+ function rootDisk() {
217
+ // 第二行是 "<size> <avail>",单位字节
218
+ const [size, avail] = run('df -B1 --output=size,avail /')
219
+ .split('\n')[1].trim().split(/\s+/).map(Number)
220
+ const toGb = bytes => Math.round(bytes / 1024 / 1024 / 1024)
221
+ return {diskTotalGb: toGb(size), diskAvailGb: toGb(avail)}
222
+ }
223
+
224
+ function dockerVersion() {
225
+ // 没装 docker 报空串,和"探测失败"(null) 区分开
226
+ const output = run('command -v docker >/dev/null && docker --version || true')
227
+ const match = output.match(/version ([^,\s]+)/)
228
+ return match ? match[1] : ''
229
+ }
230
+
231
+ function collectHostInfo() {
232
+ const cpus = safe(() => os.cpus(), [])
233
+ const disk = safe(rootDisk, {diskTotalGb: null, diskAvailGb: null})
234
+ return {
235
+ osRelease: safe(osRelease),
236
+ kernelVersion: safe(() => os.release()),
237
+ // WSL1 内核是 "4.4.0-19041-Microsoft",WSL2 是 "5.15.x-microsoft-standard-WSL2"
238
+ wsl: safe(() => /microsoft|wsl/i.test(os.release())),
239
+ cpuModel: cpus.length ? cpus[0].model.trim() : null,
240
+ cpuCores: cpus.length || null,
241
+ cpuArch: safe(() => os.arch()),
242
+ memTotalMb: safe(() => Math.round(os.totalmem() / 1024 / 1024)),
243
+ diskTotalGb: disk.diskTotalGb,
244
+ diskAvailGb: disk.diskAvailGb,
245
+ dockerVersion: safe(dockerVersion),
246
+ }
247
+ }
248
+
249
+ module.exports = {collectHostInfo}
250
+
251
+
182
252
  /***/ }),
183
253
 
184
254
  /***/ 6545:
@@ -18507,7 +18577,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.19.2","description":"P
18507
18577
  /***/ ((module) => {
18508
18578
 
18509
18579
  "use strict";
18510
- module.exports = {"i8":"1.6.101"};
18580
+ module.exports = {"i8":"1.6.102"};
18511
18581
 
18512
18582
  /***/ })
18513
18583
 
@@ -18590,6 +18660,7 @@ const fs = __nccwpck_require__(7147)
18590
18660
  const InnerKenTimeStampFormat = 'YYYYMMDDHHmmss'
18591
18661
  const prompts = __nccwpck_require__(9646)
18592
18662
  const {deviceEcho, logAction, getCurrentDeviceId} = __nccwpck_require__(7415)
18663
+ const {collectHostInfo} = __nccwpck_require__(3727)
18593
18664
  const GlobalDeviceId = 'notset'
18594
18665
 
18595
18666
  const {program} = __nccwpck_require__(1904)
@@ -19362,7 +19433,8 @@ async function doLog() {
19362
19433
  cliVersion: version,
19363
19434
  diskUsage: diskUsage[diskUsage.length - 1].replace('\n', ''),
19364
19435
  upTime: getUpTime(),
19365
- ngrokIsNew: ngrokNewestVersion()
19436
+ ngrokIsNew: ngrokNewestVersion(),
19437
+ hostInfo: collectHostInfo()
19366
19438
  }
19367
19439
  )
19368
19440
  console.log('finish')
package/index.js CHANGED
@@ -9,6 +9,7 @@ const fs = require('fs')
9
9
  const InnerKenTimeStampFormat = 'YYYYMMDDHHmmss'
10
10
  const prompts = require('prompts')
11
11
  const {deviceEcho, logAction, getCurrentDeviceId} = require('./modules/firebase')
12
+ const {collectHostInfo} = require('./modules/host-info')
12
13
  const GlobalDeviceId = 'notset'
13
14
 
14
15
  const {program} = require('commander')
@@ -781,7 +782,8 @@ async function doLog() {
781
782
  cliVersion: version,
782
783
  diskUsage: diskUsage[diskUsage.length - 1].replace('\n', ''),
783
784
  upTime: getUpTime(),
784
- ngrokIsNew: ngrokNewestVersion()
785
+ ngrokIsNew: ngrokNewestVersion(),
786
+ hostInfo: collectHostInfo()
785
787
  }
786
788
  )
787
789
  console.log('finish')
@@ -3,7 +3,7 @@ const {hillo} = require('hillo')
3
3
  const version = require('./../package.json').version
4
4
  const colors = require('colors')
5
5
  const defaultData = {
6
- frontendVersion: '', cliVersion: '', diskUsage: '', upTime: '', ngrokIsNew: false
6
+ frontendVersion: '', cliVersion: '', diskUsage: '', upTime: '', ngrokIsNew: false, hostInfo: {}
7
7
  }
8
8
 
9
9
  export async function deviceEcho(data) {
@@ -14,7 +14,7 @@ export async function deviceEcho(data) {
14
14
  Object.entries(data).forEach(en => {
15
15
  console.log(...en)
16
16
  })
17
- const {frontendVersion, cliVersion, diskUsage, upTime, ngrokIsNew} = Object.assign({}, defaultData, data)
17
+ const {frontendVersion, cliVersion, diskUsage, upTime, ngrokIsNew, hostInfo} = Object.assign({}, defaultData, data)
18
18
  if (parseInt(myDeviceId) === -1) {
19
19
  return
20
20
  }
@@ -35,7 +35,8 @@ export async function deviceEcho(data) {
35
35
  diskUsage,
36
36
  lastUptime: upTime,
37
37
  ngrokOk: ngrokIsNew,
38
- deviceName: `${name}\n${adress1}\n${postCode} ${city} ${state}`
38
+ deviceName: `${name}\n${adress1}\n${postCode} ${city} ${state}`,
39
+ ...hostInfo
39
40
  })
40
41
  console.log('report to remote server complete')
41
42
  } catch (e) {
@@ -0,0 +1,62 @@
1
+ const os = require('os')
2
+ const fs = require('fs')
3
+ const {execSync} = require('child_process')
4
+
5
+ // do-log 顺带上报的宿主机信息,用来在云端看车队的系统/硬件分布。
6
+ // 每一项单独兜底:探测失败就报 null,不能让 do-log 本身挂掉。
7
+
8
+ function safe(fn, fallback = null) {
9
+ try {
10
+ const value = fn()
11
+ return value === undefined ? fallback : value
12
+ } catch (e) {
13
+ return fallback
14
+ }
15
+ }
16
+
17
+ function run(cmd) {
18
+ return execSync(cmd, {
19
+ encoding: 'utf-8', timeout: 5000, stdio: ['ignore', 'pipe', 'ignore']
20
+ }).trim()
21
+ }
22
+
23
+ function osRelease() {
24
+ const text = fs.readFileSync('/etc/os-release', 'utf-8')
25
+ const match = text.match(/^PRETTY_NAME="?([^"\n]*)"?$/m)
26
+ return match ? match[1] : null
27
+ }
28
+
29
+ function rootDisk() {
30
+ // 第二行是 "<size> <avail>",单位字节
31
+ const [size, avail] = run('df -B1 --output=size,avail /')
32
+ .split('\n')[1].trim().split(/\s+/).map(Number)
33
+ const toGb = bytes => Math.round(bytes / 1024 / 1024 / 1024)
34
+ return {diskTotalGb: toGb(size), diskAvailGb: toGb(avail)}
35
+ }
36
+
37
+ function dockerVersion() {
38
+ // 没装 docker 报空串,和"探测失败"(null) 区分开
39
+ const output = run('command -v docker >/dev/null && docker --version || true')
40
+ const match = output.match(/version ([^,\s]+)/)
41
+ return match ? match[1] : ''
42
+ }
43
+
44
+ function collectHostInfo() {
45
+ const cpus = safe(() => os.cpus(), [])
46
+ const disk = safe(rootDisk, {diskTotalGb: null, diskAvailGb: null})
47
+ return {
48
+ osRelease: safe(osRelease),
49
+ kernelVersion: safe(() => os.release()),
50
+ // WSL1 内核是 "4.4.0-19041-Microsoft",WSL2 是 "5.15.x-microsoft-standard-WSL2"
51
+ wsl: safe(() => /microsoft|wsl/i.test(os.release())),
52
+ cpuModel: cpus.length ? cpus[0].model.trim() : null,
53
+ cpuCores: cpus.length || null,
54
+ cpuArch: safe(() => os.arch()),
55
+ memTotalMb: safe(() => Math.round(os.totalmem() / 1024 / 1024)),
56
+ diskTotalGb: disk.diskTotalGb,
57
+ diskAvailGb: disk.diskAvailGb,
58
+ dockerVersion: safe(dockerVersion),
59
+ }
60
+ }
61
+
62
+ module.exports = {collectHostInfo}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aaden-cli",
3
- "version": "1.6.101",
3
+ "version": "1.6.102",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
File without changes