Validate licenses correctly even when proprietary is combined with some other license, fixes #9144
parent
45246aca22
commit
b847c4dc3a
|
@ -111,28 +111,30 @@ class ValidatingArrayLoader implements LoaderInterface
|
||||||
if (is_array($this->config['license']) || is_string($this->config['license'])) {
|
if (is_array($this->config['license']) || is_string($this->config['license'])) {
|
||||||
$licenses = (array) $this->config['license'];
|
$licenses = (array) $this->config['license'];
|
||||||
|
|
||||||
// strip proprietary since it's not a valid SPDX identifier, but is accepted by composer
|
|
||||||
foreach ($licenses as $key => $license) {
|
|
||||||
if ('proprietary' === $license) {
|
|
||||||
unset($licenses[$key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$licenseValidator = new SpdxLicenses();
|
$licenseValidator = new SpdxLicenses();
|
||||||
if (count($licenses) === 1 && !$licenseValidator->validate($licenses) && $licenseValidator->validate(trim($licenses[0]))) {
|
foreach ($licenses as $license) {
|
||||||
|
// replace proprietary by MIT for validation purposes since it's not a valid SPDX identifier, but is accepted by composer
|
||||||
|
if ('proprietary' === $license) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$licenseToValidate = str_replace('proprietary', 'MIT', $license);
|
||||||
|
if (!$licenseValidator->validate($licenseToValidate)) {
|
||||||
|
if ($licenseValidator->validate(trim($licenseToValidate))) {
|
||||||
$this->warnings[] = sprintf(
|
$this->warnings[] = sprintf(
|
||||||
'License %s must not contain extra spaces, make sure to trim it.',
|
'License %s must not contain extra spaces, make sure to trim it.',
|
||||||
json_encode($this->config['license'])
|
json_encode($license)
|
||||||
);
|
);
|
||||||
} elseif (array() !== $licenses && !$licenseValidator->validate($licenses)) {
|
} else {
|
||||||
$this->warnings[] = sprintf(
|
$this->warnings[] = sprintf(
|
||||||
'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL .
|
'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL .
|
||||||
'If the software is closed-source, you may use "proprietary" as license.',
|
'If the software is closed-source, you may use "proprietary" as license.',
|
||||||
json_encode($this->config['license'])
|
json_encode($license)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->validateArray('authors') && !empty($this->config['authors'])) {
|
if ($this->validateArray('authors') && !empty($this->config['authors'])) {
|
||||||
foreach ($this->config['authors'] as $key => $author) {
|
foreach ($this->config['authors'] as $key => $author) {
|
||||||
|
|
Loading…
Reference in New Issue