public function handleAdd(Args $args) { $descriptions = $args->getOption('description'); $parameters = array(); // The first description is for the installer $description = $descriptions ? array_shift($descriptions) : null; foreach ($args->getOption('param') as $parameter) { // Subsequent descriptions are for the parameters $paramDescription = $descriptions ? array_shift($descriptions) : null; // Optional parameter with default value if (false !== ($pos = strpos($parameter, '='))) { $parameters[] = new InstallerParameter(substr($parameter, 0, $pos), InstallerParameter::OPTIONAL, StringUtil::parseValue(substr($parameter, $pos + 1)), $paramDescription); continue; } // Required parameter $parameters[] = new InstallerParameter($parameter, InstallerParameter::REQUIRED, null, $paramDescription); } $this->installerManager->addRootInstallerDescriptor(new InstallerDescriptor($args->getArgument('name'), $args->getArgument('class'), $description, $parameters)); return 0; }