Meilleurs scripts

This commit is contained in:
julien
2026-08-06 16:42:42 +02:00
parent cc1b03b78e
commit 7a0e75442c
6 changed files with 242 additions and 357 deletions
+25 -22
View File
@@ -168,7 +168,7 @@ La forme abrégée, relative à `src/content/`, est également acceptée :
./scripts/update-content.py vocabulaire/bītum.md
```
Le chemin complet peut être saisi rapidement avec lautocomplétion du shell. Le script refuse les index et les fichiers extérieurs à `src/content/`, puis remplace lunique ligne `updated` par lheure courante de `Europe/Paris` :
Le chemin complet peut être saisi rapidement avec lautocomplétion du shell. Le script accepte uniquement les fiches Markdown placées dans une section connue ; il refuse donc les index, les pages situées directement dans `src/content/` et les fichiers extérieurs à ce répertoire. Il remplace ensuite lunique ligne `updated` par lheure courante de `Europe/Paris` :
```toml
updated = 2026-08-05T16:47:00+02:00
@@ -186,7 +186,7 @@ La métadescription HTML utilise alors, en dernier recours, la description gén
## Brouillons et publication
Un brouillon peut rester incomplet. Pour publier une fiche :
Un brouillon peut conserver des valeurs vides, mais tous les champs de son modèle restent présents afin que sa structure puisse être vérifiée dès sa création. Pour publier une fiche :
1. compléter les données disponibles sans supprimer les champs de son modèle ;
2. rédiger le corps Markdown ;
@@ -237,7 +237,7 @@ natures = ["nature"]
+++
```
`meaning` contient le sens principal ou une courte série de sens. Il doit être renseigné avant publication.
`meaning` contient le sens principal ou une courte série de sens. Il est normalement renseigné avant publication, mais peut rester vide pendant la rédaction.
`logograms` reste toujours un tableau de chaînes :
@@ -259,7 +259,7 @@ Chaque nature ajoute les champs suivants, dans lordre produit par le généra
| Particule | `function` |
| Numéral | `numeral_type`, `value`, `gender`, `feminine` |
Tous les champs simples restent des chaînes, même lorsquils sont vides. Une fiche publiée doit contenir exactement les champs de sa nature. Pour un verbe, `stem` doit être renseigné avant publication. Le titre fournit déjà linfinitif et ne le répète donc pas dans `[extra]`.
Tous les champs simples restent des chaînes, même lorsquils sont vides. Chaque fiche, brouillon compris, doit conserver tous les champs prévus pour sa nature. Le validateur contrôle leur présence et leur type, sans imposer de valeur non vide ni refuser d’éventuels champs supplémentaires. Le titre fournit déjà linfinitif et ne le répète donc pas dans `[extra]`.
### Sens des principaux champs
@@ -324,7 +324,7 @@ lectures = []
- `mzl` reprend exactement les trois chiffres du nom de fichier ;
- `lectures` contient les lectures translittérées.
Le nom `mzl-XXX.md` est contrôlé même lorsque la fiche est en brouillon. Avant publication, le titre, le glyphe et le numéro MZL doivent être renseignés, et le numéro doit correspondre au nom du fichier.
Le générateur forme automatiquement le nom `mzl-XXX.md` et renseigne le numéro MZL correspondant. Le validateur vérifie ensuite que `sign`, `mzl` et `lectures` restent présents avec le type attendu, même lorsque la fiche est en brouillon. Il nimpose pas de valeur non vide et ne compare pas le numéro au nom du fichier.
Le corps peut accueillir, selon le besoin :
@@ -422,31 +422,34 @@ Ils sont ajoutés lorsquils apportent un contexte réel : occurrence dans un
## Ce que contrôle le validateur
Pour tous les fichiers Markdown, le validateur vérifie :
Le validateur est volontairement limité à la structure des fiches placées dans `articles/`, `grammaire/`, `signes/`, `textes/` et `vocabulaire/`. Les pages situées directement dans `src/content/`, comme la bibliographie et les mentions légales, ainsi que les fichiers `_index.md`, sont entièrement ignorés.
- lencodage UTF-8 ;
- la normalisation Unicode NFC du contenu et du chemin ;
- la présence et la validité du front matter TOML ;
- lappartenance à une section connue lorsque le fichier est placé dans un sous-répertoire de `src/content/`.
Pour chaque fiche, il vérifie que le fichier peut être lu en UTF-8, que son front matter TOML est valide et quil contient exactement une ligne `updated`, commentée ou active. Il contrôle ensuite la présence et le type des champs communs :
Pour les fichiers `_index.md`, il exige un titre non vide.
- `title` et `description` doivent être des chaînes, éventuellement vides ;
- `date` doit être un horodatage TOML ;
- `draft` doit être un booléen ;
- `updated`, lorsquil est actif, doit également être un horodatage TOML.
Pour les autres pages, `draft` doit être un booléen. Les brouillons ne sont pas soumis aux contrôles de complétude, à lexception du nom des fiches de signes.
Les brouillons et les fiches publiées sont contrôlés de la même façon. Le validateur n’évalue pas la qualité éditoriale des valeurs et nexige donc ni titre, ni sens, ni thème verbal non vide.
Pour toute page publiée, il exige un titre non vide. Lorsque la page appartient à une section, `date` doit être un horodatage TOML avec fuseau horaire. Si `updated` est actif, il doit respecter le même format. Les pages permanentes placées directement dans `src/content/`, comme la bibliographie et les mentions légales, nont pas besoin de date.
Pour le vocabulaire, il vérifie en plus :
Pour une fiche de vocabulaire publiée, il contrôle en plus :
- une seule nature grammaticale connue ;
- la présence exacte des champs prévus pour cette nature ;
- la présence dune seule nature grammaticale connue dans `taxonomies.natures` ;
- la présence de tous les champs `[extra]` prévus pour cette nature ;
- des chaînes pour les champs simples ;
- un tableau de chaînes non vides pour `logograms` ;
- un `meaning` non vide ;
- un `stem` non vide pour les verbes.
- un tableau de chaînes pour `logograms`, qui peut être vide.
Pour une fiche de signe publiée, il contrôle le glyphe, le numéro MZL sur trois chiffres et sa correspondance avec le nom du fichier.
Pour les autres sections, il vérifie les modèles centralisés dans `_schema.py` :
Zola reste responsable de la construction, des liens internes, des taxonomies et du rendu des templates.
- `banner`, `banner_alt` et `banner_credit` pour les articles ;
- `themes` pour la grammaire ;
- `sign`, `mzl` et `lectures` pour les signes ;
- `genres` pour les textes.
Les tableaux peuvent être vides et les chaînes peuvent être vides. Les champs supplémentaires ne sont pas rejetés. Le validateur ne contrôle ni la forme des noms de fichiers, ni la correspondance du numéro MZL avec le fichier, ni la normalisation Unicode du chemin ou du contenu.
Zola reste responsable de la construction, des liens internes, des taxonomies et du rendu des templates. Le générateur reste responsable de produire les noms de fichiers attendus et des squelettes complets.
## Principes de cohérence