# La línea de órdenes

Las opciones, qué hace cada una y cuáles imprimen algo y salen.

Source: https://jmrplens.github.io/ghchronicle/es/reference/cli/

El binario acepta estas opciones y ningún subcomando. Todo lo demás está en el
fichero de configuración, porque un horario no es algo que se reescriba a mano.

```sh
ghchronicle -config /etc/ghchronicle/config.yaml
```

## Todas las opciones

| Opción            | Por omisión   | Qué hace                                                                                                                                  |
| ----------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `-config`         | `config.yaml` | Ruta del fichero de configuración                                                                                                         |
| `-once`           | apagada       | Hace una pasada y sale en vez de quedarse programando; una familia a la que no le toca por cadencia se salta igual                        |
| `-list`           | apagada       | Imprime los repositorios que se recogerían, y cuáles quedan aparte, y sale                                                                |
| `-version`        | apagada       | Imprime la versión, el commit y la fecha de compilación, y sale                                                                           |
| `-groups`         | apagada       | Imprime los grupos con las familias de cada uno, y sale                                                                                   |
| `-backfill`       | apagada       | Llega tan atrás como permita cada superficie, esperando a que se reponga el límite en vez de parar                                        |
| `-backfill-since` | ninguno       | Acota el relleno: una fecha (`2024-01-01`), una duración (`720h`), días (`90d`) o años (`2y`)                                             |
| `-card`           | ninguno       | Hace una pasada y escribe un SVG de resumen en esta ruta; esa pasada recoge todas las familias, digan lo que digan las cadencias          |
| `-card-only`      | apagada       | Con `-card`, escribe el SVG y nada más: no hace falta ningún destino, no se escribe en ninguno y el fichero de estado se queda como estaba |
| `-card-theme`     | `auto`        | `dark`, `light`, `auto` o `both`: la tarjeta clara en `-card` y la oscura a su lado con `_dark` antes de la extensión, en una sola pasada |
| `-card-motion`    | `once`        | `once`, `loop` u `off`; `loop` solo cambia `terminal` y `ticker`                                                                               |
| `-card-layout`    | `summary`     | Cuál de los trece [diseños](/ghchronicle/es/card/layouts/) dibujar                                                                        |
| `-card-fields`    | ninguno       | Campos que muestra la tarjeta, separados por comas, de entre [los campos](/ghchronicle/es/card/#los-campos); vacío significa el valor por omisión del diseño |
| `-card-width`     | el del diseño | Ancho de la tarjeta en píxeles. Cada diseño dibuja entre dos extremos propios, que dicen tanto su [sección](/ghchronicle/es/card/layouts/) como `-card-layouts`; `badge-row` la ignora, porque su ancho lo deciden sus píldoras |
| `-card-speed`     | `0.5`         | A qué velocidad se reproduce un diseño animado, como decimal de 0 a 1. `0` es la animación más lenta y `1` la más rápida; `0.5` es el ritmo con el que siempre se han dibujado las tarjetas. `0` no es una tarjeta quieta, eso es `-card-motion off` |
| `-card-layouts`   | apagada       | Imprime los diseños con los campos y los anchos que dibuja cada uno, y sale                                                               |

## Las cuatro que imprimen y salen

`-version`, `-groups`, `-card-layouts` y `-list` responden y paran. Las tres
primeras no necesitan token ni configuración; `-list` lee la configuración y le
pregunta a GitHub en qué repositorios se resuelven los objetivos, que es la
forma barata de comprobar un cambio antes de gastar cuota en una pasada.

```sh
ghchronicle -version
ghchronicle -groups
ghchronicle -card-layouts
ghchronicle -config config.yaml -list
```

## Las tres formas de hacer una pasada

```sh
ghchronicle -config config.yaml           # el bucle: cada familia en su cadencia
ghchronicle -config config.yaml -once     # una pasada, en primer plano, y salir
ghchronicle -config config.yaml -backfill # el recorrido de la historia, una vez
```

El bucle es lo que ejecuta un servicio. `-once` es lo que ejecuta un trabajo
programado, y es también la forma más rápida de ver qué hace un cambio de
configuración. Un [relleno histórico](/ghchronicle/es/how/backfill/) es otra
intención y lo dice: recorre cada superficie hasta el final y espera a que se
reponga un presupuesto agotado en vez de rendirse.

```sh
ghchronicle -config config.yaml -backfill -backfill-since 2y
```

## La tarjeta, en una línea

```sh
ghchronicle -config config.yaml -card profile.svg -card-only \
  -card-layout github-stats -card-theme dark
```

`-card-only` es la combinación que conviene recordar: hace una ejecución que no
escribe puntos, así que no necesita ningún destino configurado y se acepta una
configuración que de otro modo se rechazaría al arrancar.
[La tarjeta](/ghchronicle/es/card/) tiene los diseños y los campos.

`-card-width` es la única opción que cambia lo que dice una tarjeta y no solo
cómo se ve, y en un solo diseño.
[`activity-heatmap`](/ghchronicle/es/card/layouts/#activity-heatmap) se gasta
el sitio en datos: dieciséis semanas del calendario de contribuciones en su
extremo cercano, veintitrés con el ancho que declara y el año entero que guarda
el recolector en su extremo lejano, que cae justo donde cae el año para que a
la tarjeta nunca se le pida llenar un sitio para el que no tiene nada.
Cualquier otro diseño reparte el mismo contenido por el ancho que le den, así
que ensanchar uno de esos compra proporciones y no información, y su extremo
lejano es solo una defensa contra una errata. Un ancho fuera de los dos
extremos de un diseño se rechaza antes de la pasada, nombrándolos, y
`-card-layouts` los imprime para cada diseño.

```sh
ghchronicle -config config.yaml -card calendar.svg -card-only \
  -card-layout activity-heatmap -card-width 700
```

## La velocidad, y lo que no es su extremo lento

`-card-speed` es un solo número para toda la tarjeta. Todos los diseños
animados se escalan juntos, los movimientos continuos con el resto: con el
mismo ajuste, la banda del ticker tarda más en dar la vuelta y el cursor del
terminal parpadea más despacio. Es un mando y no uno por diseño porque el
movimiento que tiene la tarjeta se calibró contra sí mismo, el ciclo de un
diseño elegido al lado del de otro, y a quien le parezca lenta la banda le
parecerá lento también el tecleo.

`0.5` es el centro del rango y es exactamente la tarjeta que este renderizador
ha dibujado siempre, byte a byte, así que omitir la opción y pedir `0.5` son la
misma orden, y cada extremo llega a la misma distancia de ella: `0` dibuja la
animación el doble de larga que la de por omisión, `1` la mitad de larga que la
de por omisión.

> **0 es la animación más lenta, no la ausencia de animación**
>
> Un rango que empieza en cero parece un interruptor, y este no lo es. En `0` la
> tarjeta sigue animándose, tan despacio como este renderizador la dibuje. Lo
> que dibuja una tarjeta sin animación ninguna es `-card-motion off`.

```sh
ghchronicle -config config.yaml -card slow.svg -card-only \
  -card-layout ticker -card-motion loop -card-speed 0.25
```

## Dónde está lo demás

Todo lo que no está en esa tabla es una clave de configuración y no una opción:
[el fichero](/ghchronicle/es/configuration/) es el mapa de todas ellas.
