/**
* Create a new API-First enabled module
*
* @param array|object $data
* @return ModuleEntity
* @throws CreationException
*/
public function create($data)
{
if (is_object($data)) {
$data = (array) $data;
}
if (!isset($data['name'])) {
throw new CreationException('Missing module name');
}
$version = isset($data['version']) ? $data['version'] : 1;
$name = $data['name'];
$name = str_replace('.', '\\', $name);
if (!preg_match('/^[a-zA-Z][a-zA-Z0-9_]*(\\\+[a-zA-Z][a-zA-Z0-9_]*)?$/', $name)) {
throw new CreationException('Invalid module name; must be a valid PHP namespace name');
}
if (false === $this->modules->createModule($name, $this->modulePathSpec)) {
throw new CreationException('Unable to create module; check your paths and permissions');
}
$metadata = new ModuleEntity($name);
$metadata->exchangeArray(array(
'versions' => array($version),
));
return $metadata;
}