xonecode 0.17.0 → 0.17.1
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/apps/web/dist/assets/{index-CnskHXof.js → index-BRVuyPBf.js} +56 -56
- package/apps/web/dist/assets/{php-8TR3jUGL.js → php-B5LpMCn-.js} +1 -1
- package/apps/web/dist/assets/{ruby-IynpAZS-.js → ruby-Clm-qfwM.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/dist/agent/config/settingsEnDisco.js +7 -3
- package/dist/agent/config/settingsEnDisco.js.map +1 -1
- package/dist/agent/grafo/validacionXone.js +8 -1
- package/dist/agent/grafo/validacionXone.js.map +1 -1
- package/dist/core/validacionDeEscritura.js +36 -0
- package/dist/core/validacionDeEscritura.js.map +1 -1
- package/package.json +1 -1
- package/skills/xone-hotswap/lib/dispositivo.mjs +14 -1
- package/skills/xone-hotswap/scripts/xone-arrancar-android +3 -2
- package/skills/xone-hotswap/scripts/xone-arrancar-ios +2 -2
- package/skills/xone-hotswap/scripts/xone-captura-android +4 -4
- package/skills/xone-hotswap/scripts/xone-desplegar-android +6 -6
- package/skills/xone-hotswap/scripts/xone-log-android +2 -2
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +6 -6
package/apps/web/dist/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<!-- El icono oficial, servido por Vite desde `iconos/`. Es el mismo fichero que la
|
|
8
8
|
marca de la barra superior: dos copias del logo acaban siendo dos logos. -->
|
|
9
9
|
<link rel="icon" type="image/png" href="./iconos/xonecode.png" />
|
|
10
|
-
<script type="module" crossorigin src="./assets/index-
|
|
10
|
+
<script type="module" crossorigin src="./assets/index-BRVuyPBf.js"></script>
|
|
11
11
|
<link rel="stylesheet" crossorigin href="./assets/index-DLfF2uEK.css">
|
|
12
12
|
</head>
|
|
13
13
|
<!-- Sin el atributo aquí: el oscuro es SOLO del splash (el registro de entorno y
|
|
@@ -119,8 +119,8 @@ export function guardarEntorno(casa, entorno) {
|
|
|
119
119
|
/**
|
|
120
120
|
* Guarda qué destinos se miran, sin tocar nada más del fichero.
|
|
121
121
|
*
|
|
122
|
-
* Se escribe el objeto ENTERO y no una fusión campo a campo: son cuatro interruptores
|
|
123
|
-
* la ventana manda juntos, y fusionar dejaría vivo un `ios: false` de una versión anterior
|
|
122
|
+
* Se escribe el objeto ENTERO y no una fusión campo a campo: son cuatro interruptores (y las
|
|
123
|
+
* dos rutas) que la ventana manda juntos, y fusionar dejaría vivo un `ios: false` de una versión anterior
|
|
124
124
|
* que la persona acaba de apagar en la interfaz sin saber que seguía ahí. Un objeto sin
|
|
125
125
|
* ningún campo se guarda como ausencia —`{}` y «no lo he dicho» significan lo mismo: mirar
|
|
126
126
|
* todo— para no dejar basura en el fichero.
|
|
@@ -128,7 +128,11 @@ export function guardarEntorno(casa, entorno) {
|
|
|
128
128
|
export function guardarDispositivos(casa, ajustes) {
|
|
129
129
|
const ruta = rutaSettings(casa ?? homedir());
|
|
130
130
|
const crudo = leerCrudoOAbortar(ruta);
|
|
131
|
-
|
|
131
|
+
// Booleanos para los destinos y TEXTO no vacío para las dos rutas: filtrar solo booleanos
|
|
132
|
+
// tiraba `rutaAdb`/`rutaEmulator` al escribir y la ruta personalizada nunca se guardaba.
|
|
133
|
+
const limpio = Object.fromEntries(Object.entries(ajustes).filter(([k, v]) => k === "rutaAdb" || k === "rutaEmulator"
|
|
134
|
+
? typeof v === "string" && v.trim() !== ""
|
|
135
|
+
: typeof v === "boolean"));
|
|
132
136
|
const fusionado = Object.keys(limpio).length === 0
|
|
133
137
|
? Object.fromEntries(Object.entries(crudo).filter(([k]) => k !== "dispositivos"))
|
|
134
138
|
: { ...crudo, dispositivos: limpio };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settingsEnDisco.js","sourceRoot":"","sources":["../../../src/agent/config/settingsEnDisco.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settingsEnDisco.js","sourceRoot":"","sources":["../../../src/agent/config/settingsEnDisco.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAIL,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,wFAAwF;AACxF,MAAM,OAAO,oBAAqB,SAAQ,KAAK;CAAG;AAElD,uGAAuG;AACvG,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,EAAE;IACnD,OAAO,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,OAAO,EAAE;IACrD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzE,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC1B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,+CAA+C,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;SACjG,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;QACpF,MAAM,IAAI,oBAAoB,CAC5B,IAAI,IAAI,qEAAqE,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,oBAAoB,CAC5B,IAAI,IAAI,iFAAiF,CAC1F,CAAC;IACJ,CAAC;IACD,iFAAiF;IACjF,yFAAyF;IACzF,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,SAAiB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,uFAAuF;IACvF,yCAAyC;IACzC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,UAAU,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,UAA8B,CAAC;IACnC,IAAI,CAAC;QACH,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,UAAU,GAAG,SAAS,CAAC;QACvB,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,SAAS,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,kFAAkF;YACpF,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,IAAwB,EAAE,OAAgB;IACvE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAC7C,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;IACpE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAwB,EAAE,OAA8B;IAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,0FAA0F;IAC1F,yFAAyF;IACzF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,cAAc;QACrC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAC3B,CACF,CAAC;IACF,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;QACjF,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACzC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAwB,EAAE,YAAoB;IACxF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAC9D,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwB,EAAE,OAAgB;IACvE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5E,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACjC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,IAAwB,EAAE,IAAY;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAChD,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED;oFACoF;AACpF,MAAM,UAAU,eAAe;IAC7B,OAAO,cAAc,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAwB,EAAE,EAAU;IAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe;IAC3D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACxH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,OAAe;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAAe,EACf,QAAgB;IAEhB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,cAAc,CAAC,QAAQ,EAAE,oBAAoB,CAAC,aAAa,UAAU,EAAE,EAAE,CAAC,CAAC;IACrH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* con un *top-level await* que revienta bajo `tsx`, o sea bajo el lanzador de desarrollo.
|
|
13
13
|
*/
|
|
14
14
|
import { anotarError, anotarPaso } from "../../core/trazaDeErrores.js";
|
|
15
|
-
import { motivoDelRechazo, veredictoDeEscritura, } from "../../core/validacionDeEscritura.js";
|
|
15
|
+
import { hallazgoDeCadenaJson, motivoDelRechazo, veredictoDeEscritura, } from "../../core/validacionDeEscritura.js";
|
|
16
16
|
/**
|
|
17
17
|
* El validador de PRODUCCIÓN, sobre `xone-linter`.
|
|
18
18
|
*
|
|
@@ -171,6 +171,13 @@ export function sinContenidoInvalido(backend, validar) {
|
|
|
171
171
|
}
|
|
172
172
|
if (nuevo === undefined)
|
|
173
173
|
return seguir();
|
|
174
|
+
// Antes que el linter y sin comparar con lo de antes: no depende de que el parser pueda
|
|
175
|
+
// mirar, y un fichero ya envuelto tampoco puede seguir envuelto.
|
|
176
|
+
const envuelto = hallazgoDeCadenaJson(ruta, nuevo);
|
|
177
|
+
if (envuelto !== undefined) {
|
|
178
|
+
anotarError("sinContenidoInvalido#rechazo", new Error(`${String(prop)} sobre «${ruta}» rechazada: 1 hallazgo(s) [${envuelto.codigo}]`));
|
|
179
|
+
return { error: motivoDelRechazo(ruta, [envuelto]) };
|
|
180
|
+
}
|
|
174
181
|
const despues = await validar(ruta, nuevo);
|
|
175
182
|
// No se pudo mirar: se deja escribir. Un fallo del entorno no es un veredicto.
|
|
176
183
|
if (despues === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validacionXone.js","sourceRoot":"","sources":["../../../src/agent/grafo/validacionXone.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validacionXone.js","sourceRoot":"","sources":["../../../src/agent/grafo/validacionXone.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,42 @@ export function veredictoDeEscritura(antes, despues) {
|
|
|
64
64
|
}
|
|
65
65
|
return { introducidos, preexistentes };
|
|
66
66
|
}
|
|
67
|
+
/** El código del hallazgo de un fichero XOne guardado como cadena JSON (ver `hallazgoDeCadenaJson`). */
|
|
68
|
+
export const CODIGO_CADENA_JSON = "contenido-como-cadena-json";
|
|
69
|
+
/**
|
|
70
|
+
* Un `.xne`/`.xml` cuyo contenido es una CADENA JSON con el XML escapado dentro.
|
|
71
|
+
*
|
|
72
|
+
* Medido en un proyecto real (IXCODE-16): el primer byte era `"` y el XML iba escapado, en
|
|
73
|
+
* `app.xml` y en los `.xne`. El parser del framework ve esa comilla como texto y aborta la carga
|
|
74
|
+
* de `app.xml`, así que la app no arranca y la pantalla se queda en blanco. Es un fallo del
|
|
75
|
+
* CONTENIDO que no depende de lo que hubiera antes —por eso no pasa por la comparación de
|
|
76
|
+
* huellas: un fichero así no tiene ninguna forma legítima—, y que el linter puede no ver.
|
|
77
|
+
*
|
|
78
|
+
* Solo se reconoce lo inequívoco: comilla al principio y al final, que parsee como JSON a una
|
|
79
|
+
* cadena, y que esa cadena empiece por `<`. Un XML válido nunca empieza por comilla.
|
|
80
|
+
*/
|
|
81
|
+
export function hallazgoDeCadenaJson(ruta, contenido) {
|
|
82
|
+
if (!/\.(xne|xml)$/i.test(ruta))
|
|
83
|
+
return undefined;
|
|
84
|
+
const recortado = contenido.trim();
|
|
85
|
+
if (recortado.length < 2 || !recortado.startsWith('"') || !recortado.endsWith('"'))
|
|
86
|
+
return undefined;
|
|
87
|
+
let desenvuelto;
|
|
88
|
+
try {
|
|
89
|
+
desenvuelto = JSON.parse(recortado);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (typeof desenvuelto !== "string" || !desenvuelto.trimStart().startsWith("<"))
|
|
95
|
+
return undefined;
|
|
96
|
+
return {
|
|
97
|
+
codigo: CODIGO_CADENA_JSON,
|
|
98
|
+
mensaje: "el contenido es una CADENA JSON (empieza por «\"» y lleva el XML escapado) y XOne no arranca así. " +
|
|
99
|
+
"Escribe el XML tal cual, sin comillas envolventes ni \\\" \\n escapados.",
|
|
100
|
+
linea: 1,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
67
103
|
/**
|
|
68
104
|
* Cuántos hallazgos se enseñan en el rechazo.
|
|
69
105
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validacionDeEscritura.js","sourceRoot":"","sources":["../../src/core/validacionDeEscritura.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAUH;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,CAAsB;IACpC,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;AACxC,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAwC,EACxC,OAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;QAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/F,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,aAAa,GAA0B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACnC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,YAAmC;IAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG;QACb,kBAAkB,IAAI,6BAA6B,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,YAAY,uBAAuB,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QAC/L,qEAAqE;QACrE,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,oDAAoD,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"validacionDeEscritura.js","sourceRoot":"","sources":["../../src/core/validacionDeEscritura.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -37,6 +37,19 @@ export function dispositivoDeLaSesion(entorno = process.env) {
|
|
|
37
37
|
* poder probarla sin adb delante. Solo cuentan las líneas en estado `device`: uno `offline` o
|
|
38
38
|
* `unauthorized` no se puede usar.
|
|
39
39
|
*/
|
|
40
|
+
/** El `adb` a ejecutar: `XONECODE_ADB` (lo pone el harness) o el del PATH. */
|
|
41
|
+
export function rutaDeAdb(entorno = process.env) {
|
|
42
|
+
return entorno.XONECODE_ADB || "adb";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** El `node` que YA corre este script: no depende de que esté en el PATH (en Windows a menudo no lo está). */
|
|
46
|
+
export const NODE = process.execPath;
|
|
47
|
+
|
|
48
|
+
/** Espera síncrona sin lanzar procesos: `sleep` no existe en Windows. */
|
|
49
|
+
export function dormir(segundos) {
|
|
50
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, Number(segundos) * 1000);
|
|
51
|
+
}
|
|
52
|
+
|
|
40
53
|
export function preferirEmulador(salidaDeAdbDevices) {
|
|
41
54
|
const listos = String(salidaDeAdbDevices)
|
|
42
55
|
.split("\n")
|
|
@@ -48,7 +61,7 @@ export function preferirEmulador(salidaDeAdbDevices) {
|
|
|
48
61
|
}
|
|
49
62
|
|
|
50
63
|
/** El serial de Android: `--serie`, el de la sesión o un emulador. Y dice de dónde salió. */
|
|
51
|
-
export function serieAndroid(explicita, { entorno = process.env, adb =
|
|
64
|
+
export function serieAndroid(explicita, { entorno = process.env, adb = rutaDeAdb(entorno) } = {}) {
|
|
52
65
|
if (explicita) return { serie: explicita, porque: "pasado con --serie" };
|
|
53
66
|
const elegido = dispositivoDeLaSesion(entorno);
|
|
54
67
|
if (elegido?.plataforma === "android") return { serie: elegido.id, porque: `el de la sesión: ${elegido.nombre}` };
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
* xone-arrancar-android --lista qué AVDs hay, sin arrancar nada
|
|
35
35
|
*/
|
|
36
36
|
import { execFileSync, spawn } from "node:child_process";
|
|
37
|
+
import { dormir } from "../lib/dispositivo.mjs";
|
|
37
38
|
|
|
38
39
|
/** Lo que tarda un arranque en frío de un AVD con `google_apis`, con margen. Por debajo del
|
|
39
40
|
* tope de reloj de UN comando del harness (600 s), que es quien mataría al script entero. */
|
|
@@ -177,7 +178,7 @@ if (yaEstaba === undefined) {
|
|
|
177
178
|
fallo = e.message;
|
|
178
179
|
});
|
|
179
180
|
hijo.unref();
|
|
180
|
-
|
|
181
|
+
dormir(ESPERA_S);
|
|
181
182
|
if (fallo !== undefined) {
|
|
182
183
|
console.error(`no pude lanzar el emulador: ${fallo}`);
|
|
183
184
|
process.exit(1);
|
|
@@ -193,7 +194,7 @@ while (Date.now() - t0 < TOPE_MS) {
|
|
|
193
194
|
console.log("Siguiente: xone-desplegar-android");
|
|
194
195
|
process.exit(0);
|
|
195
196
|
}
|
|
196
|
-
|
|
197
|
+
dormir(ESPERA_S);
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
// El proceso sigue vivo: se dice lo que se SABE, que es que todavía no está listo.
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* deja de responder justo después de abrir un menú, es eso y es un defecto AJENO al hotswap.
|
|
26
26
|
*/
|
|
27
27
|
import { execFileSync } from "node:child_process";
|
|
28
|
-
import { udidIos } from "../lib/dispositivo.mjs";
|
|
28
|
+
import { udidIos, NODE } from "../lib/dispositivo.mjs";
|
|
29
29
|
|
|
30
30
|
const HOST = "es.xone.studioapp.swift";
|
|
31
31
|
|
|
@@ -79,7 +79,7 @@ if (app === undefined) {
|
|
|
79
79
|
console.log(`2/2 lanzando ${app}`);
|
|
80
80
|
const cliente = new URL("hotswap.mjs", import.meta.url).pathname;
|
|
81
81
|
console.log(
|
|
82
|
-
execFileSync(
|
|
82
|
+
execFileSync(NODE, [cliente, JSON.stringify({ command: "launchApplication", appName: app })], {
|
|
83
83
|
encoding: "utf8",
|
|
84
84
|
env: { ...process.env, HOTSWAP_URL: "wss://localhost:8443/hotswap" },
|
|
85
85
|
}).trim(),
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import { execFileSync } from "node:child_process";
|
|
26
26
|
import { writeFileSync } from "node:fs";
|
|
27
27
|
import { join, basename } from "node:path";
|
|
28
|
-
import { serieAndroid } from "../lib/dispositivo.mjs";
|
|
28
|
+
import { serieAndroid, rutaDeAdb, NODE } from "../lib/dispositivo.mjs";
|
|
29
29
|
|
|
30
30
|
const args = process.argv.slice(2);
|
|
31
31
|
if (args.includes("--help") || args.includes("-h")) {
|
|
@@ -85,7 +85,7 @@ if (nombre === "" || nombre === "." || nombre === "..") {
|
|
|
85
85
|
let bytes;
|
|
86
86
|
try {
|
|
87
87
|
// `exec-out` y no `shell`: `shell` traduce los finales de línea y corrompe el PNG.
|
|
88
|
-
bytes = execFileSync(
|
|
88
|
+
bytes = execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), "exec-out", "screencap", "-p"], {
|
|
89
89
|
maxBuffer: 256 * 1024 * 1024,
|
|
90
90
|
});
|
|
91
91
|
} catch (error) {
|
|
@@ -121,7 +121,7 @@ if (!args.includes("--igualmente")) {
|
|
|
121
121
|
let roto;
|
|
122
122
|
try {
|
|
123
123
|
const enElAparato = (...partes) =>
|
|
124
|
-
execFileSync(
|
|
124
|
+
execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), ...partes], {
|
|
125
125
|
encoding: "utf8",
|
|
126
126
|
maxBuffer: 64 * 1024 * 1024,
|
|
127
127
|
});
|
|
@@ -153,7 +153,7 @@ if (!args.includes("--igualmente")) {
|
|
|
153
153
|
if (roto === undefined) {
|
|
154
154
|
try {
|
|
155
155
|
const cliente = join(import.meta.dirname, "xone-hotswap");
|
|
156
|
-
const donde = execFileSync(
|
|
156
|
+
const donde = execFileSync(NODE, [cliente, "screen"], { encoding: "utf8" }).trim();
|
|
157
157
|
const m = /\\"collection\\":\\"([^\\"]+)/.exec(donde);
|
|
158
158
|
if (m) {
|
|
159
159
|
console.log(`(el log no da error y la app responde en «${m[1]}»: si buscabas un fallo,`);
|
|
@@ -48,7 +48,7 @@ import { execFileSync } from "node:child_process";
|
|
|
48
48
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
49
49
|
import { basename, join, relative, sep } from "node:path";
|
|
50
50
|
import { deflateRawSync } from "node:zlib";
|
|
51
|
-
import { serieAndroid } from "../lib/dispositivo.mjs";
|
|
51
|
+
import { serieAndroid, rutaDeAdb, NODE, dormir } from "../lib/dispositivo.mjs";
|
|
52
52
|
|
|
53
53
|
const PAQUETE = "com.xone.android.framework";
|
|
54
54
|
const ACTIVIDAD = `${PAQUETE}/com.xone.android.hotswap.activities.SetupActivity`;
|
|
@@ -175,7 +175,7 @@ Studio o \`xone-db-tools\`, no esto, y sin ella la app muere aunque el verificad
|
|
|
175
175
|
const { serie, porque } = serieAndroid(opcion("serie"));
|
|
176
176
|
if (serie !== undefined) process.stderr.write(`dispositivo: ${serie} (${porque})\n`);
|
|
177
177
|
const adb = (...partes) =>
|
|
178
|
-
execFileSync(
|
|
178
|
+
execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), ...partes], { encoding: "utf8" });
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
181
|
* Igual, pero sin dejar hablar al hijo por stderr.
|
|
@@ -185,7 +185,7 @@ const adb = (...partes) =>
|
|
|
185
185
|
* pantallas de ruido que acaban en el contexto del agente y le hacen creer que algo se rompió.
|
|
186
186
|
*/
|
|
187
187
|
const adbCallado = (...partes) =>
|
|
188
|
-
execFileSync(
|
|
188
|
+
execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), ...partes], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
|
|
189
189
|
|
|
190
190
|
/**
|
|
191
191
|
* Cómo se llama la app, en tres saltos y con el último declarado.
|
|
@@ -330,7 +330,7 @@ const app = nombreDeLaApp();
|
|
|
330
330
|
function exigirAparato() {
|
|
331
331
|
let lista = "";
|
|
332
332
|
try {
|
|
333
|
-
lista = execFileSync(
|
|
333
|
+
lista = execFileSync(rutaDeAdb(), ["devices"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
|
|
334
334
|
} catch (error) {
|
|
335
335
|
console.error(`no pude hablar con adb: ${error.message.split("\n")[0]}`);
|
|
336
336
|
process.exit(1);
|
|
@@ -400,9 +400,9 @@ function exigirAparato() {
|
|
|
400
400
|
const pares = Object.entries(resto).map(([k, v]) =>
|
|
401
401
|
`${k}=${typeof v === "object" && v !== null ? JSON.stringify(v) : String(v)}`,
|
|
402
402
|
);
|
|
403
|
-
return execFileSync(
|
|
403
|
+
return execFileSync(NODE, [cliente, command, ...pares], { encoding: "utf8" }).trim();
|
|
404
404
|
};
|
|
405
|
-
const esperar = (segundos) =>
|
|
405
|
+
const esperar = (segundos) => dormir(segundos);
|
|
406
406
|
|
|
407
407
|
/**
|
|
408
408
|
* **El canal no está en pie justo después del reinicio**, y esto se descubrió corriéndolo:
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* xone-log-android --serie emulator-5554
|
|
22
22
|
*/
|
|
23
23
|
import { execFileSync } from "node:child_process";
|
|
24
|
-
import { serieAndroid } from "../lib/dispositivo.mjs";
|
|
24
|
+
import { serieAndroid, rutaDeAdb } from "../lib/dispositivo.mjs";
|
|
25
25
|
|
|
26
26
|
const PAQUETE = "com.xone.android.framework";
|
|
27
27
|
|
|
@@ -49,7 +49,7 @@ const opcion = (nombre) => {
|
|
|
49
49
|
const { serie, porque } = serieAndroid(opcion("serie"));
|
|
50
50
|
if (serie !== undefined) process.stderr.write(`dispositivo: ${serie} (${porque})\n`);
|
|
51
51
|
const adb = (...partes) =>
|
|
52
|
-
execFileSync(
|
|
52
|
+
execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), ...partes], {
|
|
53
53
|
encoding: "utf8",
|
|
54
54
|
maxBuffer: 64 * 1024 * 1024,
|
|
55
55
|
});
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { execFileSync } from "node:child_process";
|
|
23
23
|
import { join } from "node:path";
|
|
24
|
-
import { serieAndroid } from "../lib/dispositivo.mjs";
|
|
24
|
+
import { serieAndroid, rutaDeAdb, NODE, dormir } from "../lib/dispositivo.mjs";
|
|
25
25
|
|
|
26
26
|
const PAQUETE = "com.xone.android.framework";
|
|
27
27
|
const ACTIVIDAD = `${PAQUETE}/com.xone.android.hotswap.activities.SetupActivity`;
|
|
@@ -49,11 +49,11 @@ const opcion = (nombre) => {
|
|
|
49
49
|
const { serie, porque } = serieAndroid(opcion("serie"));
|
|
50
50
|
if (serie !== undefined) process.stderr.write(`dispositivo: ${serie} (${porque})\n`);
|
|
51
51
|
const adb = (...partes) =>
|
|
52
|
-
execFileSync(
|
|
52
|
+
execFileSync(rutaDeAdb(), [...(serie ? ["-s", serie] : []), ...partes], { encoding: "utf8" });
|
|
53
53
|
|
|
54
54
|
const cliente = join(import.meta.dirname, "xone-hotswap");
|
|
55
55
|
const mandar = (comando) =>
|
|
56
|
-
execFileSync(
|
|
56
|
+
execFileSync(NODE, [cliente, JSON.stringify(comando)], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Sin aparato NO se empieza, y se dice el siguiente paso HECHO.
|
|
@@ -66,7 +66,7 @@ const mandar = (comando) =>
|
|
|
66
66
|
function exigirAparato() {
|
|
67
67
|
let lista = "";
|
|
68
68
|
try {
|
|
69
|
-
lista = execFileSync(
|
|
69
|
+
lista = execFileSync(rutaDeAdb(), ["devices"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
|
|
70
70
|
} catch (error) {
|
|
71
71
|
console.error(`no pude hablar con adb: ${error.message.split("\n")[0]}`);
|
|
72
72
|
process.exit(1);
|
|
@@ -107,7 +107,7 @@ for (let intento = 1; intento <= 20 && !vivo; intento++) {
|
|
|
107
107
|
mandar({ command: "getAllElements", format: "xone" });
|
|
108
108
|
vivo = true;
|
|
109
109
|
} catch {
|
|
110
|
-
|
|
110
|
+
dormir(1);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
if (!vivo) {
|
|
@@ -128,7 +128,7 @@ if (app === undefined) {
|
|
|
128
128
|
console.log(salida);
|
|
129
129
|
process.exit(0);
|
|
130
130
|
}
|
|
131
|
-
|
|
131
|
+
dormir(2);
|
|
132
132
|
}
|
|
133
133
|
console.error(`«${app}» no llegó a contestar el árbol de controles: NO está viva.`);
|
|
134
134
|
console.error("Si nunca se ha subido a este aparato, primero xone-desplegar-android.");
|