public function executeAction()
    {
        $request = $this->request->getAll();
        $task = $this->pickTaskName($request);
        $options = $this->pickTaskOptions($request);

        try {
            if ($this->isUsage()) {
                $task = $this->taskProcessor->get($task);
                $this->send($task->getOption()->usage());
            } else {
                $this->task($task, $options);
            }
        } catch (NotFoundException $e) {
            return [self::FORWARD_ACTION, 'task.notfound'];
        } catch (OptionRequiredException $e) {
            $task = $this->taskProcessor->get($task);
            $this->send('%s is required.', $e->define->getName());
            $this->send('');
            $this->send($task->getOption()->usage());
        } catch (\Exception $e) {
            $this->send($e->getMessage());
        }
    }