Merge pull request #11 from nextcloud/license-script-update

update license script: no more CLA and switch to AGPLv3 or later
This commit is contained in:
Lukas Reschke 2016-06-07 16:40:31 +02:00
commit ad6e52360a
1 changed files with 57 additions and 9 deletions

View File

@ -27,6 +27,27 @@ class Licenses
public function __construct() {
$this->licenseText = <<<EOD
/**
@AUTHORS@
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
EOD;
$this->licenseTextLegacy = <<<EOD
/**
@AUTHORS@
*
* @copyright Copyright (c) @YEAR@, ownCloud, Inc.
@ -46,7 +67,7 @@ class Licenses
*
*/
EOD;
$this->licenseText = str_replace('@YEAR@', date("Y"), $this->licenseText);
$this->licenseTextLegacy = str_replace('@YEAR@', date("Y"), $this->licenseTextLegacy);
}
/**
@ -118,10 +139,15 @@ With help from many libraries and frameworks including:
echo "MIT licensed file: $path" . PHP_EOL;
return;
}
$source = $this->eatOldLicense($source);
$authors = $this->getAuthors($path, $gitRoot);
$license = str_replace('@AUTHORS@', $authors, $this->licenseText);
if ($this->isOwnCloudLicensed($source)) {
$authors = $this->getAuthors($path, $gitRoot, true);
$license = str_replace('@AUTHORS@', $authors, $this->licenseTextLegacy);
} else {
$authors = $this->getAuthors($path, $gitRoot);
$license = str_replace('@AUTHORS@', $authors, $this->licenseText);
}
$source = $this->eatOldLicense($source);
$source = "<?php" . PHP_EOL . $license . PHP_EOL . $source;
file_put_contents($path,$source);
echo "License updated: $path" . PHP_EOL;
@ -143,6 +169,19 @@ With help from many libraries and frameworks including:
return false;
}
private function isOwnCloudLicensed($source) {
$lines = explode(PHP_EOL, $source);
while(!empty($lines)) {
$line = $lines[0];
array_shift($lines);
if (strpos($line, 'ownCloud, Inc') !== false) {
return true;
}
}
return false;
}
/**
* @param string $source
* @return string
@ -177,7 +216,7 @@ With help from many libraries and frameworks including:
return implode(PHP_EOL, $lines);
}
private function getAuthors($file, $gitRoot) {
private function getAuthors($file, $gitRoot, $legacyFiles = false) {
// only add authors that changed code and not the license header
$licenseHeaderEndsAtLine = trim(shell_exec("grep -n '*/' $file | head -n 1 | cut -d ':' -f 1"));
$buildDir = getcwd();
@ -205,10 +244,19 @@ With help from many libraries and frameworks including:
$authors = array_unique($authors);
}
$authors = array_map(function($author){
$this->authors[$author] = $author;
return " * @author $author";
}, $authors);
if ($legacyFiles) {
$authors = array_map(function($author){
$this->authors[$author] = $author;
return " * @author $author";
}, $authors);
} else {
$authors = array_map(function($author){
$this->authors[$author] = $author;
return " * @copyright Copyright (c) " . date("Y") . ", $author";
}, $authors);
}
return implode(PHP_EOL, $authors);
}