MediaWiki fundraising/REL1_35
updateCredits.php
Go to the documentation of this file.
1<?php
25if ( PHP_SAPI != 'cli' ) {
26 die( "This script can only be run from the command line.\n" );
27}
28
29// class Collator is provided by the intl extension.
30// It is only suggested in composer.json, so remind here when not loaded.
31if ( !extension_loaded( 'intl' ) ) {
32 die( "This script needs the 'intl' extension to be loaded." );
33}
34
35$CREDITS = 'CREDITS';
36$START_CONTRIBUTORS = '<!-- BEGIN CONTRIBUTOR LIST -->';
37$END_CONTRIBUTORS = '<!-- END CONTRIBUTOR LIST -->';
38
39$inHeader = true;
40$inFooter = false;
44
45if ( !file_exists( $CREDITS ) ) {
46 exit( 'No CREDITS file found. Are you running this script in the right directory?' );
47}
48
49$lines = explode( "\n", file_get_contents( $CREDITS ) );
50foreach ( $lines as $line ) {
51 if ( $inHeader ) {
52 $header[] = $line;
54 } elseif ( $inFooter ) {
55 $footer[] = $line;
56 } elseif ( $line == $END_CONTRIBUTORS ) {
57 $inFooter = true;
58 $footer[] = $line;
59 } else {
60 $name = substr( $line, 2 );
61 $contributors[$name] = true;
62 }
63}
64unset( $lines );
65
66$lines = explode( "\n", shell_exec( 'git log --format="%aN"' ) );
67foreach ( $lines as $line ) {
68 if ( empty( $line ) ) {
69 continue;
70 }
71 if ( substr( $line, 0, 5 ) === '[BOT]' ) {
72 continue;
73 }
74 $contributors[$line] = true;
75}
76
77$contributors = array_keys( $contributors );
78$collator = Collator::create( 'root' );
79$collator->setAttribute( Collator::NUMERIC_COLLATION, Collator::ON );
81array_walk( $contributors, function ( &$v, $k ) {
82 $v = "* {$v}";
83} );
84
85file_put_contents( $CREDITS,
86 implode( "\n", array_merge( $header, $contributors, $footer ) ) );
$line
Definition mcc.php:119
if(!file_exists( $CREDITS)) $lines
$header
$collator
if(PHP_SAPI !='cli') if(!extension_loaded( 'intl')) $CREDITS
Update the CREDITS list by merging in the list of git commit authors.
$END_CONTRIBUTORS
$contributors
$inHeader
$inFooter
$footer
$START_CONTRIBUTORS