diff --git a/src/Composer/Autoload/ClassMapGenerator.php b/src/Composer/Autoload/ClassMapGenerator.php index 862e44ba2..656ce15b1 100644 --- a/src/Composer/Autoload/ClassMapGenerator.php +++ b/src/Composer/Autoload/ClassMapGenerator.php @@ -173,7 +173,7 @@ class ClassMapGenerator if ($name[0] === ':') { // This is an XHP class, https://github.com/facebook/xhp $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); - } else if ($matches['type'][$i] === 'enum') { + } elseif ($matches['type'][$i] === 'enum') { // In Hack, something like: // enum Foo: int { HERP = '123'; } // The regex above captures the colon, which isn't part of diff --git a/src/Composer/Command/LicensesCommand.php b/src/Composer/Command/LicensesCommand.php index 513e51aac..ddeabf00f 100644 --- a/src/Composer/Command/LicensesCommand.php +++ b/src/Composer/Command/LicensesCommand.php @@ -19,7 +19,6 @@ use Composer\Plugin\PluginEvents; use Composer\Package\PackageInterface; use Composer\Repository\RepositoryInterface; use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Helper\TableStyle; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; diff --git a/src/Composer/Command/ShowCommand.php b/src/Composer/Command/ShowCommand.php index 4a189702e..dd99afdff 100644 --- a/src/Composer/Command/ShowCommand.php +++ b/src/Composer/Command/ShowCommand.php @@ -389,11 +389,11 @@ EOT $licenses = $package->getLicense(); - foreach($licenses as $licenseId) { + foreach ($licenses as $licenseId) { $license = $spdxLicense->getLicenseByIdentifier($licenseId); // keys: 0 fullname, 1 osi, 2 url // is license OSI approved? - if($license[1] === true) { + if ($license[1] === true) { $out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); } else { $out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); diff --git a/src/Composer/IO/ConsoleIO.php b/src/Composer/IO/ConsoleIO.php index 38e722bf5..9300befad 100644 --- a/src/Composer/IO/ConsoleIO.php +++ b/src/Composer/IO/ConsoleIO.php @@ -126,6 +126,7 @@ class ConsoleIO extends BaseIO if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { $this->output->getErrorOutput()->write($messages, $newline); $this->lastMessageErr = join($newline ? "\n" : '', (array) $messages); + return; } diff --git a/src/Composer/Util/Git.php b/src/Composer/Util/Git.php index 894160d4a..9678020bc 100644 --- a/src/Composer/Util/Git.php +++ b/src/Composer/Util/Git.php @@ -154,7 +154,8 @@ class Git } } - private function isAuthenticationFailure ($url, &$match) { + private function isAuthenticationFailure($url, &$match) + { if (!preg_match('{(https?://)([^/]+)(.*)$}i', $url, $match)) { return false; } diff --git a/src/Composer/Util/SpdxLicense.php b/src/Composer/Util/SpdxLicense.php index ec9a01bd3..7d052253a 100644 --- a/src/Composer/Util/SpdxLicense.php +++ b/src/Composer/Util/SpdxLicense.php @@ -1,229 +1,229 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Json\JsonFile; - -/** - * Supports composer array and SPDX tag notation for disjunctive/conjunctive - * licenses. - * - * @author Tom Klingenberg - */ -class SpdxLicense -{ - /** - * @var array - */ - private $licenses; - - public function __construct() - { - $this->loadLicenses(); - } - - private function loadLicenses() - { - if(is_array($this->licenses)) { - return $this->licenses; - } - - $jsonFile = new JsonFile(__DIR__ . '/../../../res/spdx-licenses.json'); - $this->licenses = $jsonFile->read(); - - return $this->licenses; - } - - /** - * Returns license metadata by license identifier. - * - * @param string $identifier - * - * @return array - */ - public function getLicenseByIdentifier($identifier) - { - $license = $this->licenses[$identifier]; - - // add URL for the license text (it's not included in the json) - $license[2] = 'http://spdx.org/licenses/' . $identifier . '#licenseText'; - - return $license; - } - - /** - * Returns the short identifier of a license by full name. - * - * @param string $identifier - * - * @return string - */ - public function getIdentifierByName($name) - { - foreach ($this->licenses as $identifier => $licenseData) { - if($licenseData[0] === $name) { // key 0 = fullname - return $identifier; - } - } - } - - /** - * Returns the OSI Approved status for a license by identifier. - * - * @return bool - */ - public function isOsiApprovedByIdentifier($identifier) - { - return $this->licenses[$identifier][1]; // key 1 = osi approved - } - - /** - * Check, if the identifier for a license is valid. - * - * @param string $identifier - * - * @return bool - */ - private function isValidLicenseIdentifier($identifier) - { - $identifiers = array_keys($this->licenses); - - return in_array($identifier, $identifiers); - } - - /** - * @param array|string $license - * - * @return bool - * @throws \InvalidArgumentException - */ - public function validate($license) - { - if (is_array($license)) { - $count = count($license); - if ($count !== count(array_filter($license, 'is_string'))) { - throw new \InvalidArgumentException('Array of strings expected.'); - } - $license = $count > 1 ? '('.implode(' or ', $license).')' : (string) reset($license); - } - - if (!is_string($license)) { - throw new \InvalidArgumentException(sprintf( - 'Array or String expected, %s given.', gettype($license) - )); - } - - return $this->isValidLicenseString($license); - } - - /** - * @param string $license - * - * @return bool - * @throws \RuntimeException - */ - private function isValidLicenseString($license) - { - $tokens = array( - 'po' => '\(', - 'pc' => '\)', - 'op' => '(?:or|and)', - 'lix' => '(?:NONE|NOASSERTION)', - 'lir' => 'LicenseRef-\d+', - 'lic' => '[-+_.a-zA-Z0-9]{3,}', - 'ws' => '\s+', - '_' => '.', - ); - - $next = function () use ($license, $tokens) { - static $offset = 0; - - if ($offset >= strlen($license)) { - return null; - } - - foreach ($tokens as $name => $token) { - if (false === $r = preg_match('{' . $token . '}', $license, $matches, PREG_OFFSET_CAPTURE, $offset)) { - throw new \RuntimeException('Pattern for token %s failed (regex error).', $name); - } - if ($r === 0) { - continue; - } - if ($matches[0][1] !== $offset) { - continue; - } - $offset += strlen($matches[0][0]); - - return array($name, $matches[0][0]); - } - - throw new \RuntimeException('At least the last pattern needs to match, but it did not (dot-match-all is missing?).'); - }; - - $open = 0; - $require = 1; - $lastop = null; - - while (list($token, $string) = $next()) { - switch ($token) { - case 'po': - if ($open || !$require) { - return false; - } - $open = 1; - break; - case 'pc': - if ($open !== 1 || $require || !$lastop) { - return false; - } - $open = 2; - break; - case 'op': - if ($require || !$open) { - return false; - } - $lastop || $lastop = $string; - if ($lastop !== $string) { - return false; - } - $require = 1; - break; - case 'lix': - if ($open) { - return false; - } - goto lir; - case 'lic': - if (!$this->isValidLicenseIdentifier($string)) { - return false; - } - // Fall-through intended - case 'lir': - lir: - if (!$require) { - return false; - } - $require = 0; - break; - case 'ws': - break; - case '_': - return false; - default: - throw new \RuntimeException(sprintf('Unparsed token: %s.', print_r($token, true))); - } - } - - return !($open % 2 || $require); - } -} + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Json\JsonFile; + +/** + * Supports composer array and SPDX tag notation for disjunctive/conjunctive + * licenses. + * + * @author Tom Klingenberg + */ +class SpdxLicense +{ + /** + * @var array + */ + private $licenses; + + public function __construct() + { + $this->loadLicenses(); + } + + private function loadLicenses() + { + if (is_array($this->licenses)) { + return $this->licenses; + } + + $jsonFile = new JsonFile(__DIR__ . '/../../../res/spdx-licenses.json'); + $this->licenses = $jsonFile->read(); + + return $this->licenses; + } + + /** + * Returns license metadata by license identifier. + * + * @param string $identifier + * + * @return array + */ + public function getLicenseByIdentifier($identifier) + { + $license = $this->licenses[$identifier]; + + // add URL for the license text (it's not included in the json) + $license[2] = 'http://spdx.org/licenses/' . $identifier . '#licenseText'; + + return $license; + } + + /** + * Returns the short identifier of a license by full name. + * + * @param string $identifier + * + * @return string + */ + public function getIdentifierByName($name) + { + foreach ($this->licenses as $identifier => $licenseData) { + if ($licenseData[0] === $name) { // key 0 = fullname + return $identifier; + } + } + } + + /** + * Returns the OSI Approved status for a license by identifier. + * + * @return bool + */ + public function isOsiApprovedByIdentifier($identifier) + { + return $this->licenses[$identifier][1]; // key 1 = osi approved + } + + /** + * Check, if the identifier for a license is valid. + * + * @param string $identifier + * + * @return bool + */ + private function isValidLicenseIdentifier($identifier) + { + $identifiers = array_keys($this->licenses); + + return in_array($identifier, $identifiers); + } + + /** + * @param array|string $license + * + * @return bool + * @throws \InvalidArgumentException + */ + public function validate($license) + { + if (is_array($license)) { + $count = count($license); + if ($count !== count(array_filter($license, 'is_string'))) { + throw new \InvalidArgumentException('Array of strings expected.'); + } + $license = $count > 1 ? '('.implode(' or ', $license).')' : (string) reset($license); + } + + if (!is_string($license)) { + throw new \InvalidArgumentException(sprintf( + 'Array or String expected, %s given.', gettype($license) + )); + } + + return $this->isValidLicenseString($license); + } + + /** + * @param string $license + * + * @return bool + * @throws \RuntimeException + */ + private function isValidLicenseString($license) + { + $tokens = array( + 'po' => '\(', + 'pc' => '\)', + 'op' => '(?:or|and)', + 'lix' => '(?:NONE|NOASSERTION)', + 'lir' => 'LicenseRef-\d+', + 'lic' => '[-+_.a-zA-Z0-9]{3,}', + 'ws' => '\s+', + '_' => '.', + ); + + $next = function () use ($license, $tokens) { + static $offset = 0; + + if ($offset >= strlen($license)) { + return null; + } + + foreach ($tokens as $name => $token) { + if (false === $r = preg_match('{' . $token . '}', $license, $matches, PREG_OFFSET_CAPTURE, $offset)) { + throw new \RuntimeException('Pattern for token %s failed (regex error).', $name); + } + if ($r === 0) { + continue; + } + if ($matches[0][1] !== $offset) { + continue; + } + $offset += strlen($matches[0][0]); + + return array($name, $matches[0][0]); + } + + throw new \RuntimeException('At least the last pattern needs to match, but it did not (dot-match-all is missing?).'); + }; + + $open = 0; + $require = 1; + $lastop = null; + + while (list($token, $string) = $next()) { + switch ($token) { + case 'po': + if ($open || !$require) { + return false; + } + $open = 1; + break; + case 'pc': + if ($open !== 1 || $require || !$lastop) { + return false; + } + $open = 2; + break; + case 'op': + if ($require || !$open) { + return false; + } + $lastop || $lastop = $string; + if ($lastop !== $string) { + return false; + } + $require = 1; + break; + case 'lix': + if ($open) { + return false; + } + goto lir; + case 'lic': + if (!$this->isValidLicenseIdentifier($string)) { + return false; + } + // Fall-through intended + case 'lir': + lir: + if (!$require) { + return false; + } + $require = 0; + break; + case 'ws': + break; + case '_': + return false; + default: + throw new \RuntimeException(sprintf('Unparsed token: %s.', print_r($token, true))); + } + } + + return !($open % 2 || $require); + } +} diff --git a/src/Composer/Util/SpdxLicensesUpdater.php b/src/Composer/Util/SpdxLicensesUpdater.php index 98796abae..efcc30065 100644 --- a/src/Composer/Util/SpdxLicensesUpdater.php +++ b/src/Composer/Util/SpdxLicensesUpdater.php @@ -42,14 +42,14 @@ class SpdxLicensesUpdater $trs = $xPath->query('//table//tbody//tr'); // iterate over each row in the table - foreach($trs as $tr) { + foreach ($trs as $tr) { $tds = $tr->getElementsByTagName('td'); // get the columns in this row - if($tds->length < 4) { + if ($tds->length < 4) { throw new \Exception('Obtaining the license table failed. Wrong table format. Found less than 4 cells in a row.'); } - if(trim($tds->item(3)->nodeValue) == 'License Text') { + if (trim($tds->item(3)->nodeValue) == 'License Text') { $fullname = trim($tds->item(0)->nodeValue); $identifier = trim($tds->item(1)->nodeValue); $osiApproved = ((isset($tds->item(2)->nodeValue) && $tds->item(2)->nodeValue === 'Y')) ? true : false; @@ -64,4 +64,4 @@ class SpdxLicensesUpdater return $licenses; } -} \ No newline at end of file +}