76 lines
2.4 KiB
PHP
76 lines
2.4 KiB
PHP
<?php
|
|
namespace ProVM\Projects\Common\Controller\Web;
|
|
|
|
use Psr\Http\Message\RequestInterface as Request;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use ProVM\Common\Alias\View;
|
|
use ProVM\Common\Service\Composer;
|
|
use ProVM\Projects\Common\Service\Projects;
|
|
|
|
class Create {
|
|
/**
|
|
* Step 1
|
|
* Formulario de datos
|
|
*/
|
|
public function __invoke(Request $request, Response $response, View $view): Response {
|
|
$defaults = (object) [
|
|
'require' => [
|
|
'slim/slim',
|
|
'nyholm/psr7',
|
|
'nyholm/psr7-server',
|
|
'php-di/slim-bridge',
|
|
'rubellum/slim-blade-view',
|
|
'nesbot/carbon'
|
|
],
|
|
'require-dev' => [
|
|
'phpunit/phpunit',
|
|
'kint-php/kint'
|
|
]
|
|
];
|
|
return $view->render($response, 'create.step1', compact('defaults'));
|
|
}
|
|
/**
|
|
* Step 2
|
|
* Revision y confirmacion de datos
|
|
*/
|
|
public function step2(Request $request, Response $response, Composer $composer, Projects $service, View $view): Response {
|
|
$post = $request->getParsedBody();
|
|
$name = $post['nombre'];
|
|
$exists = $service->exists($name);
|
|
$require = explode(',', $post['dependencias'][0]);
|
|
$require = $composer->getLatest($require, Composer::MAYOR);
|
|
$require_dev = explode(',', $post['dependencias-dev'][0]);
|
|
$require_dev = $composer->getLatest($require_dev, Composer::MAYOR);
|
|
$json = json_encode([
|
|
'name' => implode('/', ['provm', $name]),
|
|
'descripcion' => $post['descripcion'],
|
|
'type' => 'project',
|
|
'require' => $require,
|
|
'require-dev' => $require_dev,
|
|
'authors' => [
|
|
[
|
|
'name' => 'Aldarien',
|
|
'email' => 'aldarien85@gmail.com'
|
|
]
|
|
],
|
|
'autoload' => [
|
|
'psr-4' => [
|
|
implode("\\", [
|
|
'ProVM',
|
|
ucwords($post['nombre']),
|
|
'Common'
|
|
]) . "\\" => 'common'
|
|
]
|
|
]
|
|
], \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE);
|
|
return $view->render($response, 'create.step2', ['step' => 2, 'exists' => $exists, 'composer' => $json]);
|
|
}
|
|
public function step3(Request $request, Response $response, Projects $service, View $view): Response {
|
|
$post = $request->getParsedBody();
|
|
$name = explode('/', json_decode($post['composer'])->name)[1];
|
|
$composer = $post['composer'];
|
|
$step = 3;
|
|
return $view->render($response, 'create.step3', compact('step', 'name', 'composer'));
|
|
}
|
|
}
|