@ingeniomaps/cauce 0.8.1 → 0.9.0
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/CHANGELOG.md +17 -1
- package/engine/cli/ops.js +44 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,10 +8,26 @@ esa operación sea confiable en vez de sólo cómoda: acá se lee qué cambió a
|
|
|
8
8
|
un cambio en el protocolo, en las reglas del sistema o en un guard es visible para el usuario y sube
|
|
9
9
|
minor aunque no toque una sola línea de código.
|
|
10
10
|
|
|
11
|
-
## [0.
|
|
11
|
+
## [0.9.0] - 2026-08-15
|
|
12
|
+
|
|
13
|
+
### Añadido
|
|
14
|
+
|
|
15
|
+
- `ops integration disable <raíz> <proveedor>`: el par que faltaba. Apagar **no desinstala** —
|
|
16
|
+
`integrations/<proveedor>/` puede tener snapshots y borradores de la empresa, y borrarlos para
|
|
17
|
+
desconectar una integración sería perder trabajo suyo. El andamiaje queda y volver a encender no
|
|
18
|
+
pierde nada.
|
|
19
|
+
- `integration enable` sólo pide lo que falta: reencender un proveedor ya configurado no manda a
|
|
20
|
+
completar un archivo que la empresa terminó hace meses.
|
|
21
|
+
|
|
22
|
+
## [0.8.2] - 2026-08-15
|
|
12
23
|
|
|
13
24
|
### Corregido
|
|
14
25
|
|
|
26
|
+
- **`integration list` mostraba encendido un proveedor que se habría negado a sincronizar.** Hay dos
|
|
27
|
+
interruptores y `sync` exige los dos: el del registro dice que el proveedor está conectado al
|
|
28
|
+
proyecto, el suyo propio que su configuración está terminada. La lista leía sólo el primero, así
|
|
29
|
+
que después de `enable` decía `● jira` y `sync` contestaba `jira está deshabilitado`. Ahora
|
|
30
|
+
distingue los tres estados y `enable` no promete más de lo que hizo.
|
|
15
31
|
- `integration enable` no falla si el andamiaje ya está. Habilitar no es inicializar: una instancia
|
|
16
32
|
que lo arrastra de una versión anterior —o que ya tiene snapshots— sólo quiere el interruptor, y
|
|
17
33
|
recibía un error pidiéndole un directorio vacío. Ahora repone lo que falte, conserva lo que haya y
|
package/engine/cli/ops.js
CHANGED
|
@@ -34,6 +34,7 @@ function usage() {
|
|
|
34
34
|
ops archive <planning-dir> <NNN>
|
|
35
35
|
ops integration list <ops-root>
|
|
36
36
|
ops integration enable <ops-root> <provider>
|
|
37
|
+
ops integration disable <ops-root> <provider>
|
|
37
38
|
ops integration check <ops-root> [provider]
|
|
38
39
|
ops integration sync <ops-root> <provider> [--fixture <json>]
|
|
39
40
|
ops integration promote <ops-root> <provider> <remote-key>
|
|
@@ -679,8 +680,17 @@ async function integration(action, rootArg, provider, key) {
|
|
|
679
680
|
const root = path.resolve(rootArg || '.')
|
|
680
681
|
if (action === 'list') {
|
|
681
682
|
const registry = JSON.parse(fs.readFileSync(path.join(root, 'integrations', 'config.json'), 'utf8'))
|
|
683
|
+
// Hay dos interruptores y `sync` exige los dos: el del registro dice que el proveedor está
|
|
684
|
+
// conectado al proyecto, el suyo propio que su configuración está terminada. Mostrar sólo el
|
|
685
|
+
// primero daba encendido a un proveedor que se habría negado a sincronizar.
|
|
682
686
|
for (const [name, entry] of Object.entries(registry.providers || {})) {
|
|
683
|
-
|
|
687
|
+
let listo = false
|
|
688
|
+
try {
|
|
689
|
+
listo = JSON.parse(fs.readFileSync(path.join(root, 'integrations', name, 'config.json'), 'utf8')).enabled === true
|
|
690
|
+
} catch { /* sin materializar */ }
|
|
691
|
+
const estado = !entry.enabled ? '○' : (listo ? '●' : '◐')
|
|
692
|
+
const nota = estado === '◐' ? ` — falta completar integrations/${name}/config.json y poner enabled: true` : ''
|
|
693
|
+
console.log(`${estado} ${name} [${entry.adapter}]${nota}`)
|
|
684
694
|
}
|
|
685
695
|
return
|
|
686
696
|
}
|
|
@@ -699,7 +709,39 @@ async function integration(action, rootArg, provider, key) {
|
|
|
699
709
|
copyTemplate(source, path.join(root, 'integrations', provider), {}, true)
|
|
700
710
|
config.providers[provider].enabled = true
|
|
701
711
|
F.atomicWriteJson(registry, config)
|
|
702
|
-
console.log(`✓ ${provider}:
|
|
712
|
+
console.log(`✓ ${provider}: conectado al proyecto y andamiaje en integrations/${provider}/.`)
|
|
713
|
+
// Sólo se pide lo que falta: reencender un proveedor ya configurado no debería mandar a
|
|
714
|
+
// completar un archivo que la empresa terminó hace meses.
|
|
715
|
+
let listo = false
|
|
716
|
+
try {
|
|
717
|
+
const suyo = path.join(root, 'integrations', provider, 'config.json')
|
|
718
|
+
listo = JSON.parse(fs.readFileSync(suyo, 'utf8')).enabled === true
|
|
719
|
+
} catch { /* sin configurar */ }
|
|
720
|
+
if (listo) console.log(` Su configuración ya estaba completa: "integration sync" puede correr.`)
|
|
721
|
+
else {
|
|
722
|
+
console.log(` Falta lo tuyo: completá integrations/${provider}/config.json y poné enabled: true ahí.`)
|
|
723
|
+
console.log(` Hasta entonces "integration sync" se niega, que es lo correcto: no hay a dónde apuntar.`)
|
|
724
|
+
}
|
|
725
|
+
return
|
|
726
|
+
}
|
|
727
|
+
// Apagar no desinstala: `integrations/<proveedor>/` puede tener snapshots y borradores de la
|
|
728
|
+
// empresa, y borrarlos para desconectar una integración sería perder trabajo suyo. El andamiaje
|
|
729
|
+
// queda, callado, y volver a encenderlo no pierde nada.
|
|
730
|
+
if (action === 'disable') {
|
|
731
|
+
if (!provider) fail('Falta <provider>.', 2)
|
|
732
|
+
const registry = path.join(root, 'integrations', 'config.json')
|
|
733
|
+
let config
|
|
734
|
+
try { config = JSON.parse(fs.readFileSync(registry, 'utf8')) } catch (error) {
|
|
735
|
+
fail(`integrations/config.json ilegible: ${error.message}`)
|
|
736
|
+
}
|
|
737
|
+
if (!config.providers || !config.providers[provider]) fail(`${provider} no está en integrations/config.json.`)
|
|
738
|
+
config.providers[provider].enabled = false
|
|
739
|
+
F.atomicWriteJson(registry, config)
|
|
740
|
+
console.log(`✓ ${provider}: desconectado del proyecto. "integration sync" deja de correrlo.`)
|
|
741
|
+
const dir = path.join(root, 'integrations', provider)
|
|
742
|
+
if (fs.existsSync(dir)) {
|
|
743
|
+
console.log(` integrations/${provider}/ queda como está: ahí pueden vivir snapshots y borradores tuyos.`)
|
|
744
|
+
}
|
|
703
745
|
return
|
|
704
746
|
}
|
|
705
747
|
if (action === 'check') {
|