function ValidatingArrayLoader::hasPackageNamingError
2 calls to ValidatingArrayLoader::hasPackageNamingError()
- RootPackageLoader::load in vendor/
composer/ composer/ src/ Composer/ Package/ Loader/ RootPackageLoader.php - @inheritDoc
- ValidatingArrayLoader::load in vendor/
composer/ composer/ src/ Composer/ Package/ Loader/ ValidatingArrayLoader.php - @inheritDoc
File
-
vendor/
composer/ composer/ src/ Composer/ Package/ Loader/ ValidatingArrayLoader.php, line 459
Class
- ValidatingArrayLoader
- @author Jordi Boggiano <j.boggiano@seld.be>
Namespace
Composer\Package\LoaderCode
public static function hasPackageNamingError(string $name, bool $isLink = false) : ?string {
if (PlatformRepository::isPlatformPackage($name)) {
return null;
}
if (!Preg::isMatch('{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD', $name)) {
return $name . ' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$".';
}
$reservedNames = [
'nul',
'con',
'prn',
'aux',
'com1',
'com2',
'com3',
'com4',
'com5',
'com6',
'com7',
'com8',
'com9',
'lpt1',
'lpt2',
'lpt3',
'lpt4',
'lpt5',
'lpt6',
'lpt7',
'lpt8',
'lpt9',
];
$bits = explode('/', strtolower($name));
if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) {
return $name . ' is reserved, package and vendor names can not match any of: ' . implode(', ', $reservedNames) . '.';
}
if (Preg::isMatch('{\\.json$}', $name)) {
return $name . ' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.';
}
if (Preg::isMatch('{[A-Z]}', $name)) {
if ($isLink) {
return $name . ' is invalid, it should not contain uppercase characters. Please use ' . strtolower($name) . ' instead.';
}
$suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name);
$suggestName = strtolower($suggestName);
return $name . ' is invalid, it should not contain uppercase characters. We suggest using ' . $suggestName . ' instead.';
}
return null;
}