/**
* {@inheritdoc}
* @throws \Phpro\SoapClient\Exception\InvalidArgumentException
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$configFile = $input->getOption('config');
if (!$configFile || !$this->filesystem->fileExists($configFile)) {
throw InvalidArgumentException::invalidConfigFile();
}
$config = (include $configFile);
if (!$config instanceof ConfigInterface) {
throw InvalidArgumentException::invalidConfigFile();
}
$soapClient = new SoapClient($config->getWsdl(), $config->getSoapOptions());
$typeMap = TypeMap::fromSoapClient($config->getNamespace(), $soapClient);
$file = new FileGenerator();
$generator = new ClassMapGenerator($config->getRuleSet());
$output->write($generator->generate($file, $typeMap));
}