. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\ApplicationRunners; use Espo\Core\Application\Exceptions\RunnerException; use Espo\Core\Application\RunnerParameterized; use Espo\Core\Application\Runner\Params; use Espo\Core\EntryPoint\Params as EntryPointParams; use Espo\Core\EntryPoint\Starter; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Exceptions\NotFound; use RuntimeException; /** * Runs an entry point. */ class EntryPoint implements RunnerParameterized { public const string PARAM_ENTRY_POINT = 'entryPoint'; public const string PARAM_FINAL = 'final'; public function __construct(private Starter $starter) {} public function run(Params $params): void { $entryPointParams = new EntryPointParams( name: $this->getName($params), final: $params->get(self::PARAM_FINAL) === true, ); try { $this->starter->start($entryPointParams); } catch (Forbidden|NotFound $e) { $message = $e->getMessage(); throw new RunnerException($message, previous: $e); } } private function getName(Params $params): ?string { $name = $params->get(self::PARAM_ENTRY_POINT); if ($name !== null && !is_string($name)) { throw new RuntimeException("Bad 'entryPoint' value."); } return $name; } }