
8 changed files with 322 additions and 10 deletions
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env php |
||||
<?php |
||||
/** |
||||
* Script pour simplifier l'usage de la génération de documentation |
||||
* dans le cadre du code source SPIP |
||||
* |
||||
* Ce script crée les répertoires nécessaires à son fonctionnement |
||||
* et utilise une configuration (phpdoc.xml) adaptée. |
||||
* |
||||
* Il nécessite un répertoire `work` accessible en écriture (le programme |
||||
* tentera de le créer s'il est absent). Toutes les données de travail et |
||||
* les productions seront mises dedans. |
||||
*/ |
||||
|
||||
# charger l'autoloader |
||||
require_once __DIR__ . '/../src/autodoc/Application.php'; |
||||
|
||||
# exécuter l'application |
||||
$app = new \Cilex\Application('Autodoc Generator Helper', '1.0.0'); |
||||
$app->command(new autodoc\Helpers\Command\FromSvn()); |
||||
$app->run(); |
@ -0,0 +1,42 @@
|
||||
<?php |
||||
|
||||
/* |
||||
* Commande d'execution … |
||||
*/ |
||||
|
||||
namespace autodoc\Helpers\Command; |
||||
|
||||
use Cilex\Command\Command; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputInterface; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console\Output\OutputInterface; |
||||
use autodoc\Helpers\Generator; |
||||
|
||||
/** |
||||
* Exécuter l'application… |
||||
*/ |
||||
class FromSvn extends Command |
||||
{ |
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('from:svn') |
||||
->setDescription("Exécuter l'autodoc sur une source SVN donnée") |
||||
->addArgument('source', InputArgument::REQUIRED, "URL de la source SVN") |
||||
#->addArgument('source', InputArgument::OPTIONAL, "URL de la source SVN") |
||||
#->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters') |
||||
; |
||||
} |
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) |
||||
{ |
||||
$source = $input->getArgument('source'); |
||||
|
||||
$output->writeln("Exécuter <info>autodoc</info> avec <info>$source</info>."); |
||||
|
||||
$generator = new Generator($input, $output); |
||||
$generator->generateFromSvn($source); |
||||
|
||||
} |
||||
} |
@ -0,0 +1,99 @@
|
||||
<?php |
||||
|
||||
/* |
||||
* Commande d'execution … |
||||
*/ |
||||
|
||||
namespace autodoc\Helpers; |
||||
|
||||
use Cilex\Command\Command; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputInterface; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console\Output\OutputInterface; |
||||
use autodoc\Helpers\Generator; |
||||
|
||||
/** |
||||
* Exécuter l'application… |
||||
*/ |
||||
class Generator |
||||
{ |
||||
private $input; |
||||
private $output; |
||||
|
||||
private $dirs = array(); |
||||
|
||||
public function __construct(InputInterface $input, OutputInterface $output) |
||||
{ |
||||
$this->input = $input; |
||||
$this->output = $output; |
||||
|
||||
# ce répertoire |
||||
$this->dirs['helper'] = realpath(__DIR__); |
||||
|
||||
# executable php de l'application autodoc (extension de l'application phpdocumentor) |
||||
$this->dirs['bin'] = realpath( $this->dirs['helper'] . '/../bin'); |
||||
|
||||
# répertoire racine (celui depuis lequel on execute ce script). |
||||
exec('pwd', $output); |
||||
$this->dirs['root'] = $output[0]; |
||||
|
||||
# répertoire de travail (celui où on écrira tout). |
||||
$this->dirs['work'] = $this->dirs['root'] . '/work'; |
||||
} |
||||
|
||||
/** |
||||
* Générer la documentation à partir d'une url SVN |
||||
* |
||||
* @param string $source URL SVN |
||||
**/ |
||||
public function generateFromSvn($source) { |
||||
$prefixe = 'default'; |
||||
$this->createDirectories($prefixe); |
||||
} |
||||
|
||||
/** |
||||
* Crée les répertoires nécessaires au fonctionnement de ce programme |
||||
* |
||||
* @param string $prefixe Préfixe utilisé pour cette génération |
||||
* @return bool true si réussi |
||||
**/ |
||||
private function createDirectories($prefixe) { |
||||
$_work = $this->dirs['work']; |
||||
$this->output->writeln("* Vérifier/créer les répertoires de travail dans <info>$_work</info>."); |
||||
|
||||
$this->createDirectory("output/$prefixe"); |
||||
$this->createDirectory("input/$prefixe"); |
||||
$this->createDirectory("log/$prefixe"); |
||||
$this->createDirectory("cache/$prefixe"); |
||||
} |
||||
|
||||
/** |
||||
* Créer un des répertoires d'utilisation |
||||
* |
||||
* Vérifie également que le répertoire est utilisable en écriture. |
||||
* |
||||
* @param string $chemin Répertoire à créer |
||||
* @return bool true si réussi |
||||
**/ |
||||
private function createDirectory($dir) { |
||||
$_dir = $this->dirs['work'] . '/' . $dir; |
||||
if (!is_dir($_dir)) { |
||||
$this->output->writeln(" - Création du répertoire <info>$dir</info>"); |
||||
|
||||
if (!@mkdir($_dir, 0755, true)) { |
||||
$this->output->writeln("<error>Impossible de créer le répertoire : $_dir</error>"); |
||||
$error = error_get_last(); |
||||
$this->output->writeln($error['message']); |
||||
return false; |
||||
} |
||||
|
||||
} |
||||
if (!is_writable($_dir)) { |
||||
$this->output->writeln("<error>Le répertoire $_dir n'est pas accessible en écriture</error>"); |
||||
return false; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?> |
||||
<phpdocumentor> |
||||
<parser> |
||||
<default-package-name>SPIP</default-package-name> |
||||
<encoding>utf-8</encoding> |
||||
<target>work/cache/@PREFIXE@</target> |
||||
<markers> |
||||
<item>TODO</item> |
||||
<item>FIXME</item> |
||||
</markers> |
||||
<extensions> |
||||
<extension>php</extension> |
||||
</extensions> |
||||
<visibility></visibility> |
||||
</parser> |
||||
<files> |
||||
<ignore-hidden>on</ignore-hidden> |
||||
<ignore-symlinks>on</ignore-symlinks> |
||||
|
||||
<ignore>tmp/*</ignore> |
||||
<ignore>lang/*</ignore> |
||||
<ignore>tests/*</ignore> |
||||
<ignore>test/*</ignore> |
||||
|
||||
<ignore>config/*</ignore> |
||||
<ignore>IMG/*</ignore> |
||||
<ignore>local/*</ignore> |
||||
<ignore>tmp/*</ignore> |
||||
<!-- ignore lib/ mais aussi svp/lib --> |
||||
<ignore>lib/*</ignore> |
||||
|
||||
<ignore>squelettes-dist/*</ignore> |
||||
</files> |
||||
<transformer> |
||||
<target>work/output/@PREFIXE@</target> |
||||
</transformer> |
||||
<logging> |
||||
<level>warn</level> |
||||
<paths> |
||||
<default>work/log/@PREFIXE@/phpdoc-{DATE}.log</default> |
||||
<errors>work/log/@PREFIXE@/phpdoc-{DATE}.errors.log</errors> |
||||
</paths> |
||||
</logging> |
||||
<transformations> |
||||
<template name="autodoc/templates/zora" /> |
||||
</transformations> |
||||
|
||||
<options> |
||||
<site value="http://code.spip.net/" /> |
||||
<proposer value="oui" /> |
||||
<description value="Documentation automatique du code PHP de SPIP." /> |
||||
<presentation value="Cette documentation est extraite automatiquement à partir du code source |
||||
PHP de la version en développement de SPIP." /> |
||||
<!--chemin value="autodoc/" / --> |
||||
</options> |
||||
</phpdocumentor> |
Loading…
Reference in new issue