OLD | NEW |
(Empty) | |
| 1 #!/usr/bin/perl -w |
| 2 |
| 3 use strict; |
| 4 |
| 5 sub update_man_page($); |
| 6 sub update_bin_tool($); |
| 7 sub update_txt_file($); |
| 8 sub update_spec_file($); |
| 9 sub get_file_info($); |
| 10 |
| 11 our $directory = $ARGV[0]; |
| 12 our $version = $ARGV[1]; |
| 13 our $release = $ARGV[2]; |
| 14 |
| 15 our @man_pages = ("man/gendesc.1", "man/genhtml.1", "man/geninfo.1", |
| 16 "man/genpng.1", "man/lcov.1", "man/lcovrc.5"); |
| 17 our @bin_tools = ("bin/gendesc", "bin/genhtml", "bin/geninfo", |
| 18 "bin/genpng", "bin/lcov"); |
| 19 our @txt_files = ("README"); |
| 20 our @spec_files = ("rpm/lcov.spec"); |
| 21 |
| 22 if (!defined($directory) || !defined($version) || !defined($release)) { |
| 23 die("Usage: $0 <directory> <version string> <release string>\n"); |
| 24 } |
| 25 |
| 26 foreach (@man_pages) { |
| 27 print("Updating man page $_\n"); |
| 28 update_man_page($directory."/".$_); |
| 29 } |
| 30 foreach (@bin_tools) { |
| 31 print("Updating bin tool $_\n"); |
| 32 update_bin_tool($directory."/".$_); |
| 33 } |
| 34 foreach (@txt_files) { |
| 35 print("Updating text file $_\n"); |
| 36 update_txt_file($directory."/".$_); |
| 37 } |
| 38 foreach (@spec_files) { |
| 39 print("Updating spec file $_\n"); |
| 40 update_spec_file($directory."/".$_); |
| 41 } |
| 42 print("Done.\n"); |
| 43 |
| 44 sub get_file_info($) |
| 45 { |
| 46 my ($filename) = @_; |
| 47 my ($sec, $min, $hour, $year, $month, $day); |
| 48 my @stat; |
| 49 |
| 50 @stat = stat($filename); |
| 51 ($sec, $min, $hour, $day, $month, $year) = localtime($stat[9]); |
| 52 $year += 1900; |
| 53 $month += 1; |
| 54 |
| 55 return (sprintf("%04d-%02d-%02d", $year, $month, $day), |
| 56 sprintf("%04d%02d%02d%02d%02d.%02d", $year, $month, $day, |
| 57 $hour, $min, $sec), |
| 58 sprintf("%o", $stat[2] & 07777)); |
| 59 } |
| 60 |
| 61 sub update_man_page($) |
| 62 { |
| 63 my ($filename) = @_; |
| 64 my @date = get_file_info($filename); |
| 65 my $date_string = $date[0]; |
| 66 local *IN; |
| 67 local *OUT; |
| 68 |
| 69 $date_string =~ s/-/\\-/g; |
| 70 open(IN, "<$filename") || die ("Error: cannot open $filename\n"); |
| 71 open(OUT, ">$filename.new") || |
| 72 die("Error: cannot create $filename.new\n"); |
| 73 while (<IN>) { |
| 74 s/\"LCOV\s+\d+\.\d+\"/\"LCOV $version\"/g; |
| 75 s/\d\d\d\d\\\-\d\d\\\-\d\d/$date_string/g; |
| 76 print(OUT $_); |
| 77 } |
| 78 close(OUT); |
| 79 close(IN); |
| 80 chmod(oct($date[2]), "$filename.new"); |
| 81 system("mv", "-f", "$filename.new", "$filename"); |
| 82 system("touch", "$filename", "-t", $date[1]); |
| 83 } |
| 84 |
| 85 sub update_bin_tool($) |
| 86 { |
| 87 my ($filename) = @_; |
| 88 my @date = get_file_info($filename); |
| 89 local *IN; |
| 90 local *OUT; |
| 91 |
| 92 open(IN, "<$filename") || die ("Error: cannot open $filename\n"); |
| 93 open(OUT, ">$filename.new") || |
| 94 die("Error: cannot create $filename.new\n"); |
| 95 while (<IN>) { |
| 96 s/(our\s+\$lcov_version\s*=\s*\").*(\".*)$/$1LCOV version $versi
on$2/g; |
| 97 print(OUT $_); |
| 98 } |
| 99 close(OUT); |
| 100 close(IN); |
| 101 chmod(oct($date[2]), "$filename.new"); |
| 102 system("mv", "-f", "$filename.new", "$filename"); |
| 103 system("touch", "$filename", "-t", $date[1]); |
| 104 } |
| 105 |
| 106 sub update_txt_file($) |
| 107 { |
| 108 my ($filename) = @_; |
| 109 my @date = get_file_info($filename); |
| 110 local *IN; |
| 111 local *OUT; |
| 112 |
| 113 open(IN, "<$filename") || die ("Error: cannot open $filename\n"); |
| 114 open(OUT, ">$filename.new") || |
| 115 die("Error: cannot create $filename.new\n"); |
| 116 while (<IN>) { |
| 117 s/(Last\s+changes:\s+)\d\d\d\d-\d\d-\d\d/$1$date[0]/g; |
| 118 print(OUT $_); |
| 119 } |
| 120 close(OUT); |
| 121 close(IN); |
| 122 chmod(oct($date[2]), "$filename.new"); |
| 123 system("mv", "-f", "$filename.new", "$filename"); |
| 124 system("touch", "$filename", "-t", $date[1]); |
| 125 } |
| 126 |
| 127 sub update_spec_file($) |
| 128 { |
| 129 my ($filename) = @_; |
| 130 my @date = get_file_info($filename); |
| 131 local *IN; |
| 132 local *OUT; |
| 133 |
| 134 open(IN, "<$filename") || die ("Error: cannot open $filename\n"); |
| 135 open(OUT, ">$filename.new") || |
| 136 die("Error: cannot create $filename.new\n"); |
| 137 while (<IN>) { |
| 138 s/^(Version:\s*)\d+\.\d+.*$/$1$version/; |
| 139 s/^(Release:\s*).*$/$1$release/; |
| 140 print(OUT $_); |
| 141 } |
| 142 close(OUT); |
| 143 close(IN); |
| 144 system("mv", "-f", "$filename.new", "$filename"); |
| 145 system("touch", "$filename", "-t", $date[1]); |
| 146 } |
OLD | NEW |