Skip to content
Snippets Groups Projects
Commit 6f73e489 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Possibilité d'utiliser la ligne de commande pour le générateur de code

parent bb54901e
Branches
Tags
No related merge requests found
......@@ -49,6 +49,6 @@ foreach ($privilegesConsts as $const => $value) {
$params['template'] = 'Privileges';
$params['privileges'] = $data;
$params['filename'] = 'module/Application/Provider/Privilege/Privileges.php';
$params['filename'] = 'module/Application/src/Application/Provider/Privilege/Privileges.php';
$cg->end($params);
\ No newline at end of file
......@@ -8,6 +8,8 @@ use UnicaenCode\Form\CustomForm;
use UnicaenCode\Generator\GeneratorInterface;
use UnicaenCode\Service\Traits\ConfigServiceAwareTrait;
use UnicaenCode\Util;
use Zend\Console\Console;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Stdlib\ArrayUtils;
......@@ -39,6 +41,12 @@ class CodeGeneratorService
}
public function isSrcWritable(): bool
{
return is_writable(getcwd());
}
/**
* @param string $outputDir
......@@ -68,6 +76,8 @@ class CodeGeneratorService
*/
public function formPublish(AbstractForm $form)
{
if (Console::isConsole()) return $this->paramsFromConsole();
$form->add([
'type' => 'Submit',
'name' => 'echo',
......@@ -107,6 +117,33 @@ class CodeGeneratorService
protected function paramsFromConsole(): array
{
$params = [];
$request = Util::$controller->getRequest();
$ps = $request->getParams()->toArray();
$i = 0;
while (array_key_exists('p' . $i, $ps)) {
$param = $ps['p' . $i];
$eq = strpos($param, '=');
if (false !== $eq) {
$key = substr($param, 0, $eq);
$value = substr($param, $eq + 1);
if ($value === 'true') $value = true;
if ($value === 'false') $value = false;
$params[$key] = $value;
}
$i++;
}
return $params;
}
protected function displayForm(AbstractForm $form)
{
if (count($form->getElements()) > 2) {
......@@ -161,7 +198,7 @@ class CodeGeneratorService
if ($echo) {
echo '<h3>Génération du code source</h3>';
}
if ($write) {
if ($write && !$this->isSrcWritable()) {
?><h3>Ajout des fichiers au projet</h3>
<div class="alert alert-success">
Pour des raisons de sécurité, les fichiers PHP ne peuvent pas être ajoutés directement au code source.<br/>
......@@ -244,7 +281,6 @@ class CodeGeneratorService
protected function runTriggers(array $params): array
{
$triggers = $this->getServiceConfig()->getTriggers();
......@@ -462,7 +498,8 @@ class CodeGeneratorService
return $this;
}
$filename = $this->getOutputDir() . '/' . $filename;
$outputDir = $this->isSrcWritable() ? getcwd() : $this->getOutputDir();
$filename = $outputDir . '/' . $filename;
$parts = explode('/', substr($filename, 1));
array_pop($parts);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment