refactor(modules): configure integrations through runtime contexts
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module\Configuration;
|
||||
|
||||
use KTXF\Module\ModuleInstanceInterface;
|
||||
|
||||
interface BrowserModuleContextInterface extends ModuleContextInterface
|
||||
{
|
||||
public function registerModule(
|
||||
ModuleInstanceInterface $module,
|
||||
string $namespace,
|
||||
?string $boot = null,
|
||||
): void;
|
||||
|
||||
public function set(string $key, mixed $value): void;
|
||||
|
||||
public function tenantIdentifier(): string;
|
||||
|
||||
public function identityIdentifier(): string;
|
||||
|
||||
/** @return array<string,array<string,mixed>> */
|
||||
public function modules(): array;
|
||||
|
||||
/** @return array<string,mixed> */
|
||||
public function configuration(): array;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module\Configuration;
|
||||
|
||||
interface ConsoleModuleContextInterface extends ModuleContextInterface
|
||||
{
|
||||
/** @param class-string $command */
|
||||
public function registerCommand(string $command): void;
|
||||
|
||||
/** @return list<class-string> */
|
||||
public function commands(): array;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module\Configuration;
|
||||
|
||||
interface ModuleContextInterface
|
||||
{
|
||||
public function type(): ModuleContextType;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module\Configuration;
|
||||
|
||||
enum ModuleContextType: string
|
||||
{
|
||||
case Browser = 'browser';
|
||||
case Console = 'console';
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module;
|
||||
|
||||
/**
|
||||
* Module Browser Interface
|
||||
*/
|
||||
interface ModuleBrowserInterface
|
||||
{
|
||||
public function registerBI(): array;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Module;
|
||||
|
||||
/**
|
||||
* Module Console Interface
|
||||
*/
|
||||
interface ModuleConsoleInterface
|
||||
{
|
||||
public function registerCI(): array;
|
||||
}
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace KTXF\Module;
|
||||
|
||||
use KTXF\Module\Configuration\ModuleContextInterface;
|
||||
|
||||
abstract class ModuleInstanceAbstract implements ModuleInstanceInterface
|
||||
{
|
||||
// mandatory methods that must be implemented by each concrete module
|
||||
@@ -46,6 +48,11 @@ abstract class ModuleInstanceAbstract implements ModuleInstanceInterface
|
||||
// Override in specific modules if needed
|
||||
}
|
||||
|
||||
public function configure(ModuleContextInterface $context): void
|
||||
{
|
||||
// Override when the module supplies browser or console integrations.
|
||||
}
|
||||
|
||||
/**
|
||||
* Permissions provided by this module
|
||||
*
|
||||
|
||||
@@ -2,8 +2,15 @@
|
||||
|
||||
namespace KTXF\Module;
|
||||
|
||||
use KTXF\Module\Configuration\ModuleContextInterface;
|
||||
|
||||
interface ModuleInstanceInterface
|
||||
{
|
||||
/**
|
||||
* Declare the integrations supplied by this module.
|
||||
*/
|
||||
public function configure(ModuleContextInterface $context): void;
|
||||
|
||||
/**
|
||||
* Get module version
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user