robot-resources 1.9.3 → 1.9.4
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/lib/wizard.js +14 -1
- package/package.json +1 -1
package/lib/wizard.js
CHANGED
|
@@ -19,12 +19,25 @@ import { header, step, success, warn, error, info, blank, summary } from './ui.j
|
|
|
19
19
|
*/
|
|
20
20
|
function classifyRouterError(err) {
|
|
21
21
|
const msg = (err?.message || String(err)).toLowerCase();
|
|
22
|
+
const stderr = (err?.stderr || '').toString().toLowerCase();
|
|
23
|
+
const combined = msg + '\n' + stderr;
|
|
22
24
|
let reason = 'unknown';
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
// Order matters — check specific patterns before generic ones.
|
|
27
|
+
// python_venv_missing is specific (Debian/Ubuntu ships python3 without
|
|
28
|
+
// the venv module) — previously showed up as 'unknown' in telemetry.
|
|
29
|
+
if (/python venv module|ensurepip.*not (installed|available)|python\d*-venv/.test(combined)) {
|
|
30
|
+
reason = 'python_venv_missing';
|
|
31
|
+
} else if (msg.includes('python 3.10+') || msg.includes('python is required')) {
|
|
25
32
|
reason = 'python_not_found';
|
|
26
33
|
} else if (err?.code === 'ENOENT' || msg.includes('enoent')) {
|
|
27
34
|
reason = 'spawn_enoent';
|
|
35
|
+
} else if (/failed building wheel|metadata-generation-failed|cargo|rust compiler|subprocess-exited-with-error/.test(combined)) {
|
|
36
|
+
// Wheel-build failures: pip tried to compile a native dep from source
|
|
37
|
+
// because no binary wheel was available for the user's platform. This
|
|
38
|
+
// was silently categorized as 'pip_install_failed' before — surfacing
|
|
39
|
+
// it separately lets us see affected packages in aggregate.
|
|
40
|
+
reason = 'wheel_build_failed';
|
|
28
41
|
} else if (msg.includes('timeout') || msg.includes('timed out') || err?.code === 'ETIMEDOUT') {
|
|
29
42
|
reason = 'timeout';
|
|
30
43
|
} else if (msg.includes('exited with code') || msg.includes('pip install')) {
|