- Working on CLI modules
This commit is contained in:
parent
52c7407519
commit
41083c767a
|
@ -0,0 +1,51 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use function DI\autowire, DI\create, DI\get;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
|
use Mcnd\CLI\CliMiddleware;
|
||||||
|
|
||||||
|
use Notes\CLI\CommandFetcher;
|
||||||
|
|
||||||
|
use Lean\Lean;
|
||||||
|
|
||||||
|
return [
|
||||||
|
/*CronardMiddleware::class => function($c) {
|
||||||
|
$cronardMiddleware = new CronardMiddleware($c, getenv('CRON_KEY'), function() : ResponseInterface {
|
||||||
|
return new HtmlResponse(sprintf("%s - cron task begin...", date('Y-m-d H:i:s')));
|
||||||
|
}, [], $c->get(TaskFetcher::class));
|
||||||
|
|
||||||
|
return $cronardMiddleware->fromFile(getenv("META_PATH")."/crontab.php")->fromAnnotations($c->get(TaskFetcher::class));
|
||||||
|
},
|
||||||
|
|
||||||
|
TaskFetcher::class => function($c) {
|
||||||
|
$fetcher = new TaskFetcher(null, null, $c->get('cronard.caching'));
|
||||||
|
|
||||||
|
$fetcher->setFolderList(array_map(function($item) {
|
||||||
|
return $item;
|
||||||
|
}, $c->get(Lean::class)->getCronard()));
|
||||||
|
|
||||||
|
return $fetcher;
|
||||||
|
},*/
|
||||||
|
|
||||||
|
CommandFetcher::class => function($c) {
|
||||||
|
$fetcher = new CommandFetcher(null, null, $c->get('cli.caching'));
|
||||||
|
|
||||||
|
$fetcher->setFolderList(array_map(function($item) {
|
||||||
|
return $item;
|
||||||
|
}, $c->get(Lean::class)->getCli()));
|
||||||
|
|
||||||
|
return $fetcher;
|
||||||
|
},
|
||||||
|
|
||||||
|
CliMiddleware::class => function($c) {
|
||||||
|
return new CliMiddleware($c, $c->get('cli.response:default'), $c->get(CommandFetcher::class));
|
||||||
|
},
|
||||||
|
|
||||||
|
'cli.response:default' => function($c) {
|
||||||
|
return function() {
|
||||||
|
return new \Laminas\Diactoros\Response\TextResponse("This is the default response from CLI middleware which indicates that no command were registered for this application.\n");
|
||||||
|
};
|
||||||
|
},
|
||||||
|
];
|
|
@ -81,7 +81,7 @@ return [
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
'routes.middlewares' => [ "dump", "errorHandler", SessionMiddleware::class, CronardMiddleware::class, Mcnd\Event\EventMiddleware::class, HttpBasicAuthentication::class ],
|
'routes.middlewares' => [ "dump", "errorHandler", SessionMiddleware::class, CronardMiddleware::class, Mcnd\Event\EventMiddleware::class, Mcnd\CLI\CliMiddleware::class, ],
|
||||||
|
|
||||||
'routes.list' => function($c) {
|
'routes.list' => function($c) {
|
||||||
return function (ContainerInterface $container) {
|
return function (ContainerInterface $container) {
|
||||||
|
@ -94,7 +94,6 @@ return [
|
||||||
}
|
}
|
||||||
|
|
||||||
$routing = $container->get(Lean\Routing::class);
|
$routing = $container->get(Lean\Routing::class);
|
||||||
|
|
||||||
$routing->registerRoute($container, getenv('URL_BASE'));
|
$routing->registerRoute($container, getenv('URL_BASE'));
|
||||||
|
|
||||||
return $router;
|
return $router;
|
||||||
|
|
|
@ -6,6 +6,7 @@ use Laminas\Diactoros\Response\HtmlResponse;
|
||||||
|
|
||||||
use TheBugs\JavascriptMiddleware;
|
use TheBugs\JavascriptMiddleware;
|
||||||
|
|
||||||
|
|
||||||
use Cronard\CronardMiddleware,
|
use Cronard\CronardMiddleware,
|
||||||
Notes\Cronard\TaskFetcher;
|
Notes\Cronard\TaskFetcher;
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,10 @@ return array_merge(
|
||||||
'cronard' => [
|
'cronard' => [
|
||||||
'%ESCAPED_NAMESPACE%\\Controller' => implode(DIRECTORY_SEPARATOR, [ getenv("PROJECT_PATH"), 'src', 'Controller', '' ]),
|
'%ESCAPED_NAMESPACE%\\Controller' => implode(DIRECTORY_SEPARATOR, [ getenv("PROJECT_PATH"), 'src', 'Controller', '' ]),
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'cli' => [
|
||||||
|
'%ESCAPED_NAMESPACE%\\Controller' => implode(DIRECTORY_SEPARATOR, [ getenv("PROJECT_PATH"), 'src', 'Controller', '' ]),
|
||||||
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -15,5 +15,6 @@ return [
|
||||||
'breadcrumbs.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.breadcrumbs", 30),
|
'breadcrumbs.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.breadcrumbs", 30),
|
||||||
'ulmus.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "ulmus.entities", 30),
|
'ulmus.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "ulmus.entities", 30),
|
||||||
'cronard.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cronards", 30),
|
'cronard.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cronards", 30),
|
||||||
'events.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.events", random_int(3600, 7200)),
|
'events.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.events", 30),
|
||||||
|
'cli.caching' => create(Kash\ArrayCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cli", 30),
|
||||||
];
|
];
|
||||||
|
|
|
@ -49,4 +49,5 @@ return [
|
||||||
'ulmus.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "ulmus.entities", random_int(3600, 7200)),
|
'ulmus.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "ulmus.entities", random_int(3600, 7200)),
|
||||||
'cronard.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cronards", random_int(3600, 7200)),
|
'cronard.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cronards", random_int(3600, 7200)),
|
||||||
'events.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.events", random_int(3600, 7200)),
|
'events.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.events", random_int(3600, 7200)),
|
||||||
|
'cli.caching' => create(Kash\ApcuCache::class)->constructor( get(Kash\CacheInvalidator::class), "lean.cli", random_int(3600, 7200)),
|
||||||
];
|
];
|
|
@ -25,7 +25,7 @@ class PrivilegeGrantAccess implements PermissionGrantInterface {
|
||||||
*/
|
*/
|
||||||
public function is_dev() : bool
|
public function is_dev() : bool
|
||||||
{
|
{
|
||||||
return false;
|
return getenv('DEBUG');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function is_admin(User $user) : bool
|
public function is_admin(User $user) : bool
|
||||||
|
|
|
@ -16,6 +16,8 @@ class Application
|
||||||
|
|
||||||
public array $routes;
|
public array $routes;
|
||||||
|
|
||||||
|
public array $cli;
|
||||||
|
|
||||||
public array $cronard;
|
public array $cronard;
|
||||||
|
|
||||||
public array $entities;
|
public array $entities;
|
||||||
|
@ -73,10 +75,15 @@ class Application
|
||||||
if (is_array($data['cronard'] ?? false)) {
|
if (is_array($data['cronard'] ?? false)) {
|
||||||
$this->cronard = $data['cronard'];
|
$this->cronard = $data['cronard'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($data['events'] ?? false)) {
|
if (is_array($data['events'] ?? false)) {
|
||||||
$this->events = $data['events'];
|
$this->events = $data['events'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_array($data['cli'] ?? false)) {
|
||||||
|
$this->cli = $data['cli'];
|
||||||
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -117,6 +117,22 @@ trait ControllerTrait {
|
||||||
return new FileDownloadResponse($path, $code, $headers);
|
return new FileDownloadResponse($path, $code, $headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function renderCLI(ServerRequestInterface $request, mixed $data) : ResponseInterface
|
||||||
|
{
|
||||||
|
if ($data instanceof \JsonSerializable ) {
|
||||||
|
return $this->renderJson(
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
}
|
||||||
|
elseif ( is_array($data) ) {
|
||||||
|
var_export($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->renderText(
|
||||||
|
$data . PHP_EOL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function fromResponse(ResponseInterface $response)
|
public function fromResponse(ResponseInterface $response)
|
||||||
{
|
{
|
||||||
if ( $response->getStatusCode() === 200 ) {
|
if ( $response->getStatusCode() === 200 ) {
|
||||||
|
|
|
@ -83,6 +83,11 @@ class Lean
|
||||||
return array_merge(...array_map(fn($app) => $app->cronard ?? [], $this->applications));
|
return array_merge(...array_map(fn($app) => $app->cronard ?? [], $this->applications));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCLI() : array
|
||||||
|
{
|
||||||
|
return array_merge(...array_map(fn($app) => $app->cli ?? [], $this->applications));
|
||||||
|
}
|
||||||
|
|
||||||
public function getEvents() : array
|
public function getEvents() : array
|
||||||
{
|
{
|
||||||
return array_merge(...array_map(fn($app) => $app->events ?? [], $this->applications));
|
return array_merge(...array_map(fn($app) => $app->events ?? [], $this->applications));
|
||||||
|
@ -128,6 +133,7 @@ class Lean
|
||||||
$path = dirname(__DIR__) . "/meta/definitions/";
|
$path = dirname(__DIR__) . "/meta/definitions/";
|
||||||
|
|
||||||
return array_merge(
|
return array_merge(
|
||||||
|
require($path . "cli.php"),
|
||||||
require($path . "cronard.php"),
|
require($path . "cronard.php"),
|
||||||
require($path . "email.php"),
|
require($path . "email.php"),
|
||||||
require($path . "event.php"),
|
require($path . "event.php"),
|
||||||
|
|
Loading…
Reference in New Issue