@nucleoabierto/teleprompter 0.1.1 → 0.2.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/README.md +38 -7
- package/bin/teleprompter.js +2 -0
- package/docs/domains/001-paquete.md +12 -1
- package/docs/domains/002-instalacion.md +134 -13
- package/docs/domains/README.md +1 -1
- package/docs/especificacion-paquete.md +12 -5
- package/manual/001-instalar-un-paquete.md +50 -4
- package/manual/002-listar-paquetes-instalados.md +44 -0
- package/manual/003-verificar-recursos-instalados.md +56 -0
- package/manual/004-actualizar-un-paquete.md +34 -0
- package/manual/README.md +15 -0
- package/manual/guia-de-uso.md +84 -6
- package/manual/index.md +16 -0
- package/manual/referencia-check.md +47 -0
- package/manual/referencia-guide.md +33 -0
- package/manual/referencia-install.md +45 -9
- package/manual/referencia-list.md +42 -0
- package/manual/referencia-update.md +49 -0
- package/package.json +4 -1
- package/src/cli.js +473 -66
- package/src/drift.js +28 -0
- package/src/execute.js +53 -8
- package/src/fetch.js +85 -0
- package/src/lock.js +63 -9
- package/src/manifest.js +32 -5
- package/src/paths.js +41 -0
- package/src/plan.js +118 -4
package/manual/guia-de-uso.md
CHANGED
|
@@ -5,11 +5,11 @@ Cómo instalar un paquete Teleprompter en un repositorio, paso a paso.
|
|
|
5
5
|
## Requisitos
|
|
6
6
|
|
|
7
7
|
- Node.js 22 o superior.
|
|
8
|
-
- Un paquete: un
|
|
9
|
-
raíz. Este repositorio incluye
|
|
10
|
-
`packages/ciclo-tareas/`.
|
|
8
|
+
- Un paquete: un repositorio público de GitHub o un directorio con un
|
|
9
|
+
manifiesto `teleprompter.json` en su raíz. Este repositorio incluye
|
|
10
|
+
uno de referencia en `packages/ciclo-tareas/`.
|
|
11
11
|
- El directorio del repositorio destino donde se instalarán los
|
|
12
|
-
recursos.
|
|
12
|
+
recursos —por defecto, el directorio de trabajo.
|
|
13
13
|
|
|
14
14
|
## Instalar un paquete
|
|
15
15
|
|
|
@@ -17,7 +17,18 @@ Desde la raíz del repositorio destino —o dando su ruta como segundo
|
|
|
17
17
|
argumento—:
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
npx @nucleoabierto/teleprompter
|
|
20
|
+
npx @nucleoabierto/teleprompter nucleoabierto/ciclo-tareas .
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`user/repo` descarga el tarball público del repositorio de GitHub y
|
|
24
|
+
usa su raíz como paquete —el `name` del manifiesto debe coincidir con
|
|
25
|
+
el nombre del repositorio, como exige la especificación—;
|
|
26
|
+
`user/repo@v1.0.0` o `--ref v1.0.0` eligen
|
|
27
|
+
la referencia (rama, tag o commit), y sin indicación se usa la rama
|
|
28
|
+
por defecto. Para un paquete en disco se usa `--path`:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
npx @nucleoabierto/teleprompter --path /ruta/al/paquete .
|
|
21
32
|
```
|
|
22
33
|
|
|
23
34
|
El instalador trabaja en cuatro fases: verificación, plan, ejecución y
|
|
@@ -28,6 +39,7 @@ registro. Las dos primeras no escriben nada.
|
|
|
28
39
|
aborta antes de tocar el disco. Si todo va bien, verás:
|
|
29
40
|
|
|
30
41
|
```text
|
|
42
|
+
obteniendo: nucleoabierto/ciclo-tareas
|
|
31
43
|
verificado: ciclo-tareas@1.0.0
|
|
32
44
|
```
|
|
33
45
|
|
|
@@ -60,6 +72,9 @@ resultado:
|
|
|
60
72
|
create .agents/skills/crear-tareas/
|
|
61
73
|
create .agents/skills/ejecutar-tareas/
|
|
62
74
|
create .agents/skills/commit/
|
|
75
|
+
personalización (.teleprompter/ciclo-tareas/PERSONALIZE.md):
|
|
76
|
+
# Personalización de ciclo-tareas
|
|
77
|
+
…
|
|
63
78
|
instalado: ciclo-tareas@1.0.0
|
|
64
79
|
```
|
|
65
80
|
|
|
@@ -67,13 +82,76 @@ instalado: ciclo-tareas@1.0.0
|
|
|
67
82
|
repositorio: es lo que permite a Teleprompter distinguir lo que él
|
|
68
83
|
instaló de lo que ya existía.
|
|
69
84
|
|
|
85
|
+
Si el paquete declara instrucciones de personalización, su
|
|
86
|
+
contenido se entrega tal cual al final del resultado —el bloque
|
|
87
|
+
`personalización` anterior— y queda copiado en
|
|
88
|
+
`.teleprompter/<paquete>/` dentro del destino.
|
|
89
|
+
|
|
90
|
+
## Consultar la guía de personalización
|
|
91
|
+
|
|
92
|
+
Las instrucciones que la instalación entregó se releen después con
|
|
93
|
+
`guide`, ejecutado desde la raíz del repositorio destino:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
npx @nucleoabierto/teleprompter guide
|
|
97
|
+
npx @nucleoabierto/teleprompter guide ciclo-tareas # solo ese paquete
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Muestra el mismo contenido del archivo materializado —no reinstala ni
|
|
101
|
+
descarga nada—. Véase la [referencia de `guide`](referencia-guide.md).
|
|
102
|
+
|
|
103
|
+
## Listar los paquetes instalados
|
|
104
|
+
|
|
105
|
+
Desde la raíz del repositorio destino, `list` muestra qué paquetes
|
|
106
|
+
instaló Teleprompter —nombre, versión, fecha y recursos escritos—
|
|
107
|
+
leyendo el registro:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
npx @nucleoabierto/teleprompter list
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Véase la [referencia de `list`](referencia-list.md).
|
|
114
|
+
|
|
115
|
+
## Verificar el estado de los recursos instalados
|
|
116
|
+
|
|
117
|
+
Desde la raíz del repositorio destino, `check` confronta el registro
|
|
118
|
+
con el disco y muestra por cada recurso instalado si sigue `intacto`,
|
|
119
|
+
fue `modificado`, está `ausente` o es `no verificable`:
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
npx @nucleoabierto/teleprompter check
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Véase la [referencia de `check`](referencia-check.md).
|
|
126
|
+
|
|
127
|
+
## Actualizar un paquete
|
|
128
|
+
|
|
129
|
+
Desde la raíz del repositorio destino, `update` lleva un paquete
|
|
130
|
+
instalado a la versión que publica su origen —el registrado al
|
|
131
|
+
instalarlo, salvo que se indique otro—:
|
|
132
|
+
|
|
133
|
+
```sh
|
|
134
|
+
npx @nucleoabierto/teleprompter update ciclo-tareas
|
|
135
|
+
npx @nucleoabierto/teleprompter update ciclo-tareas --ref v2.0.0
|
|
136
|
+
npx @nucleoabierto/teleprompter update ciclo-tareas otra/repo@main
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
El plan de actualización decide recurso a recurso: lo intacto que la
|
|
140
|
+
versión cambió se sobrescribe (`update`), lo nuevo se crea, lo que la
|
|
141
|
+
versión ya no trae se retira si sigue intacto (`retire`), y las
|
|
142
|
+
ediciones locales se resuelven como las colisiones de `install` —
|
|
143
|
+
interactiva, `--force`, `--skip` o aborto sin consola—. Si la versión
|
|
144
|
+
ya es la registrada, responde que ya está en esa versión.
|
|
145
|
+
|
|
146
|
+
Véase la [referencia de `update`](referencia-update.md).
|
|
147
|
+
|
|
70
148
|
## Inspeccionar sin instalar
|
|
71
149
|
|
|
72
150
|
`--dry-run` ejecuta solo la verificación y el plan, y termina sin
|
|
73
151
|
escribir ni registrar nada:
|
|
74
152
|
|
|
75
153
|
```sh
|
|
76
|
-
npx @nucleoabierto/teleprompter
|
|
154
|
+
npx @nucleoabierto/teleprompter nucleoabierto/ciclo-tareas . --dry-run
|
|
77
155
|
```
|
|
78
156
|
|
|
79
157
|
Es la forma de ver qué haría una instalación —incluidas las colisiones
|
package/manual/index.md
CHANGED
|
@@ -15,8 +15,24 @@ colisiones con lo que ya existe y registra la instalación en
|
|
|
15
15
|
- [Referencia de `install`](referencia-install.md) — la operación
|
|
16
16
|
completa: fases, marcas del plan, resolución de colisiones, registro
|
|
17
17
|
y códigos de salida.
|
|
18
|
+
- [Referencia de `guide`](referencia-guide.md) — consultar las
|
|
19
|
+
instrucciones de personalización de los paquetes instalados.
|
|
20
|
+
- [Referencia de `list`](referencia-list.md) — listar los paquetes
|
|
21
|
+
instalados con su versión, fecha y recursos.
|
|
22
|
+
- [Referencia de `check`](referencia-check.md) — verificar el estado
|
|
23
|
+
de los recursos instalados.
|
|
24
|
+
- [Referencia de `update`](referencia-update.md) — actualizar un
|
|
25
|
+
paquete instalado a la versión que publica su origen.
|
|
18
26
|
- [Instalar un paquete](001-instalar-un-paquete.md) — la funcionalidad
|
|
19
27
|
y los escenarios que la suite de pruebas verifica.
|
|
28
|
+
- [Listar los paquetes instalados](002-listar-paquetes-instalados.md)
|
|
29
|
+
— la consulta del registro y los escenarios que la suite verifica.
|
|
30
|
+
- [Verificar el estado de los recursos instalados](003-verificar-recursos-instalados.md)
|
|
31
|
+
— la verificación de la instalación y los escenarios que la suite
|
|
32
|
+
verifica.
|
|
33
|
+
- [Actualizar un paquete](004-actualizar-un-paquete.md) — la
|
|
34
|
+
actualización consciente de la deriva y los escenarios que la
|
|
35
|
+
suite verifica.
|
|
20
36
|
|
|
21
37
|
## En el repositorio
|
|
22
38
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Referencia de `check`
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
teleprompter check
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Verifica el estado de los recursos que Teleprompter instaló en el
|
|
8
|
+
repositorio destino. Se ejecuta desde la raíz del destino —no acepta
|
|
9
|
+
argumentos ni opciones— y contrasta `teleprompter-lock.json` con lo
|
|
10
|
+
que el disco contiene: no reinstala ni vuelve a descargar nada.
|
|
11
|
+
|
|
12
|
+
Por cada paquete instalado muestra su `nombre@version` y una línea
|
|
13
|
+
por recurso registrado con una marca de estado:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
estado de los recursos:
|
|
17
|
+
ciclo-tareas@1.0.0
|
|
18
|
+
intacto .agents/skills/crear-tareas/SKILL.md
|
|
19
|
+
modificado .agents/skills/ejecutar-tareas/SKILL.md
|
|
20
|
+
ausente .agents/skills/commit/SKILL.md
|
|
21
|
+
no verificable .teleprompter/ciclo-tareas/PERSONALIZE.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- `intacto` — el recurso sigue conteniendo lo que la instalación
|
|
25
|
+
escribió.
|
|
26
|
+
- `modificado` — el recurso existe pero su contenido difiere de lo
|
|
27
|
+
registrado.
|
|
28
|
+
- `ausente` — la ruta registrada ya no existe en el destino.
|
|
29
|
+
- `no verificable` — el registro no guardó una referencia con la que
|
|
30
|
+
comparar, el recurso no se puede leer, o la ruta registrada no es
|
|
31
|
+
segura —sale del destino por un `..` o un enlace—.
|
|
32
|
+
|
|
33
|
+
Los recursos que la instalación omitió por colisión no se verifican
|
|
34
|
+
—la herramienta no escribió nada ahí— y el informe no muestra hashes
|
|
35
|
+
ni acciones internas. Encontrar deriva no es un fallo: el informe
|
|
36
|
+
termina con código `0` haya o no recursos modificados o ausentes.
|
|
37
|
+
|
|
38
|
+
Sin instalaciones registradas responde `no hay paquetes
|
|
39
|
+
instalados`: es una respuesta, no un fallo. Un registro ilegible o
|
|
40
|
+
corrupto añade un `aviso:` y responde lo mismo —como el resto de
|
|
41
|
+
lecturas del lock, la corrupción degrada a «sin historia»—.
|
|
42
|
+
|
|
43
|
+
## Errores
|
|
44
|
+
|
|
45
|
+
| Situación | Código |
|
|
46
|
+
|-----------------------------------------|--------|
|
|
47
|
+
| Argumentos u opciones de cualquier tipo | `4` |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Referencia de `guide`
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
teleprompter guide [<paquete>]
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Muestra las instrucciones de personalización que los paquetes
|
|
8
|
+
instalados declararon. Se ejecuta desde la raíz del repositorio
|
|
9
|
+
destino —no acepta un argumento de destino ni ninguna opción de
|
|
10
|
+
instalación— y lee el archivo que la instalación materializó en
|
|
11
|
+
`.teleprompter/<paquete>/<archivo>`: no reinstala ni vuelve a
|
|
12
|
+
descargar nada.
|
|
13
|
+
|
|
14
|
+
- Sin `<paquete>`: muestra la guía de cada paquete instalado que la
|
|
15
|
+
declara, un bloque por paquete.
|
|
16
|
+
- Con `<paquete>`: muestra solo la de ese paquete.
|
|
17
|
+
|
|
18
|
+
La salida es el mismo bloque que la instalación entregó al final de
|
|
19
|
+
su resultado —`personalización (<ruta>):` seguido del contenido del
|
|
20
|
+
archivo tal cual, que es texto libre del mantenedor: nunca se valida
|
|
21
|
+
ni se ejecuta—. La ruta que cada bloque muestra es la registrada en
|
|
22
|
+
`teleprompter-lock.json` bajo `personalization`.
|
|
23
|
+
|
|
24
|
+
## Errores
|
|
25
|
+
|
|
26
|
+
| Situación | Código |
|
|
27
|
+
|-------------------------------------------------------------|--------|
|
|
28
|
+
| Ningún paquete instalado declara guía, o no hay instalaciones | `4` |
|
|
29
|
+
| `<paquete>` no está instalado en el directorio de trabajo | `4` |
|
|
30
|
+
| `<paquete>` está instalado pero no declaró guía | `4` |
|
|
31
|
+
| Argumentos de más u opciones de instalación | `4` |
|
|
32
|
+
| El archivo registrado no existe o no se puede leer | `3` |
|
|
33
|
+
| La ruta registrada escapa del destino (`..` o enlaces) | `3` |
|
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
# Referencia de `install`
|
|
2
2
|
|
|
3
3
|
```text
|
|
4
|
-
teleprompter install <
|
|
4
|
+
teleprompter [install] <user/repo[@ref]> [destino] [--ref <ref>]
|
|
5
|
+
teleprompter [install] --path <paquete> [destino]
|
|
6
|
+
|
|
7
|
+
Opciones comunes: [--force|--skip] [--dry-run]
|
|
5
8
|
```
|
|
6
9
|
|
|
7
|
-
Instala
|
|
8
|
-
|
|
10
|
+
Instala un paquete en el repositorio cuya raíz es `destino` —por
|
|
11
|
+
defecto, el directorio de trabajo—. `install` es un alias opcional de
|
|
12
|
+
la forma corta.
|
|
13
|
+
|
|
14
|
+
## El origen
|
|
15
|
+
|
|
16
|
+
- `<user/repo>`: descarga el tarball público del repositorio de
|
|
17
|
+
GitHub por HTTP —sin git ni credenciales—, lo extrae en un
|
|
18
|
+
directorio temporal y usa la raíz del árbol como paquete. El
|
|
19
|
+
temporal se elimina al terminar, también en error y en `--dry-run`.
|
|
20
|
+
La referencia se elige con `@ref` o `--ref` —declarar ambas es un
|
|
21
|
+
error de invocación—; sin indicación se descarga la rama por
|
|
22
|
+
defecto. Un repositorio inaccesible o una referencia inexistente
|
|
23
|
+
abortan con código `5`.
|
|
24
|
+
- `--path <paquete>`: usa el directorio local como origen y el
|
|
25
|
+
argumento posicional `user/repo` no se procesa —de declararse, se
|
|
26
|
+
interpreta como `destino`.
|
|
27
|
+
|
|
28
|
+
`destino` y el directorio de `--path` deben ser directorios
|
|
29
|
+
existentes.
|
|
9
30
|
|
|
10
31
|
## Fases
|
|
11
32
|
|
|
@@ -86,7 +107,8 @@ destino: un JSON pensado para versionarse con el repositorio:
|
|
|
86
107
|
"action": "create",
|
|
87
108
|
"sha256": "…"
|
|
88
109
|
}
|
|
89
|
-
]
|
|
110
|
+
],
|
|
111
|
+
"origin": { "type": "github", "repo": "nucleoabierto/ciclo-tareas" }
|
|
90
112
|
}
|
|
91
113
|
}
|
|
92
114
|
}
|
|
@@ -95,7 +117,11 @@ destino: un JSON pensado para versionarse con el repositorio:
|
|
|
95
117
|
`packages` se indexa por el `name` del manifiesto y cada entrada
|
|
96
118
|
contiene `version`, `installedAt` y `files`: una entrada por recurso
|
|
97
119
|
con su `target`, la acción realizada (`create`, `overwrite`, `skip`) y
|
|
98
|
-
el SHA-256 del contenido escrito —las entradas `skip` no llevan hash
|
|
120
|
+
el SHA-256 del contenido escrito —las entradas `skip` no llevan hash—.
|
|
121
|
+
La entrada registra además el `origin` de la instalación: el
|
|
122
|
+
repositorio `owner/name` con el ref usado —o sin él, si se obtuvo la
|
|
123
|
+
rama por defecto— o la ruta absoluta de `--path`; los registros
|
|
124
|
+
escritos antes de este campo carecen de él.
|
|
99
125
|
Los registros de otros paquetes instalados en el mismo destino se
|
|
100
126
|
conservan. Un registro ausente no bloquea la operación: se ignora en
|
|
101
127
|
silencio y se trata como si no hubiera instalaciones previas; un
|
|
@@ -104,10 +130,19 @@ un aviso.
|
|
|
104
130
|
|
|
105
131
|
## Personalización
|
|
106
132
|
|
|
107
|
-
Si el manifiesto declara `personalization`,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
133
|
+
Si el manifiesto declara `personalization`, el instalador copia el
|
|
134
|
+
archivo de instrucciones a `.teleprompter/<paquete>/<archivo>` dentro
|
|
135
|
+
del destino —un espacio gestionado por la herramienta, igual que el
|
|
136
|
+
registro—, recuerda su ubicación en `teleprompter-lock.json` y entrega
|
|
137
|
+
su contenido tal cual al final del resultado, bajo el encabezado
|
|
138
|
+
`personalización (<ruta>):`. El contenido es texto libre del
|
|
139
|
+
mantenedor: nunca se valida ni se ejecuta. Ningún `target` de
|
|
140
|
+
`install` ni ninguna ruta de `requires` puede apuntar dentro de
|
|
141
|
+
`.teleprompter/`.
|
|
142
|
+
|
|
143
|
+
El mismo contenido se consulta después con
|
|
144
|
+
[`teleprompter guide`](referencia-guide.md), ejecutado dentro del
|
|
145
|
+
repositorio destino.
|
|
111
146
|
|
|
112
147
|
## Códigos de salida
|
|
113
148
|
|
|
@@ -118,3 +153,4 @@ también figuren en `install`.
|
|
|
118
153
|
| `2` | Plan no ejecutable: precondiciones incumplidas o colisiones |
|
|
119
154
|
| `3` | Error de ejecución (informa de lo ya aplicado antes de fallar) |
|
|
120
155
|
| `4` | Error de invocación: argumentos ausentes o rutas que no existen |
|
|
156
|
+
| `5` | Error de obtención: repositorio inaccesible, referencia inexistente o archivo corrupto |
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Referencia de `list`
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
teleprompter list
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Muestra los paquetes instalados en el repositorio destino. Se
|
|
8
|
+
ejecuta desde la raíz del destino —no acepta argumentos ni
|
|
9
|
+
opciones— y lee `teleprompter-lock.json`: no reinstala ni vuelve a
|
|
10
|
+
descargar nada.
|
|
11
|
+
|
|
12
|
+
Por cada paquete instalado muestra una entrada con su
|
|
13
|
+
`nombre@version`, el instante en que se instaló y una línea por
|
|
14
|
+
recurso que la instalación escribió:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
paquetes instalados:
|
|
18
|
+
ciclo-tareas@1.0.0 — instalado 2026-09-28T10:00:00.000Z
|
|
19
|
+
guía: teleprompter guide ciclo-tareas
|
|
20
|
+
.agents/skills/crear-tareas/SKILL.md
|
|
21
|
+
.agents/skills/ejecutar-tareas/SKILL.md
|
|
22
|
+
.agents/skills/commit/SKILL.md
|
|
23
|
+
.teleprompter/ciclo-tareas/PERSONALIZE.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
La línea `guía:` solo aparece cuando el paquete declaró
|
|
27
|
+
instrucciones de personalización, consultables con
|
|
28
|
+
[`guide`](referencia-guide.md). Los recursos que la instalación
|
|
29
|
+
omitió por colisión no se listan —el registro anota la decisión,
|
|
30
|
+
pero la herramienta no escribió nada ahí— y tampoco se muestran los
|
|
31
|
+
hashes ni las acciones internas del registro.
|
|
32
|
+
|
|
33
|
+
Sin instalaciones registradas responde `no hay paquetes
|
|
34
|
+
instalados`: es una respuesta, no un fallo. Un registro ilegible o
|
|
35
|
+
corrupto añade un `aviso:` y responde lo mismo —como el resto de
|
|
36
|
+
lecturas del lock, la corrupción degrada a «sin historia»—.
|
|
37
|
+
|
|
38
|
+
## Errores
|
|
39
|
+
|
|
40
|
+
| Situación | Código |
|
|
41
|
+
|-----------------------------------------|--------|
|
|
42
|
+
| Argumentos u opciones de cualquier tipo | `4` |
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Referencia de `update`
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
teleprompter update <paquete> [<user/repo[@ref]>] [--ref <ref>]
|
|
5
|
+
teleprompter update <paquete> --path <paquete>
|
|
6
|
+
teleprompter update <paquete> [--force | --skip] [--dry-run]
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Lleva un paquete instalado a la versión que publica su origen. Se
|
|
10
|
+
ejecuta desde la raíz del repositorio destino —no acepta destino— y
|
|
11
|
+
nombra el paquete por su `name` en `teleprompter-lock.json`.
|
|
12
|
+
|
|
13
|
+
## El origen
|
|
14
|
+
|
|
15
|
+
- Sin indicación, reobtiene el paquete desde el origen que la
|
|
16
|
+
instalación registró: el repositorio con su `ref` —o la rama por
|
|
17
|
+
defecto— o el directorio de `--path`.
|
|
18
|
+
- Un posicional `user/repo[@ref]` o `--path <dir>` lo sobrescribe y
|
|
19
|
+
queda registrado como nuevo origen.
|
|
20
|
+
- `--ref` sobrescribe el ref de un origen de repositorio; con un
|
|
21
|
+
origen local es un error de invocación.
|
|
22
|
+
|
|
23
|
+
## Qué hace
|
|
24
|
+
|
|
25
|
+
Verifica la versión entrante y presenta el plan de actualización
|
|
26
|
+
completo antes de escribir nada: `create`, `identical`, `update`
|
|
27
|
+
—la versión cambió el recurso y el destino sigue intacto— y
|
|
28
|
+
`retire` —la versión retira un recurso intacto—. Lo que la versión
|
|
29
|
+
cambió sobre una edición local, y los retirados modificados, se
|
|
30
|
+
resuelven como las colisiones de `install`: pregunta interactiva,
|
|
31
|
+
`--force`, `--skip` o aborto sin consola —para un retirado la
|
|
32
|
+
pregunta es quitarlo, no sobrescribirlo—.
|
|
33
|
+
|
|
34
|
+
Si el paquete ya está en la versión que publica el origen, responde
|
|
35
|
+
`ya está en esa versión` sin escribir nada. Terminada la ejecución,
|
|
36
|
+
el registro queda a la versión nueva con el origen efectivo.
|
|
37
|
+
|
|
38
|
+
## Errores
|
|
39
|
+
|
|
40
|
+
| Situación | Código |
|
|
41
|
+
|--------------------------------------------------------|--------|
|
|
42
|
+
| El paquete no está instalado | `4` |
|
|
43
|
+
| No hay origen registrado ni se indica uno | `4` |
|
|
44
|
+
| El origen obtenido publica otro paquete | `4` |
|
|
45
|
+
| `--ref` con un origen local, `--ref` con `--path`, o argumentos de más | `4` |
|
|
46
|
+
| Manifiesto del origen inválido | `1` |
|
|
47
|
+
| Precondición incumplida o decisiones pendientes sin consola | `2` |
|
|
48
|
+
| Error de ejecución | `3` |
|
|
49
|
+
| Origen remoto inaccesible | `5` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nucleoabierto/teleprompter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Instalador de paquetes de configuración Teleprompter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -24,5 +24,8 @@
|
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"test": "node --test --experimental-test-coverage --test-coverage-include='**/src/**' --test-coverage-lines=100 --test-coverage-functions=100 --test-coverage-branches=100"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"tar": "^7.5.22"
|
|
27
30
|
}
|
|
28
31
|
}
|