config/Moz/Milestone.pm

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 #!/usr/bin/perl -w
     2 # This Source Code Form is subject to the terms of the Mozilla Public
     3 # License, v. 2.0. If a copy of the MPL was not distributed with this
     4 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
     6 package Moz::Milestone;
     7 use strict;
     9 use vars qw($officialMilestone
    10             $milestone);
    12 local $Moz::Milestone::milestone;
    13 local $Moz::Milestone::officialMilestone;
    15 #
    16 # Usage:  getOfficialMilestone($milestoneFile)
    17 # Returns full milestone (x.x.x.x[ab12pre+])
    18 #
    19 sub getOfficialMilestone($) {
    20   my $mfile = $_[0];
    21   open(FILE,"$mfile") ||
    22     die ("Can't open $mfile for reading!");
    24   my $num = <FILE>;
    25   while($num =~ /^\s*#/ || $num !~ /^\d/) {
    26       $num = <FILE>;
    27   }
    29   close(FILE);
    30   if ($num !~ /^\d/) { return; }
    31   chomp($num);
    32   # Remove extra ^M caused by using dos-mode line-endings
    33   chop $num if (substr($num, -1, 1) eq "\r");
    34   $Moz::Milestone::officialMilestone = $num;
    35   $Moz::Milestone::milestone = &getMilestoneNum;
    36   return $num;
    37 }
    39 #
    40 # Usage: getMilestoneNum($num)
    41 # Returns: milestone without a + if it exists.
    42 #
    43 sub getMilestoneNum {
    44   if (defined($Moz::Milestone::milestone)) {
    45     return $Moz::Milestone::milestone;
    46   }
    48   if (defined($Moz::Milestone::officialMilestone)) {
    49     $Moz::Milestone::milestone = $Moz::Milestone::officialMilestone;
    50   } else {
    51     $Moz::Milestone::milestone = $_[0];
    52   }
    54   if ($Moz::Milestone::milestone =~ /\+$/) {    # for x.x.x+, strip off the +
    55     $Moz::Milestone::milestone =~ s/\+$//;
    56   }
    58   return $Moz::Milestone::milestone;
    59 }
    61 #
    62 # Usage: getMilestoneQualifier($num)
    63 # Returns: + if it exists.
    64 #
    65 sub getMilestoneQualifier {
    66   my $milestoneQualifier;
    67   if (defined($Moz::Milestone::officialMilestone)) {
    68     $milestoneQualifier = $Moz::Milestone::officialMilestone;
    69   } else {
    70     $milestoneQualifier = $_[0];
    71   }
    73   if ($milestoneQualifier =~ /\+$/) {
    74     return "+";
    75   }
    76 }
    78 sub getMilestoneMajor {
    79   my $milestoneMajor;
    80   if (defined($Moz::Milestone::milestone)) {
    81     $milestoneMajor = $Moz::Milestone::milestone;
    82   } else {
    83     $milestoneMajor = $_[0];
    84   }
    85   my @parts = split(/\./,$milestoneMajor);
    86   return $parts[0];
    87 }
    89 sub getMilestoneMinor {
    90   my $milestoneMinor;
    91   if (defined($Moz::Milestone::milestone)) {
    92     $milestoneMinor = $Moz::Milestone::milestone;
    93   } else {
    94     $milestoneMinor = $_[0];
    95   }
    96   my @parts = split(/\./,$milestoneMinor);
    98   if ($#parts < 1 ) { return 0; }
    99   return $parts[1];
   100 }
   102 sub getMilestoneMini {
   103   my $milestoneMini;
   104   if (defined($Moz::Milestone::milestone)) {
   105     $milestoneMini = $Moz::Milestone::milestone;
   106   } else {
   107     $milestoneMini = $_[0];
   108   }
   109   my @parts = split(/\./,$milestoneMini);
   111   if ($#parts < 2 ) { return 0; }
   112   return $parts[2];
   113 }
   115 sub getMilestoneMicro {
   116   my $milestoneMicro;
   117   if (defined($Moz::Milestone::milestone)) {
   118     $milestoneMicro = $Moz::Milestone::milestone;
   119   } else {
   120     $milestoneMicro = $_[0];
   121   }
   122   my @parts = split(/\./,$milestoneMicro);
   124   if ($#parts < 3 ) { return 0; }
   125   return $parts[3];
   126 }
   128 sub getMilestoneAB {
   129   my $milestoneAB;
   130   if (defined($Moz::Milestone::milestone)) {
   131     $milestoneAB = $Moz::Milestone::milestone;
   132   } else {
   133     $milestoneAB = $_[0];
   134   }
   136   if ($milestoneAB =~ /a/) { return "alpha"; }
   137   if ($milestoneAB =~ /b/) { return "beta"; }
   138   return "final";
   139 }
   141 #
   142 # Usage:  getMilestoneABWithNum($milestoneFile)
   143 # Returns the alpha and beta tag with its number (a1, a2, b3, ...)
   144 #
   145 sub getMilestoneABWithNum {
   146   my $milestoneABNum;
   147   if (defined($Moz::Milestone::milestone)) {
   148     $milestoneABNum = $Moz::Milestone::milestone;
   149   } else {
   150     $milestoneABNum = $_[0];
   151   }
   153   if ($milestoneABNum =~ /([ab]\d+)/) {
   154     return $1;
   155   } else {
   156     return "";
   157   }
   158 }
   160 #
   161 # build_file($template_file,$output_file)
   162 #
   163 sub build_file($$) {
   164   my @FILE;
   165   my @MILESTONE_PARTS;
   166   my $MINI_VERSION = 0;
   167   my $MICRO_VERSION = 0;
   168   my $OFFICIAL = 0;
   169   my $QUALIFIER = "";
   171   if (!defined($Moz::Milestone::milestone)) { die("$0: no milestone file set!\n"); }
   172   @MILESTONE_PARTS = split(/\./, &getMilestoneNum);
   173   if ($#MILESTONE_PARTS >= 2) {
   174     $MINI_VERSION = 1;
   175   } else {
   176     $MILESTONE_PARTS[2] = 0;
   177   }
   178   if ($#MILESTONE_PARTS >= 3) {
   179     $MICRO_VERSION = 1;
   180   } else {
   181     $MILESTONE_PARTS[3] = 0;
   182   }
   183   if (! &getMilestoneQualifier) {
   184     $OFFICIAL = 1;
   185   } else {
   186     $QUALIFIER = "+";
   187   }
   189   if (-e $_[0]) {
   190     open(FILE, "$_[0]") || die("$0: Can't open $_[0] for reading!\n");
   191     @FILE = <FILE>;
   192     close(FILE);
   194     open(FILE, ">$_[1]") || die("$0: Can't open $_[1] for writing!\n");
   196     #
   197     # There will be more of these based on what we need for files.
   198     #
   199     foreach(@FILE) {
   200       s/__MOZ_MAJOR_VERSION__/$MILESTONE_PARTS[0]/g;
   201       s/__MOZ_MINOR_VERSION__/$MILESTONE_PARTS[1]/g;
   202       s/__MOZ_MINI_VERSION__/$MILESTONE_PARTS[2]/g;
   203       s/__MOZ_MICRO_VERSION__/$MILESTONE_PARTS[3]/g;
   204       if ($MINI_VERSION) {
   205         s/__MOZ_OPTIONAL_MINI_VERSION__/.$MILESTONE_PARTS[2]/g;
   206       }
   207       if ($MICRO_VERSION) {
   208         s/__MOZ_OPTIONAL_MICRO_VERSION__/.$MILESTONE_PARTS[3]/g;
   209       }
   211       print FILE $_;
   212     }
   213     close(FILE);
   214   } else {
   215     die("$0: $_[0] doesn't exist for autoversioning!\n");
   216   }
   218 }
   220 1;

mercurial