Skip to:
Content

Ticket #6642: 6642.gruntlog.patch

File 6642.gruntlog.patch, 3.1 KB (added by imath, 3 years ago)
  • .changelog.php

    diff --git .changelog.php .changelog.php
    index e69de29..315f202 100644
     
     1<?php
     2/**
     3 * Tool to generate the BP Legacy's changelog
     4 */
     5
     6// Major releases
     7$releases = array(
     8        "1.7.0" => 6899,
     9        "1.8.0" => 7280,
     10        "1.9.0" => 7683,
     11        "2.0.0" => 8278,
     12        "2.1.0" => 9031,
     13        "2.2.0" => 9440,
     14        "2.3.0" => 9911,
     15);
     16
     17// Building the changelog
     18$changelog = new stdClass;
     19$changelog->author = 'The BuddyPress Contributors';
     20$changelog->vesion = '2.4.0';
     21$changelog->templates = array();
     22
     23// To strip legacy path from templates
     24$bp_legacy_path = 'src/bp-templates/bp-legacy/buddypress/';
     25$output         = 'src/bp-templates/bp-legacy/changelog.json';
     26$changes        = array();
     27
     28$git_commits = shell_exec( 'git log --name-only --pretty=format:"||%s|%b|" src/bp-templates/bp-legacy/buddypress' );
     29
     30$commits = explode( '||', $git_commits );
     31
     32if ( ! is_array( $commits ) ) {
     33        fwrite( STDOUT, "Error: could not generate the changelog, are you using git?\n" );
     34        exit( 2 );
     35}
     36
     37// Remove the old file
     38if ( file_exists( $output ) ) {
     39        @unlink( $output );
     40}
     41
     42foreach( $commits as $commit ) {
     43        $parts = explode( '|', $commit );
     44        $log = $parts[0];
     45
     46        preg_match( '/trunk@(\d*)/', $parts[1], $match );
     47
     48        if ( ! $match[1] ) {
     49                continue;
     50        }
     51
     52        $revision = $match[1];
     53
     54        // Defaults to release if nothing found in releases
     55        // It has been introduced in current release
     56        $version  = $changelog->vesion;
     57
     58        foreach ( $releases as $key => $changeset ) {
     59                if ( $changeset > $revision ) {
     60                        $version = $key;
     61                        break;
     62                }
     63        }
     64
     65        $files = explode( "\n", trim( $parts[2], "\n" ) );
     66
     67        foreach ( $files as $file ) {
     68                $changes[ str_replace( $bp_legacy_path, '', $file ) ][] = (object) array(
     69                        'version'  => $version,
     70                        'revision' => $revision,
     71                        'log'      => $log,
     72                );
     73        }
     74}
     75
     76if ( empty( $changes ) ) {
     77        fwrite( STDOUT, "Error: could not generate the changelog.\n" );
     78        exit( 2 );
     79}
     80
     81ksort( $changes );
     82
     83foreach ( $changes as $template => $logs )  {
     84        $entry = new stdClass;
     85
     86        $entry->template = $template;
     87
     88        // Get version when the template was last edited
     89        $edited = reset( $logs );
     90        $entry->edited = $edited->version;
     91
     92        // Attach logs
     93        $entry->changes = $logs;
     94
     95        $changelog->templates[] = $entry;
     96}
     97
     98$created = file_put_contents( $output, json_encode( $changelog, JSON_PRETTY_PRINT ) );
     99
     100if ( ! $created ) {
     101        fwrite( STDOUT, "Error: could not generate the changelog.\n" );
     102        exit( 2 );
     103} else {
     104        fwrite( STDOUT, "Success: Changelog generated.\n" );
     105        exit( 0 );
     106}
  • Gruntfile.js

    diff --git Gruntfile.js Gruntfile.js
    index 0445052..469f4ba 100644
    module.exports = function( grunt ) { 
    222222                                command: 'svn export --force https://github.com/buddypress/BP-Default.git/trunk bp-themes/bp-default',
    223223                                cwd: BUILD_DIR,
    224224                                stdout: false
     225                        },
     226                        templates_changelog: {
     227                                command: 'php .changelog.php'
    225228                        }
    226229                },
    227230                jsvalidate:{
    module.exports = function( grunt ) { 
    278281
    279282        // Default task.
    280283        grunt.registerTask( 'default', ['src'] );
     284
     285        // Patch task.
     286        grunt.registerTask( 'templates_changelog', 'exec:templates_changelog' );
    281287};