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

34 lines
1.1 KiB
PHP
Raw Normal View History

<?php
namespace App\Console\Commands;
use App\Models\Lab;
use App\Services\Labs\DefinitionLab;
use Illuminate\Console\Command;
/**
* Le catalogue (table labs) suit les lab.yaml présents dans labs/ : lancé
* par Ansible après chaque déploiement. Ne supprime jamais un lab : des
* séances passées peuvent le référencer.
*/
class SynchroniserLabs extends Command
{
protected $signature = 'labs:synchroniser';
protected $description = 'Crée ou met à jour le catalogue des labs depuis les lab.yaml';
public function handle(): void
{
foreach (DefinitionLab::identifiantsDisponibles() as $identifiant) {
$definition = DefinitionLab::depuis($identifiant);
$lab = Lab::updateOrCreate(
['identifiant' => $definition->identifiant],
['titre' => $definition->titre, 'niveau' => $definition->niveau, 'duree_min' => $definition->dureeMin, 'competences' => $definition->competences],
);
$this->line(($lab->wasRecentlyCreated ? 'créé' : 'à jour')." : {$identifiant}");
}
}
}