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() { public function __construct() {
$this->licenseText = <<<EOD $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@ @AUTHORS@
* *
* @copyright Copyright (c) @YEAR@, ownCloud, Inc. * @copyright Copyright (c) @YEAR@, ownCloud, Inc.
@ -46,7 +67,7 @@ class Licenses
* *
*/ */
EOD; 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; echo "MIT licensed file: $path" . PHP_EOL;
return; return;
} }
$source = $this->eatOldLicense($source); if ($this->isOwnCloudLicensed($source)) {
$authors = $this->getAuthors($path, $gitRoot); $authors = $this->getAuthors($path, $gitRoot, true);
$license = str_replace('@AUTHORS@', $authors, $this->licenseText); $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; $source = "<?php" . PHP_EOL . $license . PHP_EOL . $source;
file_put_contents($path,$source); file_put_contents($path,$source);
echo "License updated: $path" . PHP_EOL; echo "License updated: $path" . PHP_EOL;
@ -143,6 +169,19 @@ With help from many libraries and frameworks including:
return false; 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 * @param string $source
* @return string * @return string
@ -177,7 +216,7 @@ With help from many libraries and frameworks including:
return implode(PHP_EOL, $lines); 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 // 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")); $licenseHeaderEndsAtLine = trim(shell_exec("grep -n '*/' $file | head -n 1 | cut -d ':' -f 1"));
$buildDir = getcwd(); $buildDir = getcwd();
@ -205,10 +244,19 @@ With help from many libraries and frameworks including:
$authors = array_unique($authors); $authors = array_unique($authors);
} }
$authors = array_map(function($author){ if ($legacyFiles) {
$this->authors[$author] = $author; $authors = array_map(function($author){
return " * @author $author"; $this->authors[$author] = $author;
}, $authors); 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); return implode(PHP_EOL, $authors);
} }