1dbe6d8dd3
- CHANGELOG.md : structure semver (1.0.0 / 1.1.0 / 1.2.0) remplace le journal non versionné - public/version.txt : généré à chaque push depuis la première entrée CHANGELOG - scripts/push.sh : extrait la version CHANGELOG avant git add - src/UpdateChecker.php : compare version déployée vs version Gitea (raw file), cache 1 h - templates/layout.php : bandeau alerte admin (nouvelle version / migrations en attente) - templates/admin.php : dashboard moteur Folio (version déployée / disponible) - scripts/migrate_content.php + migration_001 : ajout # titre dans les articles existants - templates/maintenance.php : page HTTP 503 pendant une migration - src/helpers.php : extractMarkdownTitle(), normalisation \r\n dans lineDiff() - templates/wizard/step1.php : suppression champ titre, plan TOC dynamique - public/assets/js/wizard.js : scope titleEl, scrollToCursor, buildToc, handlers externalisés Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
50 lines
1.1 KiB
PHP
50 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
// Migration 001 : préfixe chaque article avec `# Titre` si aucun titre
|
|
// Markdown de niveau 1 n'est déjà présent dans le contenu.
|
|
//
|
|
// Variables disponibles depuis le runner : $dataDir
|
|
|
|
/** @var string $dataDir */
|
|
|
|
$updated = 0;
|
|
$skipped = 0;
|
|
|
|
foreach (glob($dataDir . '/*/meta.json') as $metaPath) {
|
|
$dir = dirname($metaPath);
|
|
$mdPath = $dir . '/index.md';
|
|
|
|
if (!file_exists($mdPath)) {
|
|
$skipped++;
|
|
continue;
|
|
}
|
|
|
|
$meta = json_decode((string) file_get_contents($metaPath), true);
|
|
if (!is_array($meta)) {
|
|
$skipped++;
|
|
continue;
|
|
}
|
|
|
|
$title = trim($meta['title'] ?? '');
|
|
$content = (string) file_get_contents($mdPath);
|
|
$content = str_replace("\r\n", "\n", $content);
|
|
|
|
// Déjà un titre Markdown niveau 1 → on ne touche pas
|
|
if (preg_match('/^\s*#\s+\S/', $content)) {
|
|
$skipped++;
|
|
continue;
|
|
}
|
|
|
|
if ($title === '') {
|
|
$skipped++;
|
|
continue;
|
|
}
|
|
|
|
file_put_contents($mdPath, '# ' . $title . "\n\n" . ltrim($content));
|
|
$updated++;
|
|
}
|
|
|
|
echo " $updated article(s) mis à jour, $skipped ignoré(s)\n";
|