. */ namespace SP\Modules\Cli; use Exception; use SP\Core\Application; use SP\Core\Context\ContextException; use SP\Core\Language; use SP\Core\ModuleBase; use SP\Core\ProvidersHelper; use SP\Domain\Common\Providers\Version; use SP\Domain\Core\LanguageInterface; use Symfony\Component\Console\Application as ConsoleApplication; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use function SP\logger; /** * Class Init * * @package SP\Modules\Cli */ final class Init extends ModuleBase { private Language $language; private InputInterface $input; private OutputInterface $output; private ConsoleApplication $consoleApplication; private CliCommandHelper $cliCommandHelper; public function __construct( Application $application, ProvidersHelper $providersHelper, LanguageInterface $language, ConsoleApplication $consoleApplication, InputInterface $input, OutputInterface $output, CliCommandHelper $cliCommandHelper ) { $this->language = $language; $this->consoleApplication = $consoleApplication; $this->input = $input; $this->output = $output; $this->cliCommandHelper = $cliCommandHelper; parent::__construct( $application, $providersHelper ); } /** * @throws ContextException * @throws Exception */ public function initialize(string $controller): void { logger(__FUNCTION__); // Initialize context $this->context->initialize(); // Load language $this->language->setLanguage(); $this->initCli(); } /** * @throws Exception */ private function initCli(): void { $this->consoleApplication->setName('sysPass CLI'); $this->consoleApplication->setVersion(implode('.', Version::getVersionArray())); $this->consoleApplication->addCommands($this->cliCommandHelper->getCommands()); $this->consoleApplication->run( $this->input, $this->output ); } }