AwsInspector\Command\CloudwatchLogs\TailCommand::interact PHP Method

interact() protected method

protected interact ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function interact(InputInterface $input, OutputInterface $output)
    {
        $logGroupName = $input->getArgument('group') ?: '*';
        $repository = new Repository();
        $groups = $repository->findLogGroups($logGroupName);
        if (count($groups) == 0) {
            throw new \InvalidArgumentException('Could not find any matching log groups');
        } elseif (count($groups) == 1) {
            $logGroupName = $groups->getFirst()->getLogGroupName();
        } else {
            $helper = $this->getHelper('question');
            $question = new ChoiceQuestion('Please select a log group', $groups->flatten('getLogGroupName'));
            $question->setErrorMessage('Log group %s is invalid.');
            $logGroupName = $helper->ask($input, $output, $question);
            $output->writeln('Selected log group: ' . $logGroupName);
        }
        $input->setArgument('group', $logGroupName);
        $logStreamName = $input->getArgument('stream') ?: '*';
        if ($logStreamName == '__FIRST__') {
            $streams = $repository->findLogStreams($logGroupName);
            $logStreamName = $streams->getFirst()->getLogStreamName();
        } else {
            $streams = $repository->findLogStreams($logGroupName, $logStreamName);
            if (count($streams) == 0) {
                throw new \InvalidArgumentException('Could not find any matching log streams');
            } elseif (count($streams) == 1) {
                $logStreamName = $streams->getFirst()->getLogStreamName();
            } else {
                $helper = $this->getHelper('question');
                $question = new ChoiceQuestion('Please select a log stream', $streams->flatten('getLogStreamName'));
                $question->setErrorMessage('Log stream %s is invalid.');
                $logStreamName = $helper->ask($input, $output, $question);
                $output->writeln('Selected log stream: ' . $logStreamName);
            }
        }
        $input->setArgument('stream', $logStreamName);
    }