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);
}