2016-10-12 23:45:36 +00:00
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Update the CREDITS list by merging in the list of git commit authors.
|
|
|
|
|
*
|
|
|
|
|
* The contents of the existing contributors list will be preserved. If a name
|
|
|
|
|
* needs to be removed for some reason that must be done manually before or
|
|
|
|
|
* after running this script.
|
|
|
|
|
*
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
|
* the Free Software Foundation; either version 2 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 General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
|
|
|
*/
|
|
|
|
|
|
2021-01-08 02:16:02 +00:00
|
|
|
// NO_AUTOLOAD -- file-scope code
|
|
|
|
|
|
2016-10-12 23:45:36 +00:00
|
|
|
if ( PHP_SAPI != 'cli' ) {
|
|
|
|
|
die( "This script can only be run from the command line.\n" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$CREDITS = 'CREDITS';
|
|
|
|
|
$START_CONTRIBUTORS = '<!-- BEGIN CONTRIBUTOR LIST -->';
|
|
|
|
|
$END_CONTRIBUTORS = '<!-- END CONTRIBUTOR LIST -->';
|
|
|
|
|
|
|
|
|
|
$inHeader = true;
|
|
|
|
|
$inFooter = false;
|
|
|
|
|
$header = [];
|
|
|
|
|
$contributors = [];
|
|
|
|
|
$footer = [];
|
|
|
|
|
|
2016-11-21 14:39:26 +00:00
|
|
|
if ( !file_exists( $CREDITS ) ) {
|
|
|
|
|
exit( 'No CREDITS file found. Are you running this script in the right directory?' );
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-12 23:45:36 +00:00
|
|
|
$lines = explode( "\n", file_get_contents( $CREDITS ) );
|
|
|
|
|
foreach ( $lines as $line ) {
|
|
|
|
|
if ( $inHeader ) {
|
|
|
|
|
$header[] = $line;
|
|
|
|
|
$inHeader = $line !== $START_CONTRIBUTORS;
|
|
|
|
|
} elseif ( $inFooter ) {
|
|
|
|
|
$footer[] = $line;
|
|
|
|
|
} elseif ( $line == $END_CONTRIBUTORS ) {
|
|
|
|
|
$inFooter = true;
|
|
|
|
|
$footer[] = $line;
|
|
|
|
|
} else {
|
|
|
|
|
$name = substr( $line, 2 );
|
|
|
|
|
$contributors[$name] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
unset( $lines );
|
|
|
|
|
|
2022-03-05 20:05:01 +00:00
|
|
|
$lines = explode( "\n", (string)shell_exec( 'git log --format="%aN"' ) );
|
2016-10-12 23:45:36 +00:00
|
|
|
foreach ( $lines as $line ) {
|
2017-05-04 19:35:41 +00:00
|
|
|
if ( empty( $line ) ) {
|
2016-10-12 23:45:36 +00:00
|
|
|
continue;
|
|
|
|
|
}
|
2023-05-20 12:16:32 +00:00
|
|
|
if ( str_starts_with( $line, '[BOT]' ) ) {
|
2016-10-12 23:45:36 +00:00
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$contributors[$line] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$contributors = array_keys( $contributors );
|
2017-07-28 17:13:54 +00:00
|
|
|
$collator = Collator::create( 'root' );
|
|
|
|
|
$collator->setAttribute( Collator::NUMERIC_COLLATION, Collator::ON );
|
2016-10-12 23:45:36 +00:00
|
|
|
$collator->sort( $contributors );
|
2021-02-07 02:17:10 +00:00
|
|
|
array_walk( $contributors, static function ( &$v, $k ) {
|
2016-10-12 23:45:36 +00:00
|
|
|
$v = "* {$v}";
|
|
|
|
|
} );
|
|
|
|
|
|
2020-11-29 00:06:32 +00:00
|
|
|
file_put_contents(
|
|
|
|
|
$CREDITS,
|
|
|
|
|
implode( "\n", array_merge( $header, $contributors, $footer ) )
|
|
|
|
|
);
|