translator = $translator; } /** * @var TranslatorHelper */ protected $translator; /** * @var string */ const MESSAGE_ERROR = 'error'; /** * @var string */ const MESSAGE_WARNING = 'warning'; /** * @var string */ const MESSAGE_INFO = 'info'; /** * @var string */ const MESSAGE_SUCCESS = 'success'; /** * @var array */ protected $types = [ self::MESSAGE_ERROR, self::MESSAGE_WARNING, self::MESSAGE_INFO, self::MESSAGE_SUCCESS ]; /** * @var array */ protected $messages = []; /** * @param $output * @param string $type */ public function showMessages($output, $type = null) { if ($type) { $messages = $this->messages[$type]; $this->showMessagesByType($output, $messages, $type); } foreach ($this->types as $messageType) { if (isset($this->messages[$messageType])) { $messages = $this->messages[$messageType]; $this->showMessagesByType($output, $messages, $messageType); } } } /** * @param $output * @param array $messages * @param string $type */ private function showMessagesByType($output, $messages, $type) { if ($messages) { foreach ($messages as $message) { $this->showMessage($output, $message, $type); } } } /** * @param $output * @param array $message * @param string $type */ public function showMessage($output, $message, $type = self::MESSAGE_INFO) { if ($type == self::MESSAGE_ERROR) { $style = 'bg=red;fg=white'; } if ($type == self::MESSAGE_WARNING) { $style = 'bg=magenta;fg=white'; } if ($type == self::MESSAGE_INFO) { $style = 'bg=blue;fg=white'; } if ($type == self::MESSAGE_SUCCESS) { $style = 'bg=green;fg=white'; } $output->writeln([ '', $this->getHelperSet()->get('formatter')->formatBlock( $message, $style, false ), '', ]); } /** * @param string $message * @param string $type */ private function addMessage($message, $type) { $this->messages[$type][] = $message; } /** * @param string $message */ public function addErrorMessage($message) { $this->addMessage($message, self::MESSAGE_ERROR); } /** * @param string $message */ public function addWarningMessage($message) { $this->addMessage($message, self::MESSAGE_WARNING); } /** * @param string $message */ public function addInfoMessage($message) { $this->addMessage($message, self::MESSAGE_INFO); } /** * @param string $message */ public function addSuccessMessage($message) { $this->addMessage($message, self::MESSAGE_SUCCESS); } /** * @param $output * @param string $files */ public function showGeneratedFiles($output, $files) { $this->showFiles( $output, $files, 'application.console.messages.files.generated', 'application.site.messages.path', DRUPAL_ROOT ); } /** * @param $output * @param string $files */ public function showCopiedFiles($output, $files) { $this->showFiles( $output, $files, 'application.console.messages.files.copied', 'application.user.messages.path', rtrim(getenv('HOME') ?: getenv('USERPROFILE'), '/\\') . '/.console/' ); } /** * @param $output * @param string $files * @param string $headerKey * @param string $pathKey * @param string $path+ */ private function showFiles($output, $files, $headerKey, $pathKey, $path) { if (!$files) { return; } $this->showMessage( $output, $this->translator->trans($headerKey) ); $output->writeln(sprintf( '%s: %s', $this->translator->trans($pathKey), $path )); $index = 1; foreach ($files as $file) { $this->showFile($output, $file, $index); $index++; } } /** * @param $output * @param string $file * @param int $index */ private function showFile($output, $file, $index) { $output->writeln(sprintf( '%s - %s', $index, $file )); } /** * {@inheritdoc} */ public function getName() { return 'message'; } }