@meltemi/diagrams-cli 0.0.0-stage → 1.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/LICENSE +21 -0
- package/README.md +58 -2
- package/dist/assets-command.d.ts +16 -0
- package/dist/assets-command.d.ts.map +1 -0
- package/dist/assets-command.js +145 -0
- package/dist/assets-command.js.map +1 -0
- package/dist/assist-command.d.ts +19 -0
- package/dist/assist-command.d.ts.map +1 -0
- package/dist/assist-command.js +268 -0
- package/dist/assist-command.js.map +1 -0
- package/dist/auth-command.d.ts +14 -0
- package/dist/auth-command.d.ts.map +1 -0
- package/dist/auth-command.js +233 -0
- package/dist/auth-command.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +60 -0
- package/dist/bin.js.map +1 -0
- package/dist/build-command.d.ts +23 -0
- package/dist/build-command.d.ts.map +1 -0
- package/dist/build-command.js +123 -0
- package/dist/build-command.js.map +1 -0
- package/dist/cli.d.ts +46 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +823 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud-client.d.ts +246 -0
- package/dist/cloud-client.d.ts.map +1 -0
- package/dist/cloud-client.js +591 -0
- package/dist/cloud-client.js.map +1 -0
- package/dist/cloud-command.d.ts +56 -0
- package/dist/cloud-command.d.ts.map +1 -0
- package/dist/cloud-command.js +81 -0
- package/dist/cloud-command.js.map +1 -0
- package/dist/cloud-context.d.ts +106 -0
- package/dist/cloud-context.d.ts.map +1 -0
- package/dist/cloud-context.js +185 -0
- package/dist/cloud-context.js.map +1 -0
- package/dist/cloud-errors.d.ts +37 -0
- package/dist/cloud-errors.d.ts.map +1 -0
- package/dist/cloud-errors.js +46 -0
- package/dist/cloud-errors.js.map +1 -0
- package/dist/cloud-host.d.ts +72 -0
- package/dist/cloud-host.d.ts.map +1 -0
- package/dist/cloud-host.js +129 -0
- package/dist/cloud-host.js.map +1 -0
- package/dist/cloud-manifest.d.ts +12 -0
- package/dist/cloud-manifest.d.ts.map +1 -0
- package/dist/cloud-manifest.js +21 -0
- package/dist/cloud-manifest.js.map +1 -0
- package/dist/cloud-paths.d.ts +48 -0
- package/dist/cloud-paths.d.ts.map +1 -0
- package/dist/cloud-paths.js +104 -0
- package/dist/cloud-paths.js.map +1 -0
- package/dist/credentials.d.ts +107 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +243 -0
- package/dist/credentials.js.map +1 -0
- package/dist/export-command.d.ts +35 -0
- package/dist/export-command.d.ts.map +1 -0
- package/dist/export-command.js +524 -0
- package/dist/export-command.js.map +1 -0
- package/dist/import-command.d.ts +20 -0
- package/dist/import-command.d.ts.map +1 -0
- package/dist/import-command.js +254 -0
- package/dist/import-command.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/init-command.d.ts +28 -0
- package/dist/init-command.d.ts.map +1 -0
- package/dist/init-command.js +199 -0
- package/dist/init-command.js.map +1 -0
- package/dist/login-listener.d.ts +58 -0
- package/dist/login-listener.d.ts.map +1 -0
- package/dist/login-listener.js +173 -0
- package/dist/login-listener.js.map +1 -0
- package/dist/messages/en.d.ts +533 -0
- package/dist/messages/en.d.ts.map +1 -0
- package/dist/messages/en.js +803 -0
- package/dist/messages/en.js.map +1 -0
- package/dist/messages/es.d.ts +3 -0
- package/dist/messages/es.d.ts.map +1 -0
- package/dist/messages/es.js +764 -0
- package/dist/messages/es.js.map +1 -0
- package/dist/messages/index.d.ts +442 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +42 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/messages/push-pull-en.d.ts +84 -0
- package/dist/messages/push-pull-en.d.ts.map +1 -0
- package/dist/messages/push-pull-en.js +146 -0
- package/dist/messages/push-pull-en.js.map +1 -0
- package/dist/messages/push-pull-es.d.ts +7 -0
- package/dist/messages/push-pull-es.d.ts.map +1 -0
- package/dist/messages/push-pull-es.js +144 -0
- package/dist/messages/push-pull-es.js.map +1 -0
- package/dist/open-url.d.ts +11 -0
- package/dist/open-url.d.ts.map +1 -0
- package/dist/open-url.js +36 -0
- package/dist/open-url.js.map +1 -0
- package/dist/plugins-command.d.ts +15 -0
- package/dist/plugins-command.d.ts.map +1 -0
- package/dist/plugins-command.js +106 -0
- package/dist/plugins-command.js.map +1 -0
- package/dist/preview.d.ts +54 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +249 -0
- package/dist/preview.js.map +1 -0
- package/dist/project-errors.d.ts +17 -0
- package/dist/project-errors.d.ts.map +1 -0
- package/dist/project-errors.js +85 -0
- package/dist/project-errors.js.map +1 -0
- package/dist/projects-command.d.ts +13 -0
- package/dist/projects-command.d.ts.map +1 -0
- package/dist/projects-command.js +85 -0
- package/dist/projects-command.js.map +1 -0
- package/dist/publish-command.d.ts +41 -0
- package/dist/publish-command.d.ts.map +1 -0
- package/dist/publish-command.js +311 -0
- package/dist/publish-command.js.map +1 -0
- package/dist/pull-command.d.ts +21 -0
- package/dist/pull-command.d.ts.map +1 -0
- package/dist/pull-command.js +300 -0
- package/dist/pull-command.js.map +1 -0
- package/dist/push-command.d.ts +31 -0
- package/dist/push-command.d.ts.map +1 -0
- package/dist/push-command.js +391 -0
- package/dist/push-command.js.map +1 -0
- package/dist/push-review.d.ts +16 -0
- package/dist/push-review.d.ts.map +1 -0
- package/dist/push-review.js +72 -0
- package/dist/push-review.js.map +1 -0
- package/dist/push-set.d.ts +126 -0
- package/dist/push-set.d.ts.map +1 -0
- package/dist/push-set.js +289 -0
- package/dist/push-set.js.map +1 -0
- package/dist/push-validation.d.ts +20 -0
- package/dist/push-validation.d.ts.map +1 -0
- package/dist/push-validation.js +70 -0
- package/dist/push-validation.js.map +1 -0
- package/dist/redact.d.ts +9 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +22 -0
- package/dist/redact.js.map +1 -0
- package/dist/review-command.d.ts +44 -0
- package/dist/review-command.d.ts.map +1 -0
- package/dist/review-command.js +348 -0
- package/dist/review-command.js.map +1 -0
- package/package.json +56 -3
- package/templates/c4/diagrams/views.meltemi +16 -0
- package/templates/c4/models/system.meltemi +23 -0
- package/templates/ci/github.yml +96 -0
- package/templates/ci/gitlab.yml +53 -0
- package/templates/flow/diagrams/overview.meltemi +15 -0
- package/templates/free/diagrams/slide.meltemi +39 -0
- package/templates/purchase/diagrams/architecture.meltemi +36 -0
- package/templates/purchase/diagrams/executive.meltemi +52 -0
- package/templates/purchase/diagrams/payment.meltemi +42 -0
- package/templates/purchase/models/commerce.meltemi +30 -0
- package/templates/purchase/stories/purchase.meltemi +38 -0
- package/templates/sequence/diagrams/sign-in.meltemi +36 -0
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
import { plural } from "@meltemi/diagrams-i18n";
|
|
2
|
+
import { pushPullEs } from "./push-pull-es.js";
|
|
3
|
+
/** A count with its word: "1 archivo", "3 archivos". */
|
|
4
|
+
const count = (n, one, other) => `${n} ${plural("es", n, { one, other })}`;
|
|
5
|
+
/** A list of ids or names, or the word for none when it is empty. */
|
|
6
|
+
const listOrNone = (items, none = "ninguno") => items.join(", ") || none;
|
|
7
|
+
const quoted = (ids) => ids.map((id) => `"${id}"`).join(", ");
|
|
8
|
+
/** The verb of a summary by count: "Se revisó 1 archivo", "Se revisaron 3 archivos". */
|
|
9
|
+
const verb = (n, one, other) => (n === 1 ? one : other);
|
|
10
|
+
export const es = {
|
|
11
|
+
help: {
|
|
12
|
+
main: (name, alias) => `Uso: ${name} <comando> [opciones]
|
|
13
|
+
Alias: ${alias}
|
|
14
|
+
|
|
15
|
+
Comandos:
|
|
16
|
+
init [carpeta] Crear un proyecto a partir de una plantilla (--list las muestra)
|
|
17
|
+
validate <ruta>... Comprobar archivos .meltemi y proyectos
|
|
18
|
+
preview [ruta] Servir el catálogo del proyecto y reconstruirlo cuando cambian los
|
|
19
|
+
archivos
|
|
20
|
+
format <ruta>... Reescribir archivos .meltemi y proyectos con el formato canónico
|
|
21
|
+
import <ruta> Importar archivos Mermaid, PlantUML o Markdown a hojas .meltemi
|
|
22
|
+
export <ruta> Dibujar los diagramas, las historias o los perfiles de un archivo o
|
|
23
|
+
de una carpeta
|
|
24
|
+
layout <archivo.meltemi> Organizar los diagramas de un archivo con ELK y escribir las
|
|
25
|
+
posiciones
|
|
26
|
+
convert <archivo.meltemi> Copiar un diagrama de flujo, tal como se dibuja, en un diagrama libre
|
|
27
|
+
nuevo, o escribir su JSON del modelo
|
|
28
|
+
build catalog [ruta] Escribir el catálogo HTML sin conexión de los diagramas y las
|
|
29
|
+
historias de un proyecto
|
|
30
|
+
review [ruta] Listar por id lo que cambió desde una revisión de Git u otra versión
|
|
31
|
+
assist <operación> Ayuda opcional de IA: generate, modify, relations, explain, apply
|
|
32
|
+
assets <subcomando> Listar paquetes de iconos y fuentes, buscar iconos, escribir
|
|
33
|
+
assets.lock.json
|
|
34
|
+
plugins [ruta] Listar los plugins que instala un proyecto, lo que agregan y sus
|
|
35
|
+
problemas
|
|
36
|
+
push [carpeta] Hacer que el proyecto de la nube coincida con la carpeta (--create,
|
|
37
|
+
--force, --check)
|
|
38
|
+
pull [id] [carpeta] Escribir los archivos de un proyecto de la nube en una carpeta
|
|
39
|
+
(--version, --force)
|
|
40
|
+
login Iniciar sesión en el servicio de la nube desde el navegador
|
|
41
|
+
(--no-browser, --token)
|
|
42
|
+
logout Revocar el token de la nube guardado y olvidarlo
|
|
43
|
+
whoami Imprimir el nombre y el handle con los que tienes la sesión iniciada
|
|
44
|
+
publish [carpeta] Publicar el catálogo como una página web del servicio de la nube
|
|
45
|
+
(--unpublish)
|
|
46
|
+
projects Listar tus proyectos de la nube: id, nombre, rol, último cambio
|
|
47
|
+
(--json)
|
|
48
|
+
|
|
49
|
+
Todos los comandos aceptan --lang en|es: el idioma de sus mensajes y de las palabras que agregan
|
|
50
|
+
a los archivos que escriben (si no, el "locale" del proyecto; los mensajes siguen MELTEMI_LANG o
|
|
51
|
+
LANG).
|
|
52
|
+
|
|
53
|
+
Opciones de init:
|
|
54
|
+
--template <nombre> flow (predeterminada), c4, sequence, free o purchase
|
|
55
|
+
--name <nombre> El nombre del proyecto; por defecto, el de la carpeta
|
|
56
|
+
--list Listar las plantillas
|
|
57
|
+
--ci <servicio> Escribir también un flujo de trabajo de CI: github o gitlab
|
|
58
|
+
--cloud Con --ci: el flujo de trabajo también sube a la nube en la rama
|
|
59
|
+
principal
|
|
60
|
+
|
|
61
|
+
Opciones de validate:
|
|
62
|
+
--json Imprimir un objeto JSON con todos los diagnósticos
|
|
63
|
+
--strict Tratar las advertencias como errores para el código de salida
|
|
64
|
+
|
|
65
|
+
Opciones de export:
|
|
66
|
+
--diagram <id> Exportar solo este diagrama
|
|
67
|
+
--scenario <id> Exportar un escenario de los diagramas de secuencia que lo declaran
|
|
68
|
+
--story <id> Una historia en su lugar: su final, el fotograma en --at o su
|
|
69
|
+
reproductor
|
|
70
|
+
--format <nombre> svg (predeterminado), png, pdf, html (el reproductor), mp4, webm o
|
|
71
|
+
gif; PNG, PDF y video usan Edge o Chrome instalado, y el video
|
|
72
|
+
también FFmpeg
|
|
73
|
+
--profile <id> Ejecutar un perfil de exportación del archivo; --profiles los
|
|
74
|
+
ejecuta todos
|
|
75
|
+
--out <ruta> Archivo de salida (una salida) o una carpeta; las salidas de una
|
|
76
|
+
carpeta conservan sus carpetas dentro de ella
|
|
77
|
+
--stdout Imprimir el SVG o el HTML de una salida en vez de escribir un
|
|
78
|
+
archivo
|
|
79
|
+
--theme <nombre> Dibujar con este tema en vez del propio del diagrama
|
|
80
|
+
--fonts <política> Texto de SVG y HTML: embedded (fuentes incrustadas, predeterminado),
|
|
81
|
+
outlined o system
|
|
82
|
+
--motion <modo> Efectos de SVG: static (predeterminado, no se dibujan) o animated
|
|
83
|
+
(CSS)
|
|
84
|
+
--at <tiempo> Escribir el fotograma de ese momento, como 600ms o 1.5s
|
|
85
|
+
--scale <n> Píxeles de PNG por unidad, de 1 a 8 (2 por defecto)
|
|
86
|
+
--size <an>x<al> Tamaño de PNG, PDF y video; la imagen se ajusta y se centra
|
|
87
|
+
(videos: 1920x1080, GIF 960x540 por defecto)
|
|
88
|
+
--fps <n> Fotogramas por segundo del video, de 1 a 60 (30, GIF 15 por
|
|
89
|
+
defecto)
|
|
90
|
+
--duration <tiempo> Duración del video; por defecto, la de la historia o el final de
|
|
91
|
+
los efectos
|
|
92
|
+
--background <color> transparent, un token de color o un color CSS (no para HTML)
|
|
93
|
+
--link <url> Toda la imagen enlaza a esta URL (SVG y PDF)
|
|
94
|
+
--embed Con --format html, un fragmento para pegar en una página
|
|
95
|
+
|
|
96
|
+
Opciones de layout:
|
|
97
|
+
--diagram <id> Organizar solo este diagrama
|
|
98
|
+
--all Organizar de nuevo cada elemento; sin esta opción solo se mueven
|
|
99
|
+
los elementos sin colocar
|
|
100
|
+
--check No escribir nada; listar los diagramas que cambiarían (sale con 1
|
|
101
|
+
si hay alguno)
|
|
102
|
+
--stdout Imprimir el texto organizado en vez de escribir el archivo
|
|
103
|
+
|
|
104
|
+
Opciones de convert:
|
|
105
|
+
--to free|json free: copiar un diagrama de flujo en uno libre; json: escribir el
|
|
106
|
+
JSON del modelo (<nombre>.model.json junto al archivo, el formato
|
|
107
|
+
de intercambio)
|
|
108
|
+
--out <archivo> Con --to json, escribir el JSON aquí
|
|
109
|
+
--diagram <id> El diagrama de flujo que copiar; necesario cuando el archivo tiene
|
|
110
|
+
varios
|
|
111
|
+
--id <id> Id de la copia; <diagrama>_free por defecto
|
|
112
|
+
--check No escribir nada; decir lo que se agregaría (sale con 1)
|
|
113
|
+
--stdout Imprimir el texto convertido en vez de escribir el archivo
|
|
114
|
+
|
|
115
|
+
Opciones de format:
|
|
116
|
+
--check No escribir nada; listar los archivos que cambiarían (sale con 1
|
|
117
|
+
si hay alguno)
|
|
118
|
+
--stdout Imprimir el texto formateado de un archivo en vez de escribirlo
|
|
119
|
+
|
|
120
|
+
Opciones de import:
|
|
121
|
+
--from <formato> mermaid, plantuml o markdown, cuando la extensión no lo dice
|
|
122
|
+
--out <archivo> Escribir la hoja aquí en vez de <nombre>.meltemi junto al archivo
|
|
123
|
+
de origen
|
|
124
|
+
--force Reemplazar una hoja que existe
|
|
125
|
+
--merge Volver a importar en una hoja que existe, conservando su
|
|
126
|
+
colocación y sus estilos
|
|
127
|
+
--check No escribir nada; informar de lo que haría la importación
|
|
128
|
+
--json Imprimir un objeto JSON con el resultado
|
|
129
|
+
|
|
130
|
+
Opciones de build catalog:
|
|
131
|
+
--out <ruta> Una carpeta (para index.html) o un archivo .html; catalog/ por
|
|
132
|
+
defecto
|
|
133
|
+
--title <texto> El título del catálogo en vez del nombre del proyecto
|
|
134
|
+
--source Incluir el texto de cada archivo catalogado (con sus comentarios)
|
|
135
|
+
|
|
136
|
+
Opciones de preview:
|
|
137
|
+
--port <n> El puerto, 4317 por defecto; 0 elige uno libre
|
|
138
|
+
--open Abrir la vista previa en el navegador predeterminado
|
|
139
|
+
|
|
140
|
+
Opciones de review:
|
|
141
|
+
--base <revisión> La versión anterior, de Git (HEAD por defecto); cloud, o cloud:<n>
|
|
142
|
+
para los archivos del proyecto de la nube ahora, o su versión n
|
|
143
|
+
--before <ruta> La versión anterior, de otra carpeta u otro archivo
|
|
144
|
+
--project <id> Con --base cloud: el proyecto de la nube, en vez del del manifiesto
|
|
145
|
+
--host <url> Con --base cloud: el servicio, como en login
|
|
146
|
+
--out <carpeta> Escribir index.html con imágenes de antes y después de los
|
|
147
|
+
diagramas cambiados
|
|
148
|
+
--json Imprimir un objeto JSON
|
|
149
|
+
--exit-code Salir con 1 cuando algo cambió
|
|
150
|
+
|
|
151
|
+
Opciones de push:
|
|
152
|
+
--create Crear un proyecto nuevo en la nube con la carpeta y anotarlo en
|
|
153
|
+
project.json
|
|
154
|
+
--name <nombre> Con --create, el nombre del proyecto; el de project.json por defecto
|
|
155
|
+
--project <id> El proyecto de la nube, en vez del ajuste "cloud" de project.json
|
|
156
|
+
--force Sobrescribir sin preguntar lo que difiere en la nube
|
|
157
|
+
--check No escribir nada; listar lo que difiere (sale con 1 si algo difiere)
|
|
158
|
+
--strict No enviar si la validación encuentra errores
|
|
159
|
+
--host <url> El servicio, como en login
|
|
160
|
+
|
|
161
|
+
Opciones de pull:
|
|
162
|
+
--version <n> Traer esta versión del proyecto en vez de sus últimos archivos
|
|
163
|
+
--force Sobrescribir los archivos que difieren en la carpeta
|
|
164
|
+
--host <url> El servicio, como en login
|
|
165
|
+
|
|
166
|
+
Opciones de login:
|
|
167
|
+
--host <url> El servicio: MELTEMI_HOST, si no https://diagrams.meltemi.dev
|
|
168
|
+
--no-browser Imprimir la dirección de aprobación en vez de abrirla
|
|
169
|
+
--token Leer un token de API de la entrada estándar en vez de usar el
|
|
170
|
+
navegador
|
|
171
|
+
|
|
172
|
+
Opciones de logout y whoami:
|
|
173
|
+
--host <url> El servicio, como en login
|
|
174
|
+
|
|
175
|
+
Opciones de publish:
|
|
176
|
+
--slug <nombre> El nombre de la página en su dirección; por defecto, el del proyecto
|
|
177
|
+
--handle <nombre> El handle con el que empieza la dirección; hace falta en la primera
|
|
178
|
+
publicación
|
|
179
|
+
--unpublish Quitar la página que nombra --slug en vez de publicarla
|
|
180
|
+
--project <id> El proyecto de la nube, en vez del cloud.project del manifiesto
|
|
181
|
+
--host <url> El servicio, como en login
|
|
182
|
+
--force Subir la carpeta sin preguntar cuando difiere del proyecto de la nube
|
|
183
|
+
--strict No publicar nada mientras el proyecto tenga errores
|
|
184
|
+
|
|
185
|
+
Opciones de projects:
|
|
186
|
+
--json Imprimir un objeto JSON
|
|
187
|
+
--host <url> El servicio, como en login
|
|
188
|
+
|
|
189
|
+
Operaciones de assist (ver assist --help):
|
|
190
|
+
generate <archivo> Una hoja nueva a partir de --prompt
|
|
191
|
+
modify <archivo> Cambios como pide --prompt, como una propuesta que aceptar en parte
|
|
192
|
+
relations <archivo> Relaciones que probablemente faltan, marcadas como suposiciones
|
|
193
|
+
explain [ruta] Lo que cambió desde una revisión de Git, explicado
|
|
194
|
+
apply <propuesta> Aplicar puntos de una propuesta guardada
|
|
195
|
+
|
|
196
|
+
Subcomandos de assets:
|
|
197
|
+
list [ruta] Paquetes de iconos, alias y fuentes con versiones, orígenes y
|
|
198
|
+
licencias
|
|
199
|
+
icons <palabras> Referencias de iconos que coinciden con cada palabra (--project
|
|
200
|
+
<ruta>, --limit <n>)
|
|
201
|
+
lock [ruta] Escribir assets.lock.json en la raíz del proyecto
|
|
202
|
+
|
|
203
|
+
Opciones:
|
|
204
|
+
-h, --help Mostrar esta ayuda
|
|
205
|
+
-v, --version Mostrar la versión
|
|
206
|
+
|
|
207
|
+
Códigos de salida: 0 sin errores, 1 errores encontrados, 2 error de uso o ruta ilegible. Para
|
|
208
|
+
import: 0 completa, 1 parcial, 2 error de uso, entrada no admitida o una hoja que existe. Para los
|
|
209
|
+
comandos de la nube: 3 sin sesión iniciada, o el servicio rechazó el token (ejecuta login).
|
|
210
|
+
`,
|
|
211
|
+
init: (templates) => `Uso: init [carpeta] [opciones]
|
|
212
|
+
|
|
213
|
+
Crea un proyecto en la carpeta (por defecto, la carpeta de trabajo): project.json y las hojas de
|
|
214
|
+
una plantilla. No se reemplaza nada que exista.
|
|
215
|
+
|
|
216
|
+
Opciones:
|
|
217
|
+
--template <nombre> ${templates} (flow por defecto)
|
|
218
|
+
--name <nombre> El nombre del proyecto; por defecto, el de la carpeta
|
|
219
|
+
--list Listar las plantillas
|
|
220
|
+
--ci <servicio> Escribir también un flujo de trabajo de CI que valida, revisa las pull
|
|
221
|
+
requests y construye el catálogo: github o gitlab. En un proyecto que
|
|
222
|
+
ya existe, solo el flujo de trabajo.
|
|
223
|
+
--cloud Con --ci: el flujo de trabajo también tiene un trabajo que sube el
|
|
224
|
+
proyecto al servicio de la nube en la rama principal, con --force
|
|
225
|
+
--strict (la CI no puede responder a una pregunta). El token es el
|
|
226
|
+
secreto de la CI MELTEMI_TOKEN; nunca se escribe en el archivo.
|
|
227
|
+
`,
|
|
228
|
+
import: `Uso: import <archivo o carpeta> [opciones]
|
|
229
|
+
|
|
230
|
+
Importa un archivo Mermaid (.mmd, .mermaid), PlantUML (.puml, .plantuml, .pu, .iuml, .wsd) o
|
|
231
|
+
Markdown (.md) a una hoja .meltemi a su lado. Una carpeta importa todos esos archivos que hay
|
|
232
|
+
dentro de ella (los archivos .iuml de PlantUML se leen a través de los archivos que los
|
|
233
|
+
incluyen; los archivos Markdown sin diagramas se pasan por alto). Los archivos de origen nunca
|
|
234
|
+
se modifican.
|
|
235
|
+
|
|
236
|
+
Opciones:
|
|
237
|
+
--from <formato> mermaid, plantuml o markdown, cuando la extensión no lo dice (un archivo)
|
|
238
|
+
--out <ruta> Un archivo: escribir la hoja aquí. Una carpeta: escribir las hojas dentro
|
|
239
|
+
de esta carpeta, conservando las carpetas de los archivos de origen
|
|
240
|
+
--force Reemplazar las hojas que existen
|
|
241
|
+
--merge Volver a importar en las hojas que existen, conservando su colocación y
|
|
242
|
+
sus estilos
|
|
243
|
+
--check No escribir nada; informar de lo que haría la importación
|
|
244
|
+
--json Imprimir un objeto JSON con el resultado
|
|
245
|
+
|
|
246
|
+
Códigos de salida: 0 completa, 1 parcial (no se importó algo esencial), 2 error de uso, entrada
|
|
247
|
+
ilegible o no admitida, o una hoja que existe sin --force ni --merge.
|
|
248
|
+
`,
|
|
249
|
+
review: `Uso: review [ruta] [opciones]
|
|
250
|
+
|
|
251
|
+
Compara dos versiones de un proyecto, una carpeta o un archivo (por defecto, la carpeta de
|
|
252
|
+
trabajo) y lista por id lo que cambió: diagramas, elementos, relaciones, entidades, historias,
|
|
253
|
+
escenas, temas y perfiles de exportación. Un id cambiado cuyo elemento conservó su tipo,
|
|
254
|
+
etiqueta, posición o relaciones es un cambio de nombre, no una eliminación y una adición.
|
|
255
|
+
|
|
256
|
+
Opciones:
|
|
257
|
+
--base <revisión> La versión anterior: un commit, una rama o una etiqueta de Git (HEAD por
|
|
258
|
+
defecto); o el proyecto de la nube: cloud para sus archivos ahora,
|
|
259
|
+
cloud:<n> para su versión n
|
|
260
|
+
--before <ruta> La versión anterior: otra carpeta u otro archivo, en vez de Git
|
|
261
|
+
--project <id> Con --base cloud: el proyecto de la nube, en vez del cloud.project del
|
|
262
|
+
manifiesto
|
|
263
|
+
--host <url> Con --base cloud: el servicio (MELTEMI_HOST, si no
|
|
264
|
+
https://diagrams.meltemi.dev)
|
|
265
|
+
--out <carpeta> Escribir index.html y las imágenes de antes y después de cada diagrama
|
|
266
|
+
cambiado
|
|
267
|
+
--json Imprimir un objeto JSON
|
|
268
|
+
--exit-code Salir con 1 cuando algo cambió
|
|
269
|
+
|
|
270
|
+
Códigos de salida: 0 comparado, 1 cambios con --exit-code, o no se puede leer el proyecto de la
|
|
271
|
+
nube, 2 error de uso o versiones ilegibles, 3 sin sesión iniciada (--base cloud).
|
|
272
|
+
`,
|
|
273
|
+
assets: `Uso: assets <subcomando>
|
|
274
|
+
|
|
275
|
+
Subcomandos:
|
|
276
|
+
list [ruta] Paquetes de iconos, alias y fuentes del proyecto, con sus
|
|
277
|
+
licencias
|
|
278
|
+
icons <consulta> [--project <p>] Referencias de iconos cuyo nombre o marcas contienen cada
|
|
279
|
+
palabra (--limit <n>, 50 por defecto)
|
|
280
|
+
lock [ruta] Escribir assets.lock.json con versiones, licencias y hashes
|
|
281
|
+
`,
|
|
282
|
+
plugins: `Uso: plugins [ruta] [--json]
|
|
283
|
+
|
|
284
|
+
Lista los plugins que instala el proyecto que contiene la ruta (por defecto, la carpeta de
|
|
285
|
+
trabajo): sus versiones, los permisos concedidos, los tipos de diagrama y los paquetes de iconos
|
|
286
|
+
que aportan, su licencia y su origen, y sus problemas. Los plugins son datos; su código nunca se
|
|
287
|
+
ejecuta.
|
|
288
|
+
`,
|
|
289
|
+
build: `Uso: build catalog [ruta] [opciones]
|
|
290
|
+
|
|
291
|
+
Escribe el catálogo HTML sin conexión del proyecto que contiene la ruta (por defecto, la carpeta
|
|
292
|
+
de trabajo): sus diagramas e historias por carpeta, con el reproductor, la búsqueda y los
|
|
293
|
+
enlaces, en un solo archivo.
|
|
294
|
+
|
|
295
|
+
Opciones:
|
|
296
|
+
--out <ruta> Una carpeta (que recibe index.html) o un archivo .html; por defecto,
|
|
297
|
+
catalog.out del proyecto o catalog/ en la raíz del proyecto
|
|
298
|
+
--title <texto> El título del catálogo en vez de catalog.title o el nombre del proyecto
|
|
299
|
+
--source Incluir el texto de cada archivo catalogado (con sus comentarios)
|
|
300
|
+
`,
|
|
301
|
+
preview: `Uso: preview [ruta] [opciones]
|
|
302
|
+
|
|
303
|
+
Sirve el catálogo del proyecto que contiene la ruta (por defecto, la carpeta de trabajo) en
|
|
304
|
+
http://127.0.0.1:4317/ y lo vuelve a construir cada vez que cambia un archivo de origen,
|
|
305
|
+
project.json o un recurso; las páginas abiertas se recargan donde estaban. Un archivo se abre en
|
|
306
|
+
su primer diagrama. Ctrl+C la detiene.
|
|
307
|
+
|
|
308
|
+
Opciones:
|
|
309
|
+
--port <n> El puerto, 4317 por defecto; 0 elige uno libre
|
|
310
|
+
--open Abrir la vista previa en el navegador predeterminado
|
|
311
|
+
`,
|
|
312
|
+
assist: `Uso: assist <operación> [ruta] [opciones]
|
|
313
|
+
|
|
314
|
+
Asistencia opcional de IA (decisión 0029). Cada respuesta se convierte en una propuesta de
|
|
315
|
+
bloques completos, comprobada contra el proyecto, que aceptas en parte o por completo; no se
|
|
316
|
+
escribe nada sin --apply. Lo que envía una solicitud se lista primero y necesita tu sí, o --yes.
|
|
317
|
+
|
|
318
|
+
Operaciones:
|
|
319
|
+
generate <archivo> Escribir una hoja nueva a partir de --prompt
|
|
320
|
+
modify <archivo> Cambiar una hoja como pide --prompt
|
|
321
|
+
relations <archivo> Sugerir relaciones que probablemente faltan, marcadas como suposiciones
|
|
322
|
+
explain [ruta] Explicar lo que cambió desde una revisión de Git u otra versión
|
|
323
|
+
apply <propuesta> Aplicar puntos de una propuesta guardada (--items 1,3; todos por defecto)
|
|
324
|
+
|
|
325
|
+
Opciones:
|
|
326
|
+
--prompt <texto> Qué hacer (generate, modify; un foco opcional para relations)
|
|
327
|
+
--profile <nombre> generate: flow, c4, sequence o free
|
|
328
|
+
--block <bloque> relations: un bloque, como "diagram checkout"
|
|
329
|
+
--save <archivo> Guardar la propuesta como JSON, para aplicarla después
|
|
330
|
+
--apply <puntos> Aplicar la propuesta en el acto: all, o una lista como 1,3
|
|
331
|
+
--items <puntos> apply: los puntos que aplicar (todos por defecto)
|
|
332
|
+
--base <revisión> explain: la versión anterior, de Git (HEAD por defecto)
|
|
333
|
+
--before <ruta> explain: la versión anterior, de otra carpeta u otro archivo
|
|
334
|
+
--provider <nombre> anthropic u openai-compatible (o MELTEMI_AI_PROVIDER)
|
|
335
|
+
--model <nombre> El modelo (o MELTEMI_AI_MODEL; claude-opus-5-5 para Anthropic)
|
|
336
|
+
--base-url <url> El punto de conexión (o MELTEMI_AI_BASE_URL), como
|
|
337
|
+
http://127.0.0.1:11434/v1
|
|
338
|
+
--yes Enviar sin preguntar; lo que se envía se lista igualmente
|
|
339
|
+
--json Imprimir la propuesta como JSON
|
|
340
|
+
|
|
341
|
+
Las claves solo vienen del entorno: ANTHROPIC_API_KEY o MELTEMI_AI_API_KEY. La validación, la
|
|
342
|
+
disposición y la exportación nunca usan la asistencia.
|
|
343
|
+
|
|
344
|
+
Códigos de salida: 0 hecho, 1 una propuesta que no se puede aplicar o un error del proveedor,
|
|
345
|
+
2 error de uso o nada enviado.
|
|
346
|
+
`,
|
|
347
|
+
push: pushPullEs.help.push,
|
|
348
|
+
pull: pushPullEs.help.pull,
|
|
349
|
+
login: `Uso: login [opciones]
|
|
350
|
+
|
|
351
|
+
Inicia sesión en el servicio de la nube. El navegador se abre en la página de aprobación del
|
|
352
|
+
servicio; el código de un solo uso que devuelve llega solo a este equipo (127.0.0.1, un puerto al
|
|
353
|
+
azar) y se cambia por un token de API, que se guarda en la carpeta de configuración, uno por
|
|
354
|
+
servicio, legible solo por ti donde el sistema tiene esos permisos. Los seis caracteres que se
|
|
355
|
+
imprimen primero son los que muestra la página de aprobación: aprueba la solicitud solo si
|
|
356
|
+
coinciden. MELTEMI_TOKEN en el entorno tiene prioridad sobre el token guardado y sobre este
|
|
357
|
+
comando.
|
|
358
|
+
|
|
359
|
+
Opciones:
|
|
360
|
+
--host <url> El servicio: MELTEMI_HOST, si no https://diagrams.meltemi.dev
|
|
361
|
+
--no-browser Imprimir la dirección de aprobación en vez de abrirla
|
|
362
|
+
--token Leer un token de API de la entrada estándar (nunca de un argumento) en vez de
|
|
363
|
+
usar el navegador: para equipos sin uno
|
|
364
|
+
|
|
365
|
+
Códigos de salida: 0 sesión iniciada, 1 falló o no se guardó nada, 2 error de uso, 3 el servicio
|
|
366
|
+
rechazó el token.
|
|
367
|
+
`,
|
|
368
|
+
logout: `Uso: logout [--host <url>]
|
|
369
|
+
|
|
370
|
+
Revoca el token guardado en el servicio y lo olvida. Un token que el servicio ya no conoce también
|
|
371
|
+
se olvida. Si no se puede llegar al servicio no se olvida nada, para poder revocar el token más
|
|
372
|
+
tarde (o en la página de la cuenta). MELTEMI_TOKEN nunca se revoca ni se cambia.
|
|
373
|
+
|
|
374
|
+
Códigos de salida: 0 sesión cerrada (o nunca iniciada), 1 no se pudo revocar el token, 2 error de
|
|
375
|
+
uso.
|
|
376
|
+
`,
|
|
377
|
+
whoami: `Uso: whoami [--host <url>]
|
|
378
|
+
|
|
379
|
+
Imprime el nombre y el handle a los que pertenece el token, y el servicio con el que se comprobó.
|
|
380
|
+
El token en sí nunca se imprime.
|
|
381
|
+
|
|
382
|
+
Códigos de salida: 0 sesión iniciada, 1 no se pudo llegar al servicio, 2 error de uso, 3 sin sesión
|
|
383
|
+
iniciada o el token fue rechazado.
|
|
384
|
+
`,
|
|
385
|
+
publish: `Uso: publish [carpeta] [opciones]
|
|
386
|
+
|
|
387
|
+
Publica el catálogo del proyecto de la carpeta (por defecto, la carpeta de trabajo) como una página
|
|
388
|
+
web del servicio de la nube: el catálogo que escribe "build catalog", enviado para el proyecto de
|
|
389
|
+
la nube que nombra el "cloud" del manifiesto (o --project). La carpeta se sube primero cuando
|
|
390
|
+
difiere del proyecto de la nube, con la misma pregunta que push. La primera publicación necesita un
|
|
391
|
+
handle, la primera parte de toda dirección que publicas; es público. Da --handle, o responde a la
|
|
392
|
+
pregunta en una terminal. Las páginas publicadas son públicas.
|
|
393
|
+
|
|
394
|
+
Opciones:
|
|
395
|
+
--slug <nombre> El nombre de la página en su dirección: de 1 a 60 letras minúsculas, dígitos
|
|
396
|
+
y guiones (por defecto, el nombre del proyecto, simplificado)
|
|
397
|
+
--handle <nombre> Tu handle: de 3 a 30 letras minúsculas, dígitos y guiones; hace falta una vez
|
|
398
|
+
--unpublish Quitar la página que nombra --slug en vez de publicarla (no se construye nada)
|
|
399
|
+
--project <id> El proyecto de la nube, en vez del cloud.project del manifiesto
|
|
400
|
+
--host <url> El servicio: MELTEMI_HOST, si no https://diagrams.meltemi.dev
|
|
401
|
+
--force Cuando la carpeta difiere del proyecto de la nube, subirla sin preguntar
|
|
402
|
+
--strict No subir ni publicar nada mientras el proyecto tenga errores
|
|
403
|
+
|
|
404
|
+
Códigos de salida: 0 publicado (o quitado), 1 rechazado o falló, 2 error de uso, 3 sin sesión
|
|
405
|
+
iniciada o el token fue rechazado.
|
|
406
|
+
`,
|
|
407
|
+
projects: `Uso: projects [opciones]
|
|
408
|
+
|
|
409
|
+
Lista los proyectos de la nube que puedes abrir: id, nombre, tu rol (propietario, editor o lector)
|
|
410
|
+
y la hora del último cambio, el más reciente primero.
|
|
411
|
+
|
|
412
|
+
Opciones:
|
|
413
|
+
--json Imprimir un objeto JSON: host y projects, cada uno con id, name, description,
|
|
414
|
+
role (owner, editor o viewer) y updated_at
|
|
415
|
+
--host <url> El servicio: MELTEMI_HOST, si no https://diagrams.meltemi.dev
|
|
416
|
+
|
|
417
|
+
Códigos de salida: 0 listado, 1 no se pudo llegar al servicio, 2 error de uso, 3 sin sesión
|
|
418
|
+
iniciada o el token fue rechazado.
|
|
419
|
+
`,
|
|
420
|
+
},
|
|
421
|
+
common: {
|
|
422
|
+
lang: "--lang debe ser en o es.",
|
|
423
|
+
unknownCommand: (name, command) => `${name}: comando desconocido "${command}". Ejecuta "${name} --help".`,
|
|
424
|
+
internalError: (name, message) => `${name}: error interno: ${message}`,
|
|
425
|
+
hint: "pista",
|
|
426
|
+
cannotRead: (path, reason) => `no se puede leer ${path}${reason === undefined ? "" : `: ${reason}`}`,
|
|
427
|
+
cannotWrite: (path, reason) => `no se puede escribir ${path}: ${reason}`,
|
|
428
|
+
pathNotFound: (path) => `no se encuentra la ruta: ${path}`,
|
|
429
|
+
wrote: (path) => `Se escribió ${path}`,
|
|
430
|
+
atLeastOnePath: "indica al menos un archivo o una carpeta.",
|
|
431
|
+
oneMeltemiFile: "indica exactamente un archivo .meltemi.",
|
|
432
|
+
oneProject: "indica una carpeta de proyecto o un archivo.",
|
|
433
|
+
oneProjectFolderOrFile: "indica una carpeta de proyecto, una carpeta o un archivo.",
|
|
434
|
+
cannotCombine: (first, second) => `${first} no se puede combinar con ${second}.`,
|
|
435
|
+
noDiagram: (id, path, available) => `no hay ningún diagrama llamado "${id}" en ${path}; disponibles: ${listOrNone(available)}.`,
|
|
436
|
+
arguments: {
|
|
437
|
+
unknownOption: (_message, name) => `la opción ${name} no existe; para dar un argumento que empieza por -, escríbelo al final del comando, después de --.`,
|
|
438
|
+
missingValue: (_message, name) => `falta el valor de ${name}.`,
|
|
439
|
+
noValue: (_message, name) => `${name} no lleva valor.`,
|
|
440
|
+
ambiguous: (_message, name) => `el valor de ${name} es ambiguo; para dar un valor que empieza por un guion, escribe ${name}=-XYZ.`,
|
|
441
|
+
unexpected: (_message, name) => `argumento inesperado "${name}": este comando no lleva argumentos posicionales.`,
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
validate: {
|
|
445
|
+
summary: (files, errors, warnings) => `${verb(files, "Se revisó", "Se revisaron")} ${count(files, "archivo", "archivos")}: ${count(errors, "error", "errores")}, ${count(warnings, "advertencia", "advertencias")}.`,
|
|
446
|
+
},
|
|
447
|
+
layout: {
|
|
448
|
+
sequence: (id) => `"${id}" es un diagrama de secuencia, que no tiene posiciones que escribir.`,
|
|
449
|
+
cannotWrite: (id, reason) => `no se pueden escribir las posiciones de "${id}": ${reason}`,
|
|
450
|
+
unchanged: (path) => `${path}: todas las posiciones ya están escritas.`,
|
|
451
|
+
wouldArrange: (ids, path) => `${verb(ids.length, "Se organizaría", "Se organizarían")} ${quoted(ids)} en ${path}`,
|
|
452
|
+
arranged: (ids, path) => `${verb(ids.length, "Se organizó", "Se organizaron")} ${quoted(ids)} en ${path}`,
|
|
453
|
+
},
|
|
454
|
+
convert: {
|
|
455
|
+
giveTo: "indica --to free (un diagrama de flujo copiado en uno libre) o --to json.",
|
|
456
|
+
outWithJson: "--out va con --to json; las copias libres se escriben en el mismo archivo.",
|
|
457
|
+
noFlowDiagram: (id, path, available) => `no hay ningún diagrama de flujo llamado "${id}" en ${path}; diagramas de flujo: ${listOrNone(available)}.`,
|
|
458
|
+
noFlow: (path) => `${path} no tiene ningún diagrama de flujo.`,
|
|
459
|
+
severalFlows: (path, ids) => `${path} tiene ${ids.length} diagramas de flujo (${ids.join(", ")}); elige uno con --diagram.`,
|
|
460
|
+
cannotDraw: (id) => `"${id}" no se puede dibujar, así que no se puede copiar.`,
|
|
461
|
+
wouldConvert: (id, copy, path) => `Se convertiría "${id}" en "${copy}" en ${path}`,
|
|
462
|
+
converted: (id, copy, path) => `Se convirtió "${id}" en "${copy}" en ${path}`,
|
|
463
|
+
notForJson: (option) => `${option} no se aplica a --to json.`,
|
|
464
|
+
wroteJson: (source, target, ok) => `Se escribió el JSON del modelo de ${source} en ${target}${ok ? "" : " (con errores; ver los diagnósticos)"}`,
|
|
465
|
+
},
|
|
466
|
+
format: {
|
|
467
|
+
stdoutOne: "--stdout formatea exactamente un archivo y no se puede combinar con --check.",
|
|
468
|
+
stdoutOneFile: "--stdout formatea exactamente un archivo.",
|
|
469
|
+
syntaxErrors: "El archivo tiene errores de sintaxis y no se formateó.",
|
|
470
|
+
wouldFormat: (path) => `Se formatearía ${path}`,
|
|
471
|
+
formatted: (path) => `Se formateó ${path}`,
|
|
472
|
+
checkedAll: (files) => `${verb(files, "Se revisó", "Se revisaron")} ${count(files, "archivo", "archivos")}: ${verb(files, "ya está formateado", "todos están formateados")}.`,
|
|
473
|
+
checked: (files, changed, refused) => `${verb(files, "Se revisó", "Se revisaron")} ${count(files, "archivo", "archivos")}: ${changed} ${verb(changed, "se formatearía", "se formatearían")}, ${count(refused, "rechazado", "rechazados")}.`,
|
|
474
|
+
summary: (changed, files) => `${verb(changed, "Se formateó", "Se formatearon")} ${changed} de ${count(files, "archivo", "archivos")}.`,
|
|
475
|
+
},
|
|
476
|
+
export: {
|
|
477
|
+
wroteViews: (path, views) => `Se escribió ${path} (${views} vistas)`,
|
|
478
|
+
wrotePicture: (path, browser) => `Se escribió ${path} (${browser})`,
|
|
479
|
+
wroteVideo: (path, browser, ffmpeg, frames) => `Se escribió ${path} (${browser}, FFmpeg ${ffmpeg}, ${count(frames, "fotograma", "fotogramas")})`,
|
|
480
|
+
noDiagram: (types) => types.length === 0
|
|
481
|
+
? "No hay ningún diagrama que exportar."
|
|
482
|
+
: types.length === 1
|
|
483
|
+
? `No hay ningún diagrama que exportar; \`${types[0]}\` no es un tipo de diagrama del lenguaje.`
|
|
484
|
+
: `No hay ningún diagrama que exportar; \`${types.join("`, `")}\` no son tipos de diagrama del lenguaje.`,
|
|
485
|
+
noDiagramStoriesHint: "Exporta una historia con `--story <id>`, o los perfiles del archivo con `--profiles`.",
|
|
486
|
+
noDiagramTypesHint: "Se dibujan los diagramas `diagram <id>: flow { ... }`, `free`, `sequence` y `c4`.",
|
|
487
|
+
onePath: "indica exactamente un archivo .meltemi o una carpeta de proyecto.",
|
|
488
|
+
profileOrProfiles: "--profile ejecuta un perfil y --profiles todos; elige uno.",
|
|
489
|
+
profileOption: (option) => `los perfiles fijan sus propias opciones; ${option} no va con --profile ni con --profiles.`,
|
|
490
|
+
profilesOut: "con perfiles, --out es una carpeta que ya existe para sus archivos.",
|
|
491
|
+
format: (format, formats) => `el formato "${format}" no se admite; usa ${formats.join(", ")}.`,
|
|
492
|
+
fonts: (fonts, policies) => `--fonts debe ser uno de ${policies.join(", ")}, no "${fonts}".`,
|
|
493
|
+
motion: (motion, modes) => `--motion debe ser uno de ${modes.join(", ")}, no "${motion}".`,
|
|
494
|
+
at: (at) => `--at lleva un tiempo como 600ms o 1.5s, no "${at}".`,
|
|
495
|
+
atAnimated: "--at escribe un fotograma; no se puede combinar con --motion animated.",
|
|
496
|
+
story: (option) => `--story escribe un fotograma de una historia; no se puede combinar con ${option}.`,
|
|
497
|
+
html: (option) => `--format html escribe un reproductor; no se puede combinar con ${option}.`,
|
|
498
|
+
embed: "--embed escribe un fragmento de reproductor; necesita --format html.",
|
|
499
|
+
picture: (format) => `--format ${format} escribe una imagen; no se puede combinar con --motion animated.`,
|
|
500
|
+
video: (format, option) => `--format ${format} escribe un video; no se puede combinar con ${option}.`,
|
|
501
|
+
stdoutFile: (format) => `--format ${format} escribe un archivo; --stdout solo imprime formatos de texto.`,
|
|
502
|
+
fpsVideo: "--fps fija los fotogramas por segundo de las exportaciones MP4, WebM y GIF.",
|
|
503
|
+
fps: (fps) => `--fps lleva un número entero de 1 a 60, no "${fps}".`,
|
|
504
|
+
durationVideo: "--duration fija la duración de las exportaciones MP4, WebM y GIF.",
|
|
505
|
+
duration: (duration) => `--duration lleva un tiempo de hasta 600s, como 5s, no "${duration}".`,
|
|
506
|
+
scalePng: "--scale fija los píxeles de las exportaciones PNG.",
|
|
507
|
+
scale: (scale) => `--scale lleva un valor de 1 a 8, no "${scale}".`,
|
|
508
|
+
sizeOutput: "--size fija el tamaño de las exportaciones PNG, PDF y de video.",
|
|
509
|
+
size: (max, size) => `--size lleva ANCHOxALTO de 16 a ${max}, como 1920x1080, no "${size}".`,
|
|
510
|
+
backgroundHtml: "--background no se aplica a los reproductores HTML.",
|
|
511
|
+
background: (background) => `--background lleva transparent, un token de color o un color CSS, no "${background}".`,
|
|
512
|
+
mp4Transparent: "MP4 no admite transparencia; elige un color, o --format webm.",
|
|
513
|
+
linkFormats: "--link se aplica a las exportaciones SVG y PDF.",
|
|
514
|
+
link: (link) => `--link lleva una URL https:, http: o mailto:, o una relativa, no "${link}".`,
|
|
515
|
+
oneFile: (option) => `${option} funciona con un archivo; indica un archivo .meltemi, no una carpeta.`,
|
|
516
|
+
noProfiles: (path) => `${path} no tiene perfiles de exportación.`,
|
|
517
|
+
noProfile: (id, path, available) => `no hay ningún perfil llamado "${id}" en ${path}; disponibles: ${listOrNone(available)}.`,
|
|
518
|
+
noStory: (id, path, available) => `no hay ninguna historia llamada "${id}" en ${path}; disponibles: ${listOrNone(available, "ninguna")}.`,
|
|
519
|
+
noScenario: (id, path, available) => `no hay ningún escenario llamado "${id}" en ${path}; disponibles: ${listOrNone(available)}.`,
|
|
520
|
+
stdoutOne: "--stdout imprime un diagrama; elígelo con --diagram.",
|
|
521
|
+
severalDiagrams: (path, diagrams) => `${path} tiene ${diagrams} diagramas; --out debe ser una carpeta que ya existe o --diagram debe elegir uno.`,
|
|
522
|
+
noFiles: (folder) => `${folder} no tiene archivos .meltemi.`,
|
|
523
|
+
noFileWithProfile: (folder, id) => `ningún archivo de ${folder} tiene un perfil llamado "${id}".`,
|
|
524
|
+
},
|
|
525
|
+
import: {
|
|
526
|
+
oneSource: "indica exactamente un archivo o una carpeta que importar.",
|
|
527
|
+
from: (from, formats) => `--from debe ser ${formats.join(", ")}, no "${from}".`,
|
|
528
|
+
forceAndMerge: "--force y --merge no se pueden combinar.",
|
|
529
|
+
fromInFolder: "--from se aplica a un archivo; en una carpeta, la extensión de cada archivo dice su formato.",
|
|
530
|
+
noSources: (folder) => `${folder} no tiene archivos Mermaid, PlantUML ni Markdown.`,
|
|
531
|
+
replacesSource: "la salida reemplazaría el archivo de origen.",
|
|
532
|
+
exists: (path) => `${path} ya existe; pasa --merge para volver a importarlo conservando sus ajustes, o --force para reemplazarlo.`,
|
|
533
|
+
nothing: (source) => `no se importó nada de ${source}.`,
|
|
534
|
+
status: { complete: "completa", partial: "parcial", failed: "fallida" },
|
|
535
|
+
coverage: (diagram, mapped, approximated, dropped) => `${diagram}: ${count(mapped, "convertido", "convertidos")}, ${count(approximated, "aproximado", "aproximados")}, ${count(dropped, "omitido", "omitidos")}`,
|
|
536
|
+
wouldImport: (source, out, status) => `Se importaría ${source} → ${out} (${status})`,
|
|
537
|
+
imported: (source, out, status, merged) => `Se importó ${source} → ${out} (${status}${merged ? ", fusionada" : ""})`,
|
|
538
|
+
folder: {
|
|
539
|
+
complete: (n) => count(n, "completo", "completos"),
|
|
540
|
+
partial: (n) => count(n, "parcial", "parciales"),
|
|
541
|
+
failed: (n) => count(n, "fallido", "fallidos"),
|
|
542
|
+
notReplaced: (n) => count(n, "no reemplazado", "no reemplazados"),
|
|
543
|
+
withoutDiagrams: (n) => `${n} sin diagramas`,
|
|
544
|
+
},
|
|
545
|
+
folderSummary: (check, files, folder, parts) => `${check ? verb(files, "Se importaría", "Se importarían") : verb(files, "Se importó", "Se importaron")} ${count(files, "archivo", "archivos")} de ${folder}: ${parts.join(", ")}`,
|
|
546
|
+
},
|
|
547
|
+
init: {
|
|
548
|
+
templates: {
|
|
549
|
+
flow: "Un diagrama de flujo para empezar",
|
|
550
|
+
c4: "Un modelo de arquitectura con una vista de contexto y una vista de contenedores",
|
|
551
|
+
sequence: "Un diagrama de secuencia con un escenario para cada resultado",
|
|
552
|
+
free: "Una diapositiva compuesta libremente: texto, cajas, un icono y un grupo",
|
|
553
|
+
purchase: "El ejemplo de referencia: un modelo, sus vistas C4, una secuencia de pago, una diapositiva ejecutiva, una historia animada y perfiles de exportación",
|
|
554
|
+
},
|
|
555
|
+
exists: (path) => `${path} ya existe; no se reemplaza.`,
|
|
556
|
+
gitlab: `.gitlab-ci.yml ya existe; agrega el trabajo con:\n include:\n - local: .gitlab/meltemi-diagrams.yml\n`,
|
|
557
|
+
oneFolder: "indica una carpeta.",
|
|
558
|
+
noTemplate: (template, templates) => `no hay ninguna plantilla llamada "${template}"; usa ${templates.join(", ")}.`,
|
|
559
|
+
ci: (ci, services) => `--ci lleva ${services.join(" o ")}, no "${ci}".`,
|
|
560
|
+
cloudNeedsCi: (services) => `--cloud agrega un trabajo al flujo de trabajo de CI; da --ci ${services.join(" o ")} con él.`,
|
|
561
|
+
cloudNote: (secret) => `El flujo de trabajo sube a la nube en la rama principal con --force --strict, porque la CI no puede responder a una pregunta. Agrega ${secret} a los secretos de la CI: crea el token en la página, en Tokens de API del menú de la cuenta.`,
|
|
562
|
+
name: "--name necesita algo de texto.",
|
|
563
|
+
notAFolder: (path) => `${path} es un archivo, no una carpeta.`,
|
|
564
|
+
alreadyAProject: (path) => `${path} ya es un proyecto; --ci le agrega un flujo de trabajo.`,
|
|
565
|
+
clash: (path) => `${path} ya existe; no se escribió nada.`,
|
|
566
|
+
created: (path) => `Se creó ${path}`,
|
|
567
|
+
next: "Siguientes pasos:",
|
|
568
|
+
},
|
|
569
|
+
assets: {
|
|
570
|
+
unknownSubcommand: (subcommand) => `subcomando desconocido "${subcommand}"; usa list, icons o lock.`,
|
|
571
|
+
noLicence: "sin licencia",
|
|
572
|
+
icons: (n) => count(n, "icono", "iconos"),
|
|
573
|
+
noRedistribution: "redistribuir: no",
|
|
574
|
+
noEmbedding: "incrustar: no",
|
|
575
|
+
packs: "Paquetes de iconos:",
|
|
576
|
+
aliases: "Alias:",
|
|
577
|
+
fonts: "Fuentes:",
|
|
578
|
+
noWords: "indica las palabras que buscar.",
|
|
579
|
+
limit: "--limit debe ser un número entero positivo.",
|
|
580
|
+
noMatch: (query) => `Ningún icono coincide con "${query}".`,
|
|
581
|
+
},
|
|
582
|
+
plugins: {
|
|
583
|
+
none: "El proyecto no instala ningún plugin.",
|
|
584
|
+
notLoaded: (name, version) => `${name} ${version} — no se cargó (ver los problemas más abajo)`,
|
|
585
|
+
from: (homepage) => ` de ${homepage}`,
|
|
586
|
+
folder: (path, granted) => ` carpeta ${path}; concedido: ${granted.join(", ") || "nada"}`,
|
|
587
|
+
type: (type, title, kinds) => ` tipo de diagrama ${type} (${title}): ${kinds.join(", ")}`,
|
|
588
|
+
icons: (name) => ` paquete de iconos ${name}`,
|
|
589
|
+
},
|
|
590
|
+
build: {
|
|
591
|
+
unknownTarget: (target) => `objetivo desconocido "${target}"; el único es catalog.`,
|
|
592
|
+
title: "--title necesita algo de texto.",
|
|
593
|
+
skipped: (entry, reason) => `se omitió ${entry}: ${reason}.`,
|
|
594
|
+
warning: (warning) => `advertencia: ${warning}`,
|
|
595
|
+
empty: (root) => `${root} no tiene ningún diagrama ni historia que catalogar.`,
|
|
596
|
+
diagrams: (n) => count(n, "diagrama", "diagramas"),
|
|
597
|
+
stories: (n) => count(n, "historia", "historias"),
|
|
598
|
+
entities: (n) => count(n, "entidad", "entidades"),
|
|
599
|
+
wrote: (path, parts, size) => `Se escribió ${path} (${parts.join(", ")}; ${size})`,
|
|
600
|
+
},
|
|
601
|
+
preview: {
|
|
602
|
+
onlyHere: "La vista previa solo responde en esta máquina.",
|
|
603
|
+
notFound: "No se encontró.",
|
|
604
|
+
skipped: (entry, reason) => `Se omitió ${entry}: ${reason}.`,
|
|
605
|
+
built: (diagrams, stories, time) => `Catálogo construido con ${count(diagrams, "diagrama", "diagramas")} y ${count(stories, "historia", "historias")} a las ${time}`,
|
|
606
|
+
port: (port) => `--port lleva un número entero de 0 a 65535, no "${port}".`,
|
|
607
|
+
serving: (url) => `Vista previa en ${url} (Ctrl+C para detenerla)`,
|
|
608
|
+
portInUse: (port) => `el puerto ${port} está en uso; elige otro con --port.`,
|
|
609
|
+
},
|
|
610
|
+
review: {
|
|
611
|
+
baseOrBefore: "--base toma la versión anterior de Git y --before de una ruta; elige una.",
|
|
612
|
+
sameKinds: "--before y la ruta deben ser dos carpetas o dos archivos.",
|
|
613
|
+
comparedPaths: (before, after) => `Comparación de ${before} con ${after}`,
|
|
614
|
+
comparedRevision: (revision) => `Comparación de ${revision} con el árbol de trabajo`,
|
|
615
|
+
comparedCloud: (project, version) => version === undefined
|
|
616
|
+
? `Comparación del proyecto de la nube ${project} con el árbol de trabajo`
|
|
617
|
+
: `Comparación de la versión ${version} del proyecto de la nube ${project} con el árbol de trabajo`,
|
|
618
|
+
cloudVersion: "--base lleva cloud, o cloud: y un número de versión como cloud:3.",
|
|
619
|
+
cloudOptions: "--project y --host van con --base cloud.",
|
|
620
|
+
cloudUnavailable: "la nube no está disponible aquí.",
|
|
621
|
+
none: "Sin cambios.",
|
|
622
|
+
summary: (files, added, removed, renamed, changed) => `${count(files, "archivo cambió", "archivos cambiaron")}: ${count(added, "agregado", "agregados")}, ${count(removed, "quitado", "quitados")}, ${count(renamed, "renombrado", "renombrados")}, ${count(changed, "cambiado", "cambiados")}.`,
|
|
623
|
+
scopes: { diagram: "diagrama", model: "modelo", story: "historia" },
|
|
624
|
+
block: "bloque",
|
|
625
|
+
page: {
|
|
626
|
+
title: "Revisión",
|
|
627
|
+
diagram: (id) => `diagrama ${id}`,
|
|
628
|
+
before: "Antes",
|
|
629
|
+
after: "Después",
|
|
630
|
+
new: "Nuevo",
|
|
631
|
+
removed: "Quitado",
|
|
632
|
+
in: (scope) => `en ${scope}`,
|
|
633
|
+
picture: (id, which) => `${id} ${which === "before" ? "antes" : "después"}`,
|
|
634
|
+
status: {
|
|
635
|
+
added: "agregado",
|
|
636
|
+
removed: "quitado",
|
|
637
|
+
renamed: "renombrado",
|
|
638
|
+
changed: "cambiado",
|
|
639
|
+
},
|
|
640
|
+
},
|
|
641
|
+
},
|
|
642
|
+
assist: {
|
|
643
|
+
items: (ids, text) => `los puntos son ${listOrNone(ids.map(String))}, no "${text}".`,
|
|
644
|
+
proposal: (path, revision, provider, model, summary) => `Propuesta para ${path} (revisión ${revision}, ${provider} ${model}): ${summary || "sin resumen"}`,
|
|
645
|
+
nothingToChange: " Nada que cambiar.",
|
|
646
|
+
actions: {
|
|
647
|
+
create: "crear",
|
|
648
|
+
add: "agregar",
|
|
649
|
+
replace: "reemplazar",
|
|
650
|
+
remove: "quitar",
|
|
651
|
+
relation: "relación",
|
|
652
|
+
},
|
|
653
|
+
imports: (imports) => ` Importaciones que se agregan con cualquier punto: ${imports.join("; ")}`,
|
|
654
|
+
together: (problem) => ` Todos los puntos juntos: ${problem}`,
|
|
655
|
+
unknownOperation: (operation, operations) => `operación desconocida "${operation}"; usa ${operations.join(", ")}.`,
|
|
656
|
+
proposalFile: "indica el archivo de la propuesta.",
|
|
657
|
+
notAProposal: (path) => `${path} no es una propuesta.`,
|
|
658
|
+
oneFile: (operation) => `${operation} necesita un archivo .meltemi.`,
|
|
659
|
+
notMeltemi: (path) => `${path} no es un archivo .meltemi.`,
|
|
660
|
+
exists: (path) => `${path} ya existe; usa assist modify para cambiarlo.`,
|
|
661
|
+
profile: (profile, profiles) => `--profile lleva ${profiles.join(", ")}, no "${profile}".`,
|
|
662
|
+
needsPrompt: (operation) => `${operation} necesita --prompt.`,
|
|
663
|
+
notSent: "no se envió nada; responde que sí, o pasa --yes.",
|
|
664
|
+
saved: (path, name) => `Se guardó ${path}; aplícala con ${name} assist apply ${path} --items <lista>`,
|
|
665
|
+
send: "¿Enviarla? [s/N] ",
|
|
666
|
+
conflicts: (ids) => ids.length === 1
|
|
667
|
+
? `el punto ${ids[0]} cambió desde la propuesta y se dejó fuera.`
|
|
668
|
+
: `los puntos ${ids.join(", ")} cambiaron desde la propuesta y se dejaron fuera.`,
|
|
669
|
+
nothingWritten: "no se escribió nada.",
|
|
670
|
+
applied: (ids, path) => ids.length === 1
|
|
671
|
+
? `Se aplicó el punto ${ids[0]} a ${path}`
|
|
672
|
+
: `Se aplicaron los puntos ${ids.join(", ")} a ${path}`,
|
|
673
|
+
noChanges: "No hay cambios que explicar.",
|
|
674
|
+
},
|
|
675
|
+
cloud: {
|
|
676
|
+
noArguments: (command) => `${command} no lleva argumentos.`,
|
|
677
|
+
errors: {
|
|
678
|
+
hostMismatch: (manifestHost, host) => `project.json nombra ${manifestHost}, pero este comando habla con ${host}; pasa --host ${manifestHost} para usarlo.`,
|
|
679
|
+
insecureHost: (host) => `${host} es una dirección http:; un token solo viaja por https:, o por http: a 127.0.0.1, localhost o [::1].`,
|
|
680
|
+
hostInvalid: (host) => `${host} no es la dirección de un servicio; usa un origen como https://diagrams.meltemi.dev.`,
|
|
681
|
+
unreachable: (host, reason) => `no se puede llegar a ${host}: ${reason}.`,
|
|
682
|
+
timeout: (host) => `${host} no respondió a tiempo.`,
|
|
683
|
+
tooLarge: (host) => `${host} envió más de lo que acepta la línea de comandos.`,
|
|
684
|
+
redirect: (host, status) => `${host} respondió con una redirección (${status}); un token nunca se envía adonde lleva.`,
|
|
685
|
+
badResponse: (host, status) => `${host} respondió algo que no es una respuesta del servicio (${status}).`,
|
|
686
|
+
notSignedIn: (name, host) => `no has iniciado sesión en ${host}; ejecuta "${name} login".`,
|
|
687
|
+
tokenRefused: (name, host) => `${host} rechazó el token (no lo conoce o fue revocado); ejecuta "${name} login".`,
|
|
688
|
+
credentialsCorrupt: (path, reason) => `el archivo de credenciales ${path} no se puede usar: ${reason}. Corrígelo o bórralo; no se escribió nada sobre él.`,
|
|
689
|
+
credentialsUnreadable: (path, reason) => `el archivo de credenciales ${path} no se puede leer: ${reason}.`,
|
|
690
|
+
credentialsUnwritable: (path, reason) => `el archivo de credenciales ${path} no se puede escribir: ${reason}.`,
|
|
691
|
+
cliInvalid: "el servicio rechazó el código de un solo uso (no lo conoce, ya se usó o caducó); no se guardó nada. Ejecuta login otra vez.",
|
|
692
|
+
cliRate: (seconds) => `demasiados intentos fallidos; espera ${seconds} segundos y ejecuta login otra vez.`,
|
|
693
|
+
quotaTokens: "esta cuenta ya tiene 20 tokens de API; revoca uno en la página de la cuenta y ejecuta login otra vez.",
|
|
694
|
+
loginTimeout: "no llegó ninguna aprobación en 5 minutos; no se guardó nada.",
|
|
695
|
+
stateMismatch: "la aprobación no traía el estado de esta solicitud, así que no se aceptó; no se cambió ni se guardó nada.",
|
|
696
|
+
environmentToken: "MELTEMI_TOKEN está definido; tiene prioridad sobre cualquier token guardado, así que no se guardó nada. Quítalo del entorno para iniciar sesión con login.",
|
|
697
|
+
tokenInput: "--token lee el token de la entrada estándar; envíalo por una tubería.",
|
|
698
|
+
noToken: "no se dio ningún token en la entrada estándar.",
|
|
699
|
+
notAToken: "eso no es un token de API (empiezan por mdg_).",
|
|
700
|
+
notStored: (reason) => `no se pudo guardar el token (${reason}), así que se revocó.`,
|
|
701
|
+
notStoredNotRevoked: (reason) => `no se pudo guardar el token (${reason}) ni tampoco revocarlo; revócalo en la página de la cuenta.`,
|
|
702
|
+
listener: (reason) => `no se puede escuchar la aprobación en este equipo: ${reason}.`,
|
|
703
|
+
notRevoked: (host, reason, path) => `no se pudo revocar el token de ${host} (${reason}), así que no se olvidó y se puede revocar más tarde: ejecuta logout otra vez, o revócalo en la página de la cuenta. Está guardado en ${path}.`,
|
|
704
|
+
noProject: (name) => `esta carpeta no nombra ningún proyecto de la nube; da --project <id>, o crea uno con "${name} push --create".`,
|
|
705
|
+
unsafePath: (path) => `el proyecto de la nube contiene la ruta ${path}, que no es una ruta segura dentro de la carpeta; no se comparó ni se escribió nada.`,
|
|
706
|
+
versionNotFound: (version) => `el proyecto de la nube no tiene la versión ${version}.`,
|
|
707
|
+
projectNotFound: (project) => `el proyecto de la nube ${project} no existe, o no tienes permiso para abrirlo.`,
|
|
708
|
+
accessDenied: "tu rol en este proyecto no permite eso: publicar, compartir, renombrar y borrar son del propietario, y cambiar archivos necesita el rol de editor.",
|
|
709
|
+
handleTaken: (handle) => `el handle ${handle} lo tiene otra cuenta; elige otro con --handle.`,
|
|
710
|
+
handleLocked: (handle) => `tu handle es ${handle} y no puede cambiar mientras haya páginas publicadas con él; quítalas primero (publish --unpublish --slug <nombre>).`,
|
|
711
|
+
handleInvalid: (handle) => `${handle} no es un handle: usa de 3 a 30 letras minúsculas, dígitos y guiones.`,
|
|
712
|
+
handleRequired: (name) => `todavía no tienes handle: da --handle <nombre> (es público y empieza toda dirección que publicas), o ejecuta "${name} publish" en una terminal para que te lo pregunte.`,
|
|
713
|
+
handleInPage: (handle) => `el servicio no deja que un token de API elija el handle ${handle}: elígelo en la página, en el diálogo de publicación del proyecto, y ejecuta publish otra vez.`,
|
|
714
|
+
publishTooLarge: (size) => `el catálogo${size === undefined ? "" : ` (${size})`} supera los 16 MiB que puede tener una página; no se envió nada. Deja fuera lo que la página no necesita con catalog.exclude en project.json.`,
|
|
715
|
+
publishRate: (seconds) => `un proyecto se puede publicar diez veces por hora; inténtalo de nuevo dentro de ${seconds} segundos.`,
|
|
716
|
+
publishTaken: (slug) => `otro proyecto tuyo ya publica ${slug}; elige otro nombre con --slug.`,
|
|
717
|
+
notPublished: (slug) => `el proyecto no publica nada con el nombre ${slug}.`,
|
|
718
|
+
publishEmpty: "no hay nada que publicar: el proyecto no tiene ningún diagrama ni historia que se pueda dibujar.",
|
|
719
|
+
publishErrors: "el proyecto tiene errores, así que no se subió ni se publicó nada (--strict).",
|
|
720
|
+
},
|
|
721
|
+
push: pushPullEs.push,
|
|
722
|
+
pull: pushPullEs.pull,
|
|
723
|
+
projectErrors: pushPullEs.errors,
|
|
724
|
+
login: {
|
|
725
|
+
check: (check) => `comprobación: ${check}`,
|
|
726
|
+
checkNote: "Aprueba la solicitud en el navegador solo si la página muestra los mismos seis caracteres.",
|
|
727
|
+
opening: (url) => `Abriendo ${url}`,
|
|
728
|
+
openFailed: "No se pudo abrir el navegador; abre tú la dirección de arriba.",
|
|
729
|
+
visit: (url) => `Abre esta dirección en tu navegador:\n ${url}`,
|
|
730
|
+
waiting: "Esperando la aprobación (hasta 5 minutos)...",
|
|
731
|
+
tokenPrompt: "Pega el token: ",
|
|
732
|
+
signedIn: (name, host) => `Sesión iniciada como ${name} (${host})`,
|
|
733
|
+
page: {
|
|
734
|
+
done: "Listo. Puedes cerrar esta ventana y volver a la terminal.",
|
|
735
|
+
failed: "No se terminó de iniciar la sesión. Vuelve a la terminal para ver por qué.",
|
|
736
|
+
},
|
|
737
|
+
},
|
|
738
|
+
logout: {
|
|
739
|
+
done: (host) => `Sesión cerrada en ${host}: el token se revocó y se olvidó.`,
|
|
740
|
+
alreadyRevoked: (host) => `El token de ${host} ya estaba revocado; se olvidó.`,
|
|
741
|
+
none: (host) => `No has iniciado sesión en ${host}; no hay nada que hacer.`,
|
|
742
|
+
environment: "MELTEMI_TOKEN está definido en el entorno y sigue en uso; no se revocó.",
|
|
743
|
+
},
|
|
744
|
+
whoami: {
|
|
745
|
+
who: (name, handle) => handle === null ? `${name} (sin handle todavía)` : `${name} (@${handle})`,
|
|
746
|
+
host: (host) => `servidor: ${host}`,
|
|
747
|
+
environment: "token: de MELTEMI_TOKEN",
|
|
748
|
+
},
|
|
749
|
+
publish: {
|
|
750
|
+
askHandle: "Elige tu handle: es público y empieza toda dirección que publicas (de 3 a 30 letras minúsculas, dígitos y guiones): ",
|
|
751
|
+
handleSet: (handle) => `Handle elegido: ${handle}`,
|
|
752
|
+
published: (parts, size) => `Publicado: ${parts.join(", ")} (${size}).`,
|
|
753
|
+
unpublished: (slug) => `Se quitó ${slug}.`,
|
|
754
|
+
slugInvalid: (slug) => `--slug lleva de 1 a 60 letras minúsculas, dígitos y guiones, no "${slug}".`,
|
|
755
|
+
handleOption: (handle) => `--handle lleva de 3 a 30 letras minúsculas, dígitos y guiones, no "${handle}".`,
|
|
756
|
+
},
|
|
757
|
+
projects: {
|
|
758
|
+
none: (name) => `Todavía no tienes proyectos en la nube; crea uno con "${name} push --create".`,
|
|
759
|
+
header: { id: "ID", name: "NOMBRE", role: "ROL", changed: "ÚLTIMO CAMBIO" },
|
|
760
|
+
roles: { owner: "propietario", editor: "editor", viewer: "lector" },
|
|
761
|
+
},
|
|
762
|
+
},
|
|
763
|
+
};
|
|
764
|
+
//# sourceMappingURL=es.js.map
|