Paillasse/portail/app/Console/Commands/SynchroniserCours.php

46 lines
1.4 KiB
PHP
Raw Normal View History

<?php
namespace App\Console\Commands;
use App\Models\Cours;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
use Symfony\Component\Yaml\Yaml;
/**
* Catalogue des cours.md de paillasse-contenus/ (même esprit que
* labs:synchroniser et quiz:synchroniser-banque) : lu par « Mes cours ».
* Un seul lab (08-deux-lan-routeur) a un cours.md aujourd'hui — les autres
* séquences n'apparaissent simplement pas, jamais de contenu inventé.
*/
class SynchroniserCours extends Command
{
protected $signature = 'cours:synchroniser';
protected $description = 'Crée ou met à jour le catalogue des cours depuis les cours.md de paillasse-contenus/';
public function handle(): void
{
$dossier = config('contenus.dossier');
foreach (File::directories($dossier) as $chemin) {
$identifiant = basename($chemin);
$cheminCours = "{$chemin}/cours.md";
$cheminLab = "{$chemin}/lab.yaml";
if (! File::exists($cheminCours) || ! File::exists($cheminLab)) {
continue;
}
$titre = Yaml::parseFile($cheminLab)['titre'];
$cours = Cours::updateOrCreate(
['identifiant' => $identifiant],
['titre' => $titre, 'contenu_markdown' => File::get($cheminCours)],
);
$this->line(($cours->wasRecentlyCreated ? 'créé' : 'à jour')." : {$identifiant}");
}
}
}