diff --git a/build/license.php b/build/license.php index 9a2495683c..d7ac4e0a14 100644 --- a/build/license.php +++ b/build/license.php @@ -20,7 +20,8 @@ */ class Licenses { - protected $paths = array(); + protected $paths = []; + protected $mailMap = []; public $authors = []; public function __construct() { @@ -196,12 +197,38 @@ With help from many libraries and frameworks including: 'Not Committed Yet ', 'Jenkins for ownCloud ']); }); + + if ($gitRoot) { + $authors = array_map([$this, 'checkCoreMailMap'], $authors); + $authors = array_unique($authors); + } + $authors = array_map(function($author){ $this->authors[$author] = $author; return " * @author $author"; }, $authors); return implode(PHP_EOL, $authors); } + + private function checkCoreMailMap($author) { + if (empty($this->mailMap)) { + $content = file_get_contents(__DIR__ . '/../.mailmap'); + $entries = explode("\n", $content); + foreach ($entries as $entry) { + if (strpos($entry, '> ') === false) { + $this->mailMap[$entry] = $entry; + } else { + list($use, $actual) = explode('> ', $entry); + $this->mailMap[$actual] = $use . '>'; + } + } + } + + if (isset($this->mailMap[$author])) { + return $this->mailMap[$author]; + } + return $author; + } } $licenses = new Licenses;