diff --git a/autotest-checkers.sh b/autotest-checkers.sh index 35c945a17e..96525655fe 100755 --- a/autotest-checkers.sh +++ b/autotest-checkers.sh @@ -37,6 +37,9 @@ for app in $(find "apps/" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;); RESULT=$(($RESULT+$?)) done; +php ./build/files-checker.php +RESULT=$(($RESULT+$?)) + php ./build/signed-off-checker.php RESULT=$(($RESULT+$?)) diff --git a/build/files-checker.php b/build/files-checker.php new file mode 100644 index 0000000000..4d4e64e361 --- /dev/null +++ b/build/files-checker.php @@ -0,0 +1,109 @@ + + * + * @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 . + * + */ + +$expectedFiles = [ + '.', + '..', + '.bowerrc', + '.codecov.yml', + '.drone.yml', + '.git', + '.github', + '.gitignore', + '.gitmodules', + '.htaccess', + '.idea', + '.jshintrc', + '.lgtm', + '.mailmap', + '.scrutinizer.yml', + '.tag', + '.user.ini', + '3rdparty', + 'apps', + 'AUTHORS', + 'autotest-checkers.sh', + 'autotest-external.sh', + 'autotest-hhvm.sh', + 'autotest-js.sh', + 'autotest.sh', + 'bower.json', + 'build', + 'buildjsdocs.sh', + 'CHANGELOG.md', + 'composer.json', + 'config', + 'console.php', + 'contribute', + 'CONTRIBUTING.md', + 'COPYING', + 'COPYING-README', + 'core', + 'cron.php', + 'db_structure.xml', + 'index.html', + 'index.php', + 'issue_template.md', + 'l10n', + 'lib', + 'occ', + 'ocs', + 'ocs-provider', + 'public.php', + 'README.md', + 'remote.php', + 'resources', + 'robots.txt', + 'settings', + 'status.php', + 'tests', + 'themes', + 'version.php', +]; +$actualFiles = []; + +$files = new \DirectoryIterator(__DIR__ . '/..'); +foreach ($files as $file) { + $actualFiles[] = $file->getFilename(); +} + +$additionalFiles = array_diff($actualFiles, $expectedFiles); +$missingFiles = array_diff($expectedFiles, $actualFiles); + +$failed = false; +if (count($additionalFiles) > 0) { + echo sprintf('ERROR: There were %d additional files:', count($additionalFiles)) . PHP_EOL; + echo implode(PHP_EOL, $additionalFiles) . PHP_EOL; + $failed = true; +} +if (count($missingFiles) > 0) { + echo sprintf('ERROR: There were %d missing files:', count($missingFiles)) . PHP_EOL; + echo implode(PHP_EOL, $missingFiles) . PHP_EOL; + $failed = true; +} + +if ($failed) { + echo 'ERROR: Please remove or add those files again or inform the release team about those now files to be included or excluded from the release tar ball.' . PHP_EOL; + exit(1); +} + +echo 'OK: all expected files are present and no additional files are there.' . PHP_EOL; +exit(0);