updateversion.pl 3.5 KB

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