@dotrino/vaultd 0.141.0 → 0.141.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/package.json +1 -1
- package/src/ctl.js +33 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/vaultd",
|
|
3
|
-
"version": "0.141.
|
|
3
|
+
"version": "0.141.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Certificador personal de Dotrino: daemon headless que custodia la clave maestra y delega capacidades a tus dispositivos por el proxy. Tu CA propia.",
|
|
6
6
|
"bin": {
|
package/src/ctl.js
CHANGED
|
@@ -140,7 +140,7 @@ function cmdStatus () {
|
|
|
140
140
|
// corriendo es más viejo que el CLI, avisar (nos mordió 3 veces).
|
|
141
141
|
if (s.version && s.version !== VERSION) {
|
|
142
142
|
console.log(' ⚠ el servicio corre la versión %s (binario instalado: %s).', s.version, VERSION)
|
|
143
|
-
console.log('
|
|
143
|
+
console.log(' Si acabas de actualizar, se pone al día solo en uno o dos minutos. Si no: %s', RESTART_HINT)
|
|
144
144
|
}
|
|
145
145
|
console.log(' fingerprint : %s', s.fingerprint)
|
|
146
146
|
console.log(' proxy : %s', s.proxy)
|
|
@@ -1732,6 +1732,30 @@ async function cmdLogins (rest) {
|
|
|
1732
1732
|
* Instalar no reinicia nada a mano: el daemon vigila su propio binario y, al cambiar, se
|
|
1733
1733
|
* va para que systemd lo levante con el nuevo (`src/selfupdate.js`).
|
|
1734
1734
|
*/
|
|
1735
|
+
/**
|
|
1736
|
+
* ESPERA A QUE EL SERVICIO CORRA LA VERSIÓN INSTALADA, y lo dice. El servicio se reinicia
|
|
1737
|
+
* solo cuando ve el binario nuevo (`selfupdate.js`), pero espera a verlo quieto dos minutos
|
|
1738
|
+
* seguidos: decir «se reinicia solo, compruébalo con status» y que `status` contestara un
|
|
1739
|
+
* minuto después «reinicia para actualizarlo» era mandar a hacer a mano lo que ya iba a pasar.
|
|
1740
|
+
*/
|
|
1741
|
+
async function waitForService (version, { timeoutMs = 4 * 60_000 } = {}) {
|
|
1742
|
+
const s0 = ipcRead(stateFile, null)
|
|
1743
|
+
if (!s0 || !alive(s0.pid)) {
|
|
1744
|
+
console.log('El servicio no está corriendo: arráncalo y ya será la %s. %s', version, START_HINT)
|
|
1745
|
+
return false
|
|
1746
|
+
}
|
|
1747
|
+
process.stdout.write('El servicio la arranca solo en uno o dos minutos. Esperando… ')
|
|
1748
|
+
const t0 = Date.now()
|
|
1749
|
+
while (Date.now() - t0 < timeoutMs) {
|
|
1750
|
+
const s = ipcRead(stateFile, null)
|
|
1751
|
+
if (s?.version === version && alive(s.pid)) { console.log('✓ ya corre la %s', version); return true }
|
|
1752
|
+
await sleep(3000)
|
|
1753
|
+
}
|
|
1754
|
+
console.log('')
|
|
1755
|
+
console.error('El servicio sigue sin correr la %s después de %d min. Reinícialo: %s', version, Math.round(timeoutMs / 60000), RESTART_HINT)
|
|
1756
|
+
return false
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1735
1759
|
async function cmdUpdate (args = []) {
|
|
1736
1760
|
const { latestRelease, assetFor, download, verifyArtifact, isNewer, isUserInstall, installUserRelease } = await import('./update.js')
|
|
1737
1761
|
const soloMirar = args.includes('--check')
|
|
@@ -1763,7 +1787,8 @@ async function cmdUpdate (args = []) {
|
|
|
1763
1787
|
process.exit(1)
|
|
1764
1788
|
}
|
|
1765
1789
|
console.log('firmada por el release de %s ✓', 'imdotrino/dotrino-vault')
|
|
1766
|
-
console.log('Instalada la %s.
|
|
1790
|
+
console.log('Instalada la %s.', res.version)
|
|
1791
|
+
if (!args.includes('--no-wait')) await waitForService(res.version)
|
|
1767
1792
|
return
|
|
1768
1793
|
}
|
|
1769
1794
|
|
|
@@ -2110,6 +2135,8 @@ function help () {
|
|
|
2110
2135
|
|
|
2111
2136
|
tui interfaz de terminal a pantalla completa (bóvedas, pares, secretos)
|
|
2112
2137
|
status | info estado del servicio + fingerprint + el id de cada perfil
|
|
2138
|
+
update [--check] trae la versión nueva (verificando la firma) y espera a que el
|
|
2139
|
+
servicio la arranque · --check solo mira · --no-wait no espera
|
|
2113
2140
|
pair [--save <f>] inicia un emparejamiento (QR + espera); --save escribe la invitación (.dpair)
|
|
2114
2141
|
pair --kms <config.json>
|
|
2115
2142
|
el sitio que se cree (--adopt o --new-account) NACE con su clave
|
|
@@ -2320,6 +2347,10 @@ async function cmdReplica (args) {
|
|
|
2320
2347
|
|
|
2321
2348
|
export async function runCtl (argv) {
|
|
2322
2349
|
const [cmd, ...rest] = takeProfileFlag(argv)
|
|
2350
|
+
// `--help` EN CUALQUIER COMANDO ENSEÑA LA AYUDA Y NO HACE NADA. Ningún subcomando lo miraba,
|
|
2351
|
+
// así que se ejecutaban igual: `pair --help` lanzaba una invitación real y `update --help`
|
|
2352
|
+
// instalaba la versión nueva (2026-10-05). Mirar cómo se usa algo no puede cambiar nada.
|
|
2353
|
+
if (rest.includes('--help') || rest.includes('-h')) return help()
|
|
2323
2354
|
switch (cmd) {
|
|
2324
2355
|
case 'tui': return cmdTui()
|
|
2325
2356
|
case 'profile': return cmdProfile(rest)
|