diff options
-rw-r--r-- | build/license.php | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/build/license.php b/build/license.php index 9a2495683c2..d7ac4e0a143 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 <not.committed.yet>', 'Jenkins for ownCloud <owncloud-bot@tmit.eu>']); }); + + 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; |