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.
- package/AadenDeploy/files/getFile.sh +0 -0
- package/AadenDeploy/ngrok/ngrok +0 -0
- package/AadenDeploy/update.sh +0 -0
- package/dist/index.js +77 -5
- package/index.js +3 -1
- package/modules/firebase.js +4 -3
- package/modules/host-info.js +62 -0
- package/package.json +1 -1
- package/scripts/fleet-rollout-status.py +0 -0
|
File without changes
|
package/AadenDeploy/ngrok/ngrok
CHANGED
|
File without changes
|
package/AadenDeploy/update.sh
CHANGED
|
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.
|
|
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')
|
package/modules/firebase.js
CHANGED
|
@@ -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
|
File without changes
|