- Working on CLI modules
This commit is contained in:
		
							parent
							
								
									52c7407519
								
							
						
					
					
						commit
						41083c767a
					
				
							
								
								
									
										51
									
								
								meta/definitions/cli.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								meta/definitions/cli.php
									
									
									
									
									
										Normal file
									
								
							| @ -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) { | ||||
|         return function (ContainerInterface $container) { | ||||
| @ -94,7 +94,6 @@ return [ | ||||
|             } | ||||
| 
 | ||||
|             $routing = $container->get(Lean\Routing::class); | ||||
| 
 | ||||
|             $routing->registerRoute($container, getenv('URL_BASE')); | ||||
| 
 | ||||
|             return $router; | ||||
|  | ||||
| @ -6,6 +6,7 @@ use Laminas\Diactoros\Response\HtmlResponse; | ||||
| 
 | ||||
| use TheBugs\JavascriptMiddleware; | ||||
| 
 | ||||
| 
 | ||||
| use Cronard\CronardMiddleware, | ||||
|     Notes\Cronard\TaskFetcher; | ||||
| 
 | ||||
|  | ||||
| @ -34,6 +34,10 @@ return array_merge( | ||||
|             'cronard' => [ | ||||
|                 '%ESCAPED_NAMESPACE%\\Controller' => implode(DIRECTORY_SEPARATOR, [ getenv("PROJECT_PATH"), 'src', 'Controller', '' ]), | ||||
|             ], | ||||
| 
 | ||||
|             'cli' => [ | ||||
|                 '%ESCAPED_NAMESPACE%\\Controller' => implode(DIRECTORY_SEPARATOR, [ getenv("PROJECT_PATH"), 'src', 'Controller', '' ]), | ||||
|             ], | ||||
|         ], | ||||
|     ], | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								skeleton/meta/definitions/env/dev.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								skeleton/meta/definitions/env/dev.php
									
									
									
									
										vendored
									
									
								
							| @ -15,5 +15,6 @@ return [ | ||||
|     '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), | ||||
|     '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), | ||||
| ]; | ||||
|  | ||||
							
								
								
									
										1
									
								
								skeleton/meta/definitions/env/prod.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								skeleton/meta/definitions/env/prod.php
									
									
									
									
										vendored
									
									
								
							| @ -49,4 +49,5 @@ return [ | ||||
|     '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)), | ||||
|     '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 | ||||
|     { | ||||
|         return false; | ||||
|         return getenv('DEBUG'); | ||||
|     } | ||||
| 
 | ||||
|     public function is_admin(User $user) : bool | ||||
|  | ||||
| @ -16,6 +16,8 @@ class Application | ||||
| 
 | ||||
|     public array $routes; | ||||
| 
 | ||||
|     public array $cli; | ||||
| 
 | ||||
|     public array $cronard; | ||||
| 
 | ||||
|     public array $entities; | ||||
| @ -73,10 +75,15 @@ class Application | ||||
|         if (is_array($data['cronard'] ?? false)) { | ||||
|             $this->cronard = $data['cronard']; | ||||
|         } | ||||
| 
 | ||||
|         if (is_array($data['events'] ?? false)) { | ||||
|             $this->events = $data['events']; | ||||
|         } | ||||
| 
 | ||||
|         if (is_array($data['cli'] ?? false)) { | ||||
|             $this->cli = $data['cli']; | ||||
|         } | ||||
| 
 | ||||
|         return $this; | ||||
|     } | ||||
| } | ||||
| @ -117,6 +117,22 @@ trait ControllerTrait { | ||||
|         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) | ||||
|     { | ||||
|         if ( $response->getStatusCode() === 200 ) { | ||||
|  | ||||
| @ -83,6 +83,11 @@ class Lean | ||||
|         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 | ||||
|     { | ||||
|         return array_merge(...array_map(fn($app) => $app->events ?? [], $this->applications)); | ||||
| @ -128,6 +133,7 @@ class Lean | ||||
|         $path = dirname(__DIR__) . "/meta/definitions/"; | ||||
| 
 | ||||
|         return array_merge( | ||||
|             require($path . "cli.php"), | ||||
|             require($path . "cronard.php"), | ||||
|             require($path . "email.php"), | ||||
|             require($path . "event.php"), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user