Commit dbeb5dfc authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Jeu de données de test : scripts .sh et .sql.twig permettant de créer une thèse soutenue.

parent 5b401594
Loading
Loading
Loading
Loading
+75 −0
Original line number Diff line number Diff line
#!/usr/bin/env php
<?php
/**
 * Traitement des templates Twig "*.sql.twig" présents dans le répertoire "./templates"' afin de générer
 * les scripts SQL correspondants dans "/tmp".
 *
 * Les mêmes paramètres pour tous les templates sont fournis au moteur Twig.
 *
 * Le nom du doctorant fictif créé est ajouté au nom du template, ex : "create_these_soutenue_dupont.sql".
 */

require_once __DIR__ . '/../../../../vendor/autoload.php';

use Laminas\Stdlib\Glob;
use Twig\Environment;
use Twig\Error\Error;
use Twig\Loader\FilesystemLoader;

const TEMPLATE_EXTENSION = '.sql.twig';

$templatesDir = __DIR__ . '/templates';
$outputDir = '/tmp';

$g = Faker\Factory::create('en_GB');

$name = $g->lastName();

$templateFiles = Glob::glob($templatesDir . '/*' . TEMPLATE_EXTENSION, Glob::GLOB_BRACE);

echo sprintf("Templates %s trouvés dans %s :", TEMPLATE_EXTENSION, $templatesDir) . PHP_EOL;
if (empty($templateFiles)) {
    echo "Aucun." . PHP_EOL;
    exit(0);
} else {
    echo implode(array_map(fn($t) => '- ' . $t . PHP_EOL, $templateFiles));
}
echo PHP_EOL;

$templateParams = [
    'uuid' => $g->uuid(),
    //
    'nomDoctorant' => $name,
    'prenomDoctorant' => $g->firstName(),
    'titre' => $g->sentence(),
    //
    'nomActeur1' => $g->lastName(),
    'nomActeur2' => $g->lastName(),
    'nomActeur3' => $g->lastName(),
    'nomActeur4' => $g->lastName(),
    'nomActeur5' => $g->lastName(),
    'nomActeur6' => $g->lastName(),
];

$loader = new FilesystemLoader($templatesDir);
$twig = new Environment($loader, [
    //'cache' => '/path/to/compilation_cache',
]);
foreach ($templateFiles as $templateFile) {
    $templateFileName = basename($templateFile);
    try {
        $sqlFileContent = $twig->render($templateFileName, $templateParams);
    } catch (Error $e) {
        throw new Exception("Erreur Twig rencontrée", null, $e);
    }

    $sqlFilePath = $outputDir . '/' .
            substr($templateFileName, 0, strpos($templateFileName, TEMPLATE_EXTENSION)) .
            '_' . strtolower($name) .
            '.sql';
    file_put_contents($sqlFilePath, $sqlFileContent);

    echo '=> ' . $sqlFilePath . PHP_EOL;
}

echo PHP_EOL;
+232 −0

File added.

Preview size limit exceeded, changes collapsed.