blob: ffafb2bbbb512f60be6baab148f8d7fcc322d248 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2017 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
use Composer\Spdx\SpdxLicenses;
require_once(dirname(__FILE__) . '/spdx-licenses/src/SpdxLicenses.php');
class SPDX {
static $SpdxLicenses;
private static function getSpdxLicenses() {
if (!self::$SpdxLicenses)
self::$SpdxLicenses = new SpdxLicenses();
return self::$SpdxLicenses;
}
/**
* Normalize the license text into an SPDX expression if possible.
*
* We have lots of old data that expresses licenses in various
* forms. This function tries to make sense of the form to express
* what's there in SPDX format.
*
* @param string $text
* @return string
*/
static function asSpdx($text) {
// if ($spdx = self::getSpdxLicenses()->getIdentifierByName($text))
// return $spdx;
$replacements = array(
'/ASL/' => 'Apache-2.0',
'/Apache 1\.1/i' => 'Apache-1.1',
'/Apache License,? 2\.0/i' => 'Apache-2.0',
'/Apache Software License 1\.1/' => 'Apache-1.1',
'/New BSD License/i' => 'BSD-2-Clause',
'/Common Development and Distribution License(?=,|$)/i' => 'CDDL-1.0',
'/Common Development and Distribution License 1\.0/i' => 'CDDL-1.0',
'/Common Development and Distribution License 1\.1/i' => 'CDDL-1.1',
'/Creative Commons Attribution(?: License)? (\d\.\d)(?: unported)?(?: international)?/i' => 'CC-BY-\1',
'/Common Public License 1\.0/i' => 'CPL-1.0',
'/Eclipse Public License(?=,|$)/i' => 'EPL-1.0',
'/Eclipse Public License v?1\.0/i' => 'EPL-1.0',
'/MIT License/i' => 'MIT',
'/Mozilla Public License 1\.1/i' => 'MPL-1.1',
'/Mozilla Public License 2\.0/i' => 'MPL-2.0',
'/Public[\s-_]Domain/i' => 'LicenseRef-Public-Domain',
'/SIL OPEN FONT LICENSE \(OFL-1\.1\)/i' => 'OFL-1.1',
'/W3C License/' => 'W3C'
);
$licenses = preg_replace(array_keys($replacements), array_values($replacements), trim($text));
$licenses = preg_replace('/\s*\([^\)]*\)\s*/', '', $licenses);
$spdx = implode(' OR ', preg_split('/\s*,\s*/', $licenses));
if (self::getSpdxLicenses()->validate($spdx)) return $spdx;
return null;
}
}
?>