1

Supprime les reliquats du dossier tools

This commit is contained in:
2026-03-28 17:55:04 +01:00
parent 7452eb0876
commit c00de163a1
6 changed files with 87 additions and 5499 deletions

View File

@@ -132,8 +132,8 @@ Il s'agit d'un site statique généré avec Hugo, dont la version peut être vé
##### Liens intéressants (`content/interets/liens-interessants`)
- Cette section a le même usage que l'application `Shaarli` : je m'en sers pour partager avec mes lecteurs mes trouvailles sur Internet
- J'ajoute un lien avec la commande `node tools/add_link.js "<url>"`, qui produit le bundle correspondant, récupère le titre et la description du site distant, ainsi qu'une capture d'écran placée dans le dossier `images/` du bundle créé
- Si une description est trouvée, elle est ajoutée dans le corps du fichier `index.md` généré par le script
- Chaque lien intéressant est publié sous forme de bundle, avec au minimum un frontmatter renseignant l'attribut `links`
- Si une description est trouvée, elle est ajoutée dans le corps du fichier `index.md`
- Je peux éventuellement ajouter un commentaire personnel dans le corps du fichier `index.md`, mais ce n'est pas systématique
### Pièces jointes
@@ -201,65 +201,6 @@ Il s'agit d'un site statique généré avec Hugo, dont la version peut être vé
- Ne jamais ajouter d'émojis dans le corps de l'article
- Ne jamais supprimer les émojis existant
## Outils
- Les outils sont placés dans le dossier `tools/`
- Les librairies créées sur mesure devront être placée dans `tools/lib/`, éventuellement dans un sous-dossier pour architecturer correctement le code
### Ajout d'un LEGO à ma collection (`tools/add_lego.js`)
- Ce script exploite l'API du site Rebrickable pour me permettre de récupérer des images et informations à propos d'un set LEGO donné et ajoute ou modifie le bundle correspondant
### Ajout d'un lien intéressant (`tools/add_link.js`)
- Prend en entrée un URL et crée un nouveau bundle en peuplant l'attribut `links` du frontmatter et en fournissant une image d'en-tête
### Ajout de la météo (`tools/add_weather.js`)
- Ajoute les informations sur la météo à un bundle (ou tous les bundles)
- Ces informations sont tirées de mon serveur InfluxDB2, ou d'au moins une source externe si ces données ne sont pas disponibles
### Vérification des liens
#### Externes (`tools/check_external_links.js`)
- Vérifie la disponibilité des sites liés partout dans `content/` (code HTTP 200 ou autre)
- On cherche les liens dans les fichiers markdown (incluant le frontmatter) et les fichiers `*.yaml`
- On ignore les URL placés dans des blocs de code mono ou multilignes
- La vérification enrichie repose sur Playwright et le Chromium embarqué par la librairie `playwright`
- La variable `externalLinks.usePlaywright` de `tools/config/config.json` doit être positionnée à `true` pour activer cette vérification
- L'attribut `externalLinks.playwrightExecutablePath` doit rester vide ou à `null` afin de laisser Playwright utiliser son propre navigateur, compatible avec la configuration `nix-ld` déclarée dans `/etc/nixos/nix-ld-libraries.nix`
- Si `externalLinks.playwrightExecutablePath` est renseigné, il doit impérativement pointer vers un binaire existant : dans le cas contraire, le script se termine en erreur et interrompt le déploiement
#### Internes (`tools/check_internal_links.js`)
- Vérifie les liens morts internes
- Pas besoin de lancer Hugo : il suffit de chercher tous les liens sans `://` dans `content/`
- On cherche les liens dans les fichiers markdown (excluant le frontmatter) et les fichiers `*.yaml`
- On ignore les URL placés dans des blocs de code mono ou multilignes
- L'URL est de la forme `/{section ou bundle}` : on cherche l'existence du dossier `content/{section ou bundle}`, et la présence d'un fichier `index.md` ou `_index.md` dans ce dossier, s'il existe. Si un tel fichier existe : le lien est valide.
### Diagrammes mermaid (`tools/generate_mermaid_diagrams.js`)
- Cherche des fichiers `*.mermaid` dans un dossier `diagrams` des bundles
- Pour chaque fichier `*.mermaid` trouvé, on lance l'exécutable de `mermaid` sur ce fichier pour produire l'image correspondante dans le dossier `images/` du bundle
- Les images produites doivent être au format `.png` ou `.jpeg`
- Voir `content/interets/electronique/2025/10/21/pilotage-d-un-switch-usb-par-le-wifi`
### Génération de métadonnées (`tools/generate_metadata_files.js`)
- Génère automatiquement les fichiers de métadonnées pour toute pièce jointe du dernier bundle créé et les place dans le dossier `data/` du bundle
### Générateur de statistiques (`tools/generate_stats.js`)
- Génère diverses statistiques intéressantes
- Les statistiques sont présentées dans le bundle `content/stats`
### Synchro Wikipédia (`tools/sync_wiki_metadata.js`)
- Ce script est utile aux critiques de médias
- Il cherche sur la Wikipédia/Wikidata des informations relatives aux oeuvres critiquées
## Déploiement
- Tout le déploiement du site est confié au script `deploy.sh`.

