Browse Source

Permettre de générer SPIP avec ou sans ses plugins-dist. Intégrer la liste de ses plugins dans autodoc.json

master
Matthieu Marcillaud 9 months ago
parent
commit
fef1a8b00d
  1. 3
      src/Command/FromGit.php
  2. 11
      src/Command/FromSpip.php
  3. 1
      src/Stage/GitSpipStage.php
  4. 6
      src/Stage/JsonAutodocStage.php

3
src/Command/FromGit.php

@ -29,6 +29,8 @@ use Symfony\Component\Console\Style\SymfonyStyle;
*/
class FromGit extends Command
{
protected InputInterface $input;
protected function configure()
{
$this
@ -47,6 +49,7 @@ class FromGit extends Command
protected function execute(InputInterface $input, OutputInterface $output)
{
$context = new Context($input, $output);
$this->input = $input;
/** @var SymfonyStyle */
$io = $context->get('io');

11
src/Command/FromSpip.php

@ -11,6 +11,7 @@ use League\Pipeline\Pipeline;
use Spip\Autodoc\Context;
use Spip\Autodoc\Stage\CheckStage;
use Spip\Autodoc\Stage\GitSpipStage;
use Spip\Autodoc\Stage\GitStage;
use Spip\Autodoc\Stage\JsonAutodocStage;
use Spip\Autodoc\Stage\PackageStage;
use Spip\Autodoc\Stage\PhpDocumentorConfigStage;
@ -34,6 +35,7 @@ class FromSpip extends FromGit
->addOption('topnav', null, InputOption::VALUE_OPTIONAL, 'URL d’un fichier JS à charger dans le head html. <comment>Exemple: "//boussole.spip.net/?page=spipnav.js&lang=fr"</comment>')
->addOption('topnav_spip', null, InputOption::VALUE_NONE, 'Intègre le JS de la boussole SPIP en entête topnav.')
->addOption('force', '', InputOption::VALUE_NONE, 'Force l’analyse de tous les fichiers, même s’ils n’ont pas été modifiés.')
->addOption('with_plugins_dist', '', InputOption::VALUE_NONE, 'Génère la doc en incluant les plugins dist.')
#->addOption('title', '', InputOption::VALUE_OPTIONAL, 'Titre du projet. Utilise le nom de la branche par défaut.')
#->addOption('description', '', InputOption::VALUE_OPTIONAL, 'Description du projet. Prédéfini sur le titre par défaut.')
#->addOption('presentation', '', InputOption::VALUE_OPTIONAL, 'Présentation du projet. Vide par défaut.')
@ -47,10 +49,17 @@ class FromSpip extends FromGit
protected function pipeline(Context $context): void
{
if ($this->input->getOption('with_plugins_dist')) {
$context->io->info("Generate SPIP with plugins dist.");
$gitStage = new GitSpipStage();
} else {
$context->io->info("Generate SPIP without plugins dist.");
$gitStage = new GitStage();
}
$processor = new InterruptibleProcessor(fn (Context $context) => $context->empty('errors'));
$pipeline = (new Pipeline($processor))
->pipe(new CheckStage())
->pipe(new GitSpipStage())
->pipe($gitStage)
->pipe(new PackageStage())
->pipe(new PhpDocumentorConfigStage())
->pipe(new PhpDocumentorStage())

1
src/Stage/GitSpipStage.php

@ -8,6 +8,7 @@ use Spip\Autodoc\Exception\ContextException;
use Spip\Autodoc\Git;
use Symfony\Component\Filesystem\Filesystem;
/** Génère SPIP + ses plugins-dist */
class GitSpipStage extends GitStage
{
protected const CHECKOUT_TYPE = 'spip';

6
src/Stage/JsonAutodocStage.php

@ -44,6 +44,12 @@ class JsonAutodocStage implements StageInterface
$json->urls->development = $package->get('url_development');
$json->urls->repository = $context->has('git') ? ($context->get('git')->getRepositoryUrl() ?? '') : '';
$plugins_dist = $context->directory->input . '/plugins-dist.json';
if (file_exists($plugins_dist)) {
$plugins_dist = json_decode(file_get_contents($plugins_dist));
$json->core_plugins = $plugins_dist;
}
file_put_contents($output_directory . '/autodoc.json', json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
$context->set('autodoc.json', $json);

Loading…
Cancel
Save