Changeset 102536 in webkit


Ignore:
Timestamp:
Dec 10, 2011 10:32:04 PM (12 years ago)
Author:
haraken@chromium.org
Message:

[Refactoring] In prepare-ChangeLog, move top-level code to find ChangeLogs into a method
https://bugs.webkit.org/show_bug.cgi?id=74175

Reviewed by Ryosuke Niwa.

The objective is to make prepare-ChangeLog a loadable Perl module for unit testing.
This requires to remove top-level code. This patch is one of the incremental refactorings
for that.

  • Scripts/prepare-ChangeLog: Moved top-level code to find ChangeLogs into findChangeLogs().

(findChangeLogs):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r102525 r102536  
     12011-12-10  Kentaro Hara  <haraken@chromium.org>
     2
     3        [Refactoring] In prepare-ChangeLog, move top-level code to find ChangeLogs into a method
     4        https://bugs.webkit.org/show_bug.cgi?id=74175
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        The objective is to make prepare-ChangeLog a loadable Perl module for unit testing.
     9        This requires to remove top-level code. This patch is one of the incremental refactorings
     10        for that.
     11
     12        * Scripts/prepare-ChangeLog: Moved top-level code to find ChangeLogs into findChangeLogs().
     13        (findChangeLogs):
     14
    1152011-12-10  Andreas Kling  <kling@webkit.org>
    216
  • trunk/Tools/Scripts/prepare-ChangeLog

    r102487 r102536  
    6969sub changeLogNameFromArgs($);
    7070sub fetchBugDescriptionFromURL($);
     71sub findChangeLogs(\%);
    7172sub firstDirectoryOrCwd();
    7273sub diffFromToString();
     
    203204}
    204205
    205 # Find the change logs.
    206 my %has_log;
    207 my %files;
    208 foreach my $file (sort keys %function_lists) {
    209     my $prefix = $file;
    210     my $has_log = 0;
    211     while ($prefix) {
    212         $prefix =~ s-/[^/]+/?$-/- or $prefix = "";
    213         $has_log = $has_log{$prefix};
    214         if (!defined $has_log) {
    215             $has_log = -f "${prefix}ChangeLog";
    216             $has_log{$prefix} = $has_log;
    217         }
    218         last if $has_log;
    219     }
    220     if (!$has_log) {
    221         print STDERR "No ChangeLog found for $file.\n";
    222     } else {
    223         push @{$files{$prefix}}, $file;
    224     }
    225 }
    226 
    227 # Build the list of ChangeLog prefixes in the correct project order
    228 my @prefixes;
    229 my %prefixesSort;
    230 foreach my $prefix (keys %files) {
    231     my $prefixDir = substr($prefix, 0, length($prefix) - 1); # strip trailing /
    232     my $sortKey = lc $prefix;
    233     $sortKey = "top level" unless length $sortKey;
    234 
    235     if ($prefixDir eq "top level") {
    236         $sortKey = "";
    237     } elsif ($prefixDir eq "Tools") {
    238         $sortKey = "-, just after top level";
    239     } elsif ($prefixDir eq "WebBrowser") {
    240         $sortKey = lc "WebKit, WebBrowser after";
    241     } elsif ($prefixDir eq "Source/WebCore") {
    242         $sortKey = lc "WebFoundation, WebCore after";
    243     } elsif ($prefixDir eq "LayoutTests") {
    244         $sortKey = lc "~, LayoutTests last";
    245     }
    246 
    247     $prefixesSort{$sortKey} = $prefix;
    248 }
    249 foreach my $prefixSort (sort keys %prefixesSort) {
    250     push @prefixes, $prefixesSort{$prefixSort};
    251 }
     206my ($files_in_change_log, $prefixes) = findChangeLogs(%function_lists);
    252207
    253208# Get the latest ChangeLog files from svn.
    254209my @logs = ();
    255 foreach my $prefix (@prefixes) {
     210foreach my $prefix (@$prefixes) {
    256211    push @logs, File::Spec->catfile($prefix || ".", "ChangeLog");
    257212}
     
    279234
    280235# Generate new ChangeLog entries and (optionally) write out new ChangeLog files.
    281 foreach my $prefix (@prefixes) {
     236foreach my $prefix (@$prefixes) {
    282237    my $endl = "\n";
    283238    my @old_change_log;
     
    299254    } else {
    300255        open CHANGE_LOG, ">-" or die "Could not write to STDOUT\n.";
    301         print substr($prefix, 0, length($prefix) - 1) . ":\n\n" unless (scalar @prefixes) == 1;
     256        print substr($prefix, 0, length($prefix) - 1) . ":\n\n" unless (scalar @$prefixes) == 1;
    302257    }
    303258
     
    324279    }
    325280
    326     foreach my $file (sort @{$files{$prefix}}) {
     281    foreach my $file (sort @{$files_in_change_log->{$prefix}}) {
    327282        my $file_stem = substr $file, length $prefix;
    328283        print CHANGE_LOG normalizeLineEndings("        * $file_stem:$function_lists{$file}\n", $endl);
     
    499454    print STDERR "  Description from bug $bugNumber:\n    \"$bugDescription\".\n";
    500455    return $bugDescription;
     456}
     457
     458sub findChangeLogs(\%)
     459{
     460    # Find the change logs.
     461    my %has_log;
     462    my %files_in_change_log;
     463    foreach my $file (sort keys %function_lists) {
     464        my $prefix = $file;
     465        my $has_log = 0;
     466        while ($prefix) {
     467            $prefix =~ s-/[^/]+/?$-/- or $prefix = "";
     468            $has_log = $has_log{$prefix};
     469            if (!defined $has_log) {
     470                $has_log = -f "${prefix}ChangeLog";
     471                $has_log{$prefix} = $has_log;
     472            }
     473            last if $has_log;
     474        }
     475        if (!$has_log) {
     476            print STDERR "No ChangeLog found for $file.\n";
     477        } else {
     478            push @{$files_in_change_log{$prefix}}, $file;
     479        }
     480    }
     481
     482    # Build the list of ChangeLog prefixes in the correct project order
     483    my @prefixes;
     484    my %prefixesSort;
     485    foreach my $prefix (keys %files_in_change_log) {
     486        my $prefixDir = substr($prefix, 0, length($prefix) - 1); # strip trailing /
     487        my $sortKey = lc $prefix;
     488        $sortKey = "top level" unless length $sortKey;
     489
     490        if ($prefixDir eq "top level") {
     491            $sortKey = "";
     492        } elsif ($prefixDir eq "Tools") {
     493            $sortKey = "-, just after top level";
     494        } elsif ($prefixDir eq "WebBrowser") {
     495            $sortKey = lc "WebKit, WebBrowser after";
     496        } elsif ($prefixDir eq "Source/WebCore") {
     497            $sortKey = lc "WebFoundation, WebCore after";
     498        } elsif ($prefixDir eq "LayoutTests") {
     499            $sortKey = lc "~, LayoutTests last";
     500        }
     501
     502        $prefixesSort{$sortKey} = $prefix;
     503    }
     504    foreach my $prefixSort (sort keys %prefixesSort) {
     505        push @prefixes, $prefixesSort{$prefixSort};
     506    }
     507    return (\%files_in_change_log, \@prefixes);
    501508}
    502509
Note: See TracChangeset for help on using the changeset viewer.