WordPress.org

Make WordPress Core

Ticket #19592: bumpbot.php

File bumpbot.php, 2.4 KB (added by nacin, 9 years ago)
Line 
1<?php
2
3if ( 'cli' != php_sapi_name() || $argc < 3 )
4        exit;
5
6$user     = $argv[1];
7$password = $argv[2];
8
9$bin  = dirname( __FILE__ );
10$repo = 'https://core.svn.wordpress.org';
11$yui  = $bin . '/yuicompressor-2.4.2.jar';
12if ( ! file_exists( $yui ) )
13        exit;
14
15$yui = "java -jar $yui -v";
16
17$start = microtime( true );
18
19if ( ! is_dir( "$bin/trunk" ) )
20        echo `svn checkout --ignore-externals $repo/trunk $bin/trunk`;
21
22chdir( "$bin/trunk" );
23
24// Just in case.
25echo `svn cleanup; svn revert -R *`;
26
27$find_rev = `svn up --ignore-externals`;
28
29if ( ! preg_match( '/^At revision (\d+)\.$/', $find_rev, $rev ) )
30        exit( 'svn up failed.' . "\n" );
31$rev = $rev[1];
32
33// We can use this in the future. The bot can post warnings to Trac, for example.
34$output = array();
35
36foreach ( array( 'css', 'js' ) as $type ) {
37        $files = explode( "\n", trim( `find . -name "*.dev.$type"` ) );
38        foreach ( $files as $file ) {
39                $file = substr( $file, 0, -strlen( ".dev.$type" ) );
40                $result = trim( `$yui --type $type -o $file.$type $file.dev.$type 2>&1` );
41                if ( false === strpos( $result, '[WARNING]' ) )
42                        $result = true;
43                else
44                        $result = strstr( $result, '[WARNING]' );
45                $output[ "$file.dev.$type" ] = $result;
46        }
47}
48
49$diff = `svn stat --ignore-externals | grep ^M`;
50$diff = explode( "\n", $diff );
51foreach ( $diff as &$d )
52        $d = trim( ltrim( $d, 'M' ) );
53$diff = array_filter( $diff );
54
55$stop = microtime(true) - $start;
56
57if ( empty( $diff ) )
58        exit( 'Nothing to commit.' . "\n" );
59
60$version_php = file_get_contents( './wp-includes/version.php' );
61
62// 3.4-alpha-12345 to 3.4-alpha-12346
63if ( preg_match( "/wp_version = '(.*?)-(.*?)-(\d+)'/", $version_php, $matches ) )
64        $version_php = preg_replace( "/wp_version = '(.*?)-(.*?)-(\d+)'/",
65                'wp_version = \'$1-$2-' . ( $rev + 1 ) . "'", $version_php );
66// 3.4-alpha to 3.4-alpha-12346
67elseif ( preg_match( "/wp_version = '(.*?)-(.*?)'/", $version_php, $matches ) )
68        $version_php = preg_replace( "/wp_version = '(.*?)-(.*?)'/",
69                'wp_version = \'$1-$2-' . ( $rev + 1 ) . "'", $version_php );
70// 3.4
71else
72        exit( "Stable release. Don't touch!" . "\n" );
73
74file_put_contents( './wp-includes/version.php', $version_php );
75
76$user     = escapeshellarg( $user );
77$password = escapeshellarg( $password );
78$msg      = escapeshellarg( 'Compress scripts/styles: ' . $matches[1] . '-' . $matches[2] . '-' . ( $rev + 1 ) . '.' );
79
80#echo `svn diff`;
81echo `svn commit -m --no-auth-cache --non-interactive --username $user --password $password $msg`;
82
83exit( $msg . "\n" );