config/Moz/Milestone.pm

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:1044e2af0800
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/.
5
6 package Moz::Milestone;
7 use strict;
8
9 use vars qw($officialMilestone
10 $milestone);
11
12 local $Moz::Milestone::milestone;
13 local $Moz::Milestone::officialMilestone;
14
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!");
23
24 my $num = <FILE>;
25 while($num =~ /^\s*#/ || $num !~ /^\d/) {
26 $num = <FILE>;
27 }
28
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 }
38
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 }
47
48 if (defined($Moz::Milestone::officialMilestone)) {
49 $Moz::Milestone::milestone = $Moz::Milestone::officialMilestone;
50 } else {
51 $Moz::Milestone::milestone = $_[0];
52 }
53
54 if ($Moz::Milestone::milestone =~ /\+$/) { # for x.x.x+, strip off the +
55 $Moz::Milestone::milestone =~ s/\+$//;
56 }
57
58 return $Moz::Milestone::milestone;
59 }
60
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 }
72
73 if ($milestoneQualifier =~ /\+$/) {
74 return "+";
75 }
76 }
77
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 }
88
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);
97
98 if ($#parts < 1 ) { return 0; }
99 return $parts[1];
100 }
101
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);
110
111 if ($#parts < 2 ) { return 0; }
112 return $parts[2];
113 }
114
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);
123
124 if ($#parts < 3 ) { return 0; }
125 return $parts[3];
126 }
127
128 sub getMilestoneAB {
129 my $milestoneAB;
130 if (defined($Moz::Milestone::milestone)) {
131 $milestoneAB = $Moz::Milestone::milestone;
132 } else {
133 $milestoneAB = $_[0];
134 }
135
136 if ($milestoneAB =~ /a/) { return "alpha"; }
137 if ($milestoneAB =~ /b/) { return "beta"; }
138 return "final";
139 }
140
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 }
152
153 if ($milestoneABNum =~ /([ab]\d+)/) {
154 return $1;
155 } else {
156 return "";
157 }
158 }
159
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 = "";
170
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 }
188
189 if (-e $_[0]) {
190 open(FILE, "$_[0]") || die("$0: Can't open $_[0] for reading!\n");
191 @FILE = <FILE>;
192 close(FILE);
193
194 open(FILE, ">$_[1]") || die("$0: Can't open $_[1] for writing!\n");
195
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 }
210
211 print FILE $_;
212 }
213 close(FILE);
214 } else {
215 die("$0: $_[0] doesn't exist for autoversioning!\n");
216 }
217
218 }
219
220 1;

mercurial