X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FvalidateRegistrationFile.php;h=b9baf8ce7252e54a5d1b58eed5c4bc8acbb60cd3;hb=66e215baee366f08fb106823020b74e529cff877;hp=bd34a50eab3a5c1ebadb56a04ec56c8e2ce3389a;hpb=d1cb2084b71fa31012697575d8528a02e10a92bc;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/validateRegistrationFile.php b/maintenance/validateRegistrationFile.php index bd34a50eab..b9baf8ce72 100644 --- a/maintenance/validateRegistrationFile.php +++ b/maintenance/validateRegistrationFile.php @@ -2,14 +2,21 @@ require_once __DIR__ . '/Maintenance.php'; +use Composer\Spdx\SpdxLicenses; +use JsonSchema\Validator; + class ValidateRegistrationFile extends Maintenance { public function __construct() { parent::__construct(); $this->addArg( 'path', 'Path to extension.json/skin.json file.', true ); } public function execute() { - if ( !class_exists( 'JsonSchema\Validato' ) ) { + if ( !class_exists( Validator::class ) ) { $this->error( 'The JsonSchema library cannot be found, please install it through composer.', 1 ); + } elseif ( !class_exists( SpdxLicenses::class ) ) { + $this->error( + 'The spdx-licenses library cannot be found, please install it through composer.', 1 + ); } $path = $this->getArg( 0 ); @@ -38,14 +45,29 @@ class ValidateRegistrationFile extends Maintenance { $this->output( "Warning: $path is using a deprecated schema, and should be updated to " . ExtensionRegistry::MANIFEST_VERSION . "\n" ); } - $validator = new JsonSchema\Validator; - $validator->check( $data, (object) [ '$ref' => 'file://' . $schemaPath ] ); - if ( $validator->isValid() ) { + + $licenseError = false; + // Check if it's a string, if not, schema validation will display an error + if ( isset( $data->{'license-name'} ) && is_string( $data->{'license-name'} ) ) { + $licenses = new SpdxLicenses(); + $valid = $licenses->validate( $data->{'license-name'} ); + if ( !$valid ) { + $licenseError = '[license-name] Invalid SPDX license identifier, ' + . 'see '; + } + } + + $validator = new Validator; + $validator->check( $data, (object)[ '$ref' => 'file://' . $schemaPath ] ); + if ( $validator->isValid() && !$licenseError ) { $this->output( "$path validates against the version $version schema!\n" ); } else { foreach ( $validator->getErrors() as $error ) { $this->output( "[{$error['property']}] {$error['message']}\n" ); } + if ( $licenseError ) { + $this->output( "$licenseError\n" ); + } $this->error( "$path does not validate.", 1 ); } }