public function testOutput() { $helper = new CliUserInterfaceHelper('test script', 'test.php'); $testUsage = $helper->addUsage('Test'); $test2Usage = $helper->addUsage('Test2'); $loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam imperdiet, erat sit amet porttitor volutpat, enim massa vestibulum purus, nec imperdiet tortor ligula nec augue. Donec consectetur diam sed lacus bibendum dictum. Aenean luctus, est eget vestibulum aliquam, mauris nisi vehicula orci, eget aliquam tellus lorem in nisl. Curabitur felis est, imperdiet a molestie in, aliquet eget metus. Cras pretium accumsan augue vel euismod.'; $helper->addSwitch('a', 'test', $loremIpsum, $testUsage, true, 'test', true); $helper->addSwitch('b', null, 'Test 2', null); $helper->addSwitch(null, 'test3', 'Test 3', $test2Usage, false); $helper->addSwitch('d', 'test4', 'Test 4', array($testUsage, $test2Usage), true, 'test4'); $expectedOutput = 'Usages: Test: test.php -b [-a[=<test>]|--test[=<test>]] [-d=<test4>|--test4=<test4>] Test2: test.php -b --test3 [-d=<test4>|--test4=<test4>] test script -a, --test Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam imperdiet, erat sit amet porttitor volutpat, enim massa vestibulum purus, nec imperdiet tortor ligula nec augue. Donec consectetur diam sed lacus bibendum dictum. Aenean luctus, est eget vestibulum aliquam, mauris nisi vehicula orci, eget aliquam tellus lorem in nisl. Curabitur felis est, imperdiet a molestie in, aliquet eget metus. Cras pretium accumsan augue vel euismod. -b Test 2 --test3 Test 3 -d, --test4 Test 4 '; $this->assertSame($expectedOutput, $helper->getUsageOutput(true)); $helper->setErrorMessage('Test error'); $expectedOutput = 'Error: Test error Usages: Test: test.php -b [-a[=<test>]|--test[=<test>]] [-d=<test4>|--test4=<test4>] Test2: test.php -b --test3 [-d=<test4>|--test4=<test4>] '; $this->assertSame($expectedOutput, $helper->getUsageOutput(false)); }
/** * Starts script execution. * * @return void * * @throws \Exception On errors */ public function run() { $this->setAsTerminator(); $eventHandlerRegistry = Application::getInstance()->getDiContainer()->getEventHandlerRegistry(); $eventHandlerRegistry->raise(new Event(Event::TYPE_APPLICATION_BEFORE_RUN)); $this->prepareSwitches(); try { $this->parseSwitches($this->cliHelper->getParsedArgs()); } catch (\Exception $exception) { $this->cliHelper->setErrorMessage($exception->getMessage()); // Set the exit code to invocation error if it's currently set to success. if ($this->getExitCode() == self::EXIT_CODE_SUCCESS) { $this->setExitCode(self::EXIT_CODE_INVOCATION_ERROR); } echo $this->cliHelper->getUsageOutput(false); // Re-throw the exception throw $exception; } $this->runBefore(); try { if ($this->currentUsage == self::HELP_USAGE) { echo $this->cliHelper->getUsageOutput(true); } else { $eventHandlerRegistry->raise(new Event(Event::TYPE_CONTROLLER_BEFORE_ACTION)); $this->execute(); $eventHandlerRegistry->raise(new Event(Event::TYPE_CONTROLLER_AFTER_ACTION)); } } catch (\Exception $exception) { $this->removeSignalHandler(); if (self::EXIT_CODE_SUCCESS == $this->getExitCode()) { $this->setExitCode(self::EXIT_CODE_UNHANDLED_EXCEPTION); } Application::getInstance()->getDiContainer()->getErrorHandlerRegistry()->handleException($exception); } $this->removeSignalHandler(); $this->runAfter(); $eventHandlerRegistry->raise(new Event(Event::TYPE_APPLICATION_AFTER_RUN)); }