Manifiesto gaanim.toml

Una carpeta es un proyecto de Gaanim cuando contiene un gaanim.toml. El manifiesto dice qué script ejecutar y dónde están los recursos y las salidas. gaanim init lo genera así:

name = "mi-charla"
kind = "slides"
entry = "main.py"
assets_dir = "assets"
output_dir = "exports"

Campos

CampoTipoPredeterminadoSignificado
kindcadenaobligatorioTipo de proyecto: "video" o "slides".
entryrutaobligatorioScript que ejecutan gaanim <carpeta>, check y export.
namecadenanombre de la carpetaNombre que muestran el Inicio y el título de la ventana.
assets_dirruta"assets"Carpeta de recursos, relativa al manifiesto. La lee scene.assets.load_project().
output_dirruta"exports"Carpeta donde el diálogo de exportación del editor propone guardar, y donde van las capturas del fotograma.
languagecadenaningunoIdioma en que se habla la charla, como etiqueta BCP 47 ("es-ES", "es"). Lo usa el dictado del guion.
polls.relayURLningunoRelay de las encuestas de este proyecto, en una tabla [polls].

Las claves desconocidas se ignoran. Las que parecen credenciales, porque su nombre contiene token, secret, password o api_key, también, pero gaanim check y el panel Script & narration avisan de ellas: el manifiesto viaja con el proyecto, también a un repositorio, así que los tokens no van ahí (ver El token).

kind

"video" y "slides" distinguen los dos tipos de proyecto en el Inicio y en la plantilla de gaanim init. No cambian cómo se ejecuta ni cómo se exporta la escena: gaanim check aplica las comprobaciones de presentación cuando la escena usa segmentos, sea cual sea su kind. Los valores antiguos "presentation" y "thesis" producen un error que pide cambiarlos por "slides"; cualquier otro valor, un error con los tipos disponibles.

entry

Ruta relativa a la carpeta del proyecto. Debe apuntar a un archivo que exista y no puede ser absoluta ni salir de la carpeta con ... Así, gaanim ., gaanim check . y gaanim export . --output … no necesitan la ruta del script.

assets_dir

El editor y la CLI no aplican assets_dir por su cuenta: la escena lo carga al llamar a scene.assets.load_project(), que busca el gaanim.toml en la carpeta del script que la llama y, si no está, en sus carpetas superiores, como hace git con .git: un módulo dentro de un paquete del proyecto encuentra el manifiesto del proyecto. Después, las rutas relativas de scene.media.image, svg, lottie, video y demás se resuelven desde esa carpeta, sin depender del directorio de trabajo desde el que se lanzó Gaanim.

from gaanim import Scene

scene = Scene()
scene.assets.load_project()             # lee assets_dir del gaanim.toml del proyecto
logo = scene.media.image("logo.webp")   # es assets/logo.webp

load_project lee solo la clave assets_dir de nivel superior, escrita como cadena entre comillas; si el manifiesto no la tiene, usa "assets", igual que la CLI y el editor. Consulta AssetManager.load_project.

output_dir

Carpeta relativa al proyecto, o absoluta. El diálogo de exportación del editor propone guardar ahí, con el nombre del proyecto (<output_dir>/mi-video.mp4), y las capturas del fotograma actual van a <output_dir>/captures/. gaanim export no la usa: escribe en la ruta de --output, relativa al directorio actual.

language

language = "es-ES"

El idioma en que se habla la charla del proyecto, como etiqueta BCP 47: "es-ES", "es", "es-PE", "en-US"… Al dictar el guion con Scribe manda sobre el idioma elegido en el editor, así que la charla se dicta igual en cualquier equipo. Scribe usa la misma etiqueta si la tiene y, si no, la primera de ese idioma: "es" y "es-PE" se dictan como es-ES, y "pt" como pt-BR. Si Scribe no transcribe ese idioma, se usa el del editor y el panel lo avisa.

En Settings → Dictation, con el proyecto abierto en el editor, Pin in gaanim.toml escribe el idioma elegido y Unpin lo quita; el resto del archivo, comentarios incluidos, queda como estaba.

[polls]

[polls]
relay = "https://gaanim-relay.<tú>.workers.dev"

Relay al que apuntan los códigos QR de las encuestas (scene.poll) de este proyecto, en lugar del guardado con gaanim relay use. GAANIM_POLL_RELAY tiene prioridad sobre ambos. Ver Tu primera encuesta.

Cómo se encuentra el proyecto

  • gaanim <carpeta> exige un gaanim.toml en esa carpeta.
  • gaanim <script.py> ejecuta ese script y busca un gaanim.toml en su carpeta y en hasta cinco carpetas superiores para mostrar el nombre del proyecto y proponer la carpeta de exportación.

Al abrir una carpeta, un manifiesto que no es TOML válido, sin kind o entry, o con valores inválidos detiene gaanim, check y export con un mensaje que incluye la ruta del manifiesto y el código de salida 2. Al abrir un script, un manifiesto inválido en una carpeta superior se ignora.