View File

@@ -0,0 +1,58 @@
{{- $reportPath := "data/external_links.yaml" -}}
{{- $report := dict -}}
{{- if reflect.IsMap . -}}
{{- with index . "ReportPath" -}}
{{- $reportPath = . -}}
{{- end -}}
{{- with index . "Report" -}}
{{- $report = . -}}
{{- end -}}
{{- else if . -}}
{{- $report = . -}}
{{- end -}}
{{- if eq (len $report) 0 -}}
{{- if eq $reportPath "data/external_links.yaml" -}}
{{- with index site.Data "external_links" -}}
{{- $report = . -}}
{{- end -}}
{{- else if fileExists $reportPath -}}
{{- $report = transform.Unmarshal (readFile $reportPath) -}}
{{- end -}}
{{- end -}}
{{- $sourceLinks := slice -}}
{{- with index $report "deadLinks" -}}
{{- $sourceLinks = . -}}
{{- end -}}
{{- if and (eq (len $sourceLinks) 0) (isset $report "links") -}}
{{- $sourceLinks = default (slice) (index $report "links") -}}
{{- end -}}
{{- $links := slice -}}
{{- range $sourceLinks -}}
{{- $status := "" -}}
{{- with index . "status" -}}
{{- $status = printf "%v" . -}}
{{- end -}}
{{- if eq $status "" -}}
{{- with index . "code" -}}
{{- $status = printf "%v" . -}}
{{- end -}}
{{- end -}}
{{- $links = $links | append (dict
"url" (default "" (index . "url"))
"status" $status
"locations" (default (slice) (index . "locations"))
"errorType" (default "" (index . "errorType"))
"checkedAt" (default "" (index . "checkedAt"))
) -}}
{{- end -}}
{{- return (dict
"generatedAt" (default "" (index $report "generatedAt"))
"entries" (default (dict) (index $report "entries"))
"links" $links
) -}}

5419
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,7 @@
{
"scripts": {
"icons:generate": "node tools/generate_apple_touch_icons.js",
"links:manage-dead": "node tools/manage_dead_links.js",
"links:refresh": "node tools/check_external_links.js",
"stats:generate": "node tools/generate_stats.js"
},
"dependencies": {
"@influxdata/influxdb-client": "^1.35.0",
"@napi-rs/canvas": "^0.1.59",
"chart.js": "^4.4.4",
"chartjs-node-canvas": "^5.0.0",
"lemmy-js-client": "^0.19.6",
"luxon": "^3.7.2",
"pg": "^8.16.3",
"playwright": "^1.49.0",
"postcss-import": "^16.1.0",
"postcss-nested": "^7.0.2",
"puppeteer": "^23.11.1",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2",
"sharp": "^0.33.5",
"undici": "^7.16.0",
"user-agents": "^1.1.480"
},
"devDependencies": {
"@mermaid-js/mermaid-cli": "^11.12.0",
"autoprefixer": "^10.4.21",
"postcss": "^8.5.3",
"postcss-cli": "^11.0.1"
},
"overrides": {
"js-yaml": "^4.1.1",
"tar-fs": "^3.1.1"
}
}

View File

@@ -1,15 +1,4 @@
{{- $defaultReportPath := "tools/cache/external_links.yaml" -}}
{{- $reportPath := default $defaultReportPath .ReportPath -}}
{{- $report := default (dict) .Report -}}
{{- if or (eq (len $report) 0) (not (isset $report "links")) -}}
{{- if fileExists $reportPath -}}
{{- with readFile $reportPath -}}
{{- $report = . | unmarshal -}}
{{- end -}}
{{- else -}}
{{- warnf "Rapport des liens morts introuvable (%s)" $reportPath -}}
{{- end -}}
{{- end -}}
{{- $report := partial "external-links-report.html" . -}}
{{- $allPages := where site.Pages ".File" "!=" nil -}}
{{- $links := default (slice) $report.links -}}
{{- $linkCount := len $links -}}

View File

@@ -7,7 +7,7 @@
{{- $site := $page.Site -}}
{{- $aff := index $site.Data.affiliates.sites $host -}}
{{- $isAffiliated := false -}}
{{- $report := default (dict) (transform.Unmarshal (readFile "tools/cache/external_links.yaml")) -}}
{{- $report := partial "external-links-report.html" (dict) -}}
{{- $deadList := default (slice) (index $report "links") -}}
{{- $entriesMap := default (dict) (index $report "entries") -}}
{{- $cacheEntry := index $entriesMap .Destination -}}
@@ -78,4 +78,4 @@
{{- $relAttr = "noreferrer noopener" -}}
{{- end -}}<a href="{{ $newURL }}" title="{{ $titleValue }}" {{- if gt (len $relAttr) 0 -}} rel="{{ $relAttr }}" {{- end
-}} {{- if gt (len $classes) 0 -}} class="{{ delimit $classes ` ` }}" {{- end -}}>{{- .Text | safeHTML -}}</a>{{- /*
*/ -}}
*/ -}}