Changeset 102536 in webkit
- Timestamp:
- Dec 10, 2011 10:32:04 PM (12 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r102525 r102536 1 2011-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 1 15 2011-12-10 Andreas Kling <kling@webkit.org> 2 16 -
trunk/Tools/Scripts/prepare-ChangeLog
r102487 r102536 69 69 sub changeLogNameFromArgs($); 70 70 sub fetchBugDescriptionFromURL($); 71 sub findChangeLogs(\%); 71 72 sub firstDirectoryOrCwd(); 72 73 sub diffFromToString(); … … 203 204 } 204 205 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 } 206 my ($files_in_change_log, $prefixes) = findChangeLogs(%function_lists); 252 207 253 208 # Get the latest ChangeLog files from svn. 254 209 my @logs = (); 255 foreach my $prefix (@ prefixes) {210 foreach my $prefix (@$prefixes) { 256 211 push @logs, File::Spec->catfile($prefix || ".", "ChangeLog"); 257 212 } … … 279 234 280 235 # Generate new ChangeLog entries and (optionally) write out new ChangeLog files. 281 foreach my $prefix (@ prefixes) {236 foreach my $prefix (@$prefixes) { 282 237 my $endl = "\n"; 283 238 my @old_change_log; … … 299 254 } else { 300 255 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; 302 257 } 303 258 … … 324 279 } 325 280 326 foreach my $file (sort @{$files {$prefix}}) {281 foreach my $file (sort @{$files_in_change_log->{$prefix}}) { 327 282 my $file_stem = substr $file, length $prefix; 328 283 print CHANGE_LOG normalizeLineEndings(" * $file_stem:$function_lists{$file}\n", $endl); … … 499 454 print STDERR " Description from bug $bugNumber:\n \"$bugDescription\".\n"; 500 455 return $bugDescription; 456 } 457 458 sub 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); 501 508 } 502 509
Note: See TracChangeset
for help on using the changeset viewer.