@@ -4,8 +4,10 @@ var shell = require('shelljs');
44var grunt = require ( 'grunt' ) ;
55var spawn = require ( 'child_process' ) . spawn ;
66var semver = require ( 'semver' ) ;
7+ var versionInfo = require ( '../versions/version-info' ) ;
8+
79var _ = require ( 'lodash' ) ;
8- var version , pkg ;
10+
911var CSP_CSS_HEADER = '/* Include this file in your html if you are using the CSP mode. */\n\n' ;
1012
1113var PORT_MIN = 8000 ;
@@ -23,23 +25,6 @@ var getRandomPorts = function() {
2325 ] ;
2426} ;
2527
26- var getPackage = function ( ) {
27- if ( ! pkg ) {
28-
29- // Search up the folder hierarchy for the first package.json
30- var packageFolder = path . resolve ( '.' ) ;
31- while ( ! fs . existsSync ( path . join ( packageFolder , 'package.json' ) ) ) {
32- var parent = path . dirname ( packageFolder ) ;
33- if ( parent === packageFolder ) { break ; }
34- packageFolder = parent ;
35- }
36- pkg = JSON . parse ( fs . readFileSync ( path . join ( packageFolder , 'package.json' ) , 'UTF-8' ) ) ;
37-
38- }
39-
40- return pkg ;
41- } ;
42-
4328
4429module . exports = {
4530
@@ -50,160 +35,6 @@ module.exports = {
5035 } ,
5136
5237
53- getGitRepoInfo : function ( ) {
54- var GITURL_REGEX = / ^ h t t p s : \/ \/ g i t h u b .c o m \/ ( [ ^ \/ ] + ) \/ ( .+ ) .g i t $ / ;
55- var match = GITURL_REGEX . exec ( getPackage ( ) . repository . url ) ;
56- var git = {
57- owner : match [ 1 ] ,
58- repo : match [ 2 ]
59- } ;
60- return git ;
61- } ,
62-
63-
64- getVersion : function ( ) {
65- if ( version ) return version ;
66-
67- try {
68-
69- var gitTag = getTagOfCurrentCommit ( ) ;
70- var semVerVersion , codeName , fullVersion ;
71- if ( gitTag ) {
72- // tagged release
73- fullVersion = semVerVersion = semver . valid ( gitTag ) ;
74- codeName = getTaggedReleaseCodeName ( gitTag ) ;
75- } else {
76- // snapshot release
77- semVerVersion = getSnapshotVersion ( ) ;
78- fullVersion = semVerVersion + '-' + getSnapshotSuffix ( ) ;
79- codeName = 'snapshot' ;
80- }
81-
82- var versionParts = semVerVersion . match ( / ( \d + ) \. ( \d + ) \. ( \d + ) / ) ;
83-
84- version = {
85- full : fullVersion ,
86- major : versionParts [ 1 ] ,
87- minor : versionParts [ 2 ] ,
88- dot : versionParts [ 3 ] ,
89- codename : codeName ,
90- cdn : getPackage ( ) . cdnVersion
91- } ;
92-
93- // Stable versions have an even minor version
94- version . isStable = version . minor % 2 === 0 ;
95-
96- return version ;
97-
98- } catch ( e ) {
99- grunt . fail . warn ( e ) ;
100- }
101-
102- function getTagOfCurrentCommit ( ) {
103- var gitTagResult = shell . exec ( 'git describe --exact-match' , { silent :true } ) ;
104- var gitTagOutput = gitTagResult . output . trim ( ) ;
105- var branchVersionPattern = new RegExp ( getPackage ( ) . branchVersion . replace ( '.' , '\\.' ) . replace ( '*' , '\\d+' ) ) ;
106- if ( gitTagResult . code === 0 && gitTagOutput . match ( branchVersionPattern ) ) {
107- return gitTagOutput ;
108- } else {
109- return null ;
110- }
111- }
112-
113- function getTaggedReleaseCodeName ( tagName ) {
114- var tagMessage = shell . exec ( 'git cat-file -p ' + tagName + ' | grep "codename"' , { silent :true } ) . output ;
115- var codeName = tagMessage && tagMessage . match ( / c o d e n a m e \( ( .* ) \) / ) [ 1 ] ;
116- if ( ! codeName ) {
117- throw new Error ( "Could not extract release code name. The message of tag " + tagName +
118- " must match '*codename(some release name)*'" ) ;
119- }
120- return codeName ;
121- }
122-
123- function getSnapshotVersion ( ) {
124- var oldTags = shell . exec ( 'git tag -l v' + getPackage ( ) . branchVersion , { silent :true } ) . output . trim ( ) . split ( '\n' ) ;
125- // ignore non semver versions.
126- oldTags = oldTags . filter ( function ( version ) {
127- return version && semver . valid ( version ) ;
128- } ) ;
129- if ( oldTags . length ) {
130- oldTags . sort ( semver . compare ) ;
131- semVerVersion = oldTags [ oldTags . length - 1 ] ;
132- if ( semVerVersion . indexOf ( '-' ) !== - 1 ) {
133- semVerVersion = semver . inc ( semVerVersion , 'prerelease' ) ;
134- } else {
135- semVerVersion = semver . inc ( semVerVersion , 'patch' ) ;
136- }
137- } else {
138- semVerVersion = semver . valid ( getPackage ( ) . branchVersion . replace ( / \* / g, '0' ) ) ;
139- }
140- return semVerVersion ;
141- }
142-
143- function getSnapshotSuffix ( ) {
144- var jenkinsBuild = process . env . TRAVIS_BUILD_NUMBER || process . env . BUILD_NUMBER || 'local' ;
145- var hash = shell . exec ( 'git rev-parse --short HEAD' , { silent : true } ) . output . replace ( '\n' , '' ) ;
146- return 'build.' + jenkinsBuild + '+sha.' + hash ;
147- }
148- } ,
149-
150- getPreviousVersions : function ( ) {
151- var VERSION_REGEX = / ( [ 1 - 9 ] \d * ) \. ( \d + ) \. ( \d + ) (?: - ? r c \. ? ( \d + ) | - ( s n a p s h o t ) ) ? / ;
152-
153- // Pad out a number with zeros at the front to make it `digits` characters long
154- function pad ( num , digits ) {
155- var zeros = Array ( digits + 1 ) . join ( '0' ) ;
156- return ( zeros + num ) . slice ( - digits ) ;
157- }
158-
159- function padVersion ( version ) {
160- // We pad out the version numbers with 0s so they sort nicely
161- // - Non-Release Candidates get 9999 for their release candidate section to make them appear earlier
162- // - Snapshots get 9 added to the front to move them to the top of the list
163- var maxLength = 4 ;
164- var padded = ( version . snapshot ? '9' : '0' ) + pad ( version . major , maxLength ) +
165- pad ( version . minor , maxLength ) + pad ( version . dot , maxLength ) +
166- pad ( version . rc || 9999 , maxLength ) ;
167- return padded ;
168- }
169-
170- function getVersionFromTag ( tag ) {
171- var match = VERSION_REGEX . exec ( tag ) ;
172- if ( match ) {
173- var version = {
174- tag : tag ,
175- major : match [ 1 ] , minor : match [ 2 ] , dot : match [ 3 ] , rc : match [ 4 ] ,
176- snapshot : ! ! match [ 5 ] && getSnapshotSuffix ( )
177- } ;
178-
179- if ( version . snapshot ) {
180- version . full = version . major + '.' + version . minor + '.x (edge)' ;
181- } else {
182- version . full = version . major + '.' + version . minor + '.' + version . dot +
183- ( version . rc ? '-rc.' + version . rc : '' ) ;
184- }
185-
186- // Stable versions have an even minor version and are not a release candidate
187- version . isStable = ! ( version . minor % 2 || version . rc ) ;
188-
189- // Versions before 1.0.2 had a different docs folder name
190- version . docsUrl = 'http://code.angularjs.org/' + version . full + '/docs' ;
191- if ( version . major < 1 || ( version . major === 1 && version . minor === 0 && version . dot < 2 ) ) {
192- version . docsUrl += '-' + version . full ;
193- }
194-
195- return version ;
196- }
197- }
198-
199- var tags = shell . exec ( 'git tag' , { silent : true } ) . output . split ( / \s * \n \s * / ) ;
200- return _ ( tags )
201- . map ( getVersionFromTag )
202- . filter ( ) // getVersion can map to undefined - this clears those out
203- . sortBy ( padVersion )
204- . value ( ) ;
205- } ,
206-
20738 startKarma : function ( config , singleRun , done ) {
20839 var browsers = grunt . option ( 'browsers' ) ;
20940 var reporters = grunt . option ( 'reporters' ) ;
@@ -374,7 +205,7 @@ module.exports = {
374205 var mapFile = minFile + '.map' ;
375206 var mapFileName = mapFile . match ( / [ ^ \/ ] + $ / ) [ 0 ] ;
376207 var errorFileName = file . replace ( / \. j s $ / , '-errors.json' ) ;
377- var versionNumber = this . getVersion ( ) . full ;
208+ var versionNumber = grunt . config ( 'NG_VERSION' ) . full ;
378209 shell . exec (
379210 'java ' +
380211 this . java32flags ( ) + ' ' +
0 commit comments