aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gruntfile.js5
-rw-r--r--lib/grunt/utils.js177
2 files changed, 7 insertions, 175 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
index 01dbb952..5ec05f70 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,5 +1,6 @@
var files = require('./angularFiles').files;
var util = require('./lib/grunt/utils.js');
+var versionInfo = require('./lib/versions/version-info');
var path = require('path');
module.exports = function(grunt) {
@@ -8,10 +9,10 @@ module.exports = function(grunt) {
grunt.loadTasks('lib/grunt');
- var NG_VERSION = util.getVersion();
+ var NG_VERSION = versionInfo.currentVersion;
+ NG_VERSION.cdn = versionInfo.currentPackage.cdnVersion;
var dist = 'angular-'+ NG_VERSION.full;
-
//global beforeEach
util.init();
diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js
index a736033d..59b78381 100644
--- a/lib/grunt/utils.js
+++ b/lib/grunt/utils.js
@@ -4,8 +4,10 @@ var shell = require('shelljs');
var grunt = require('grunt');
var spawn = require('child_process').spawn;
var semver = require('semver');
+var versionInfo = require('../versions/version-info');
+
var _ = require('lodash');
-var version, pkg;
+
var CSP_CSS_HEADER = '/* Include this file in your html if you are using the CSP mode. */\n\n';
var PORT_MIN = 8000;
@@ -23,23 +25,6 @@ var getRandomPorts = function() {
];
};
-var getPackage = function() {
- if ( !pkg ) {
-
- // Search up the folder hierarchy for the first package.json
- var packageFolder = path.resolve('.');
- while ( !fs.existsSync(path.join(packageFolder, 'package.json')) ) {
- var parent = path.dirname(packageFolder);
- if ( parent === packageFolder) { break; }
- packageFolder = parent;
- }
- pkg = JSON.parse(fs.readFileSync(path.join(packageFolder,'package.json'), 'UTF-8'));
-
- }
-
- return pkg;
-};
-
module.exports = {
@@ -50,160 +35,6 @@ module.exports = {
},
- getGitRepoInfo: function() {
- var GITURL_REGEX = /^https:\/\/github.com\/([^\/]+)\/(.+).git$/;
- var match = GITURL_REGEX.exec(getPackage().repository.url);
- var git = {
- owner: match[1],
- repo: match[2]
- };
- return git;
- },
-
-
- getVersion: function(){
- if (version) return version;
-
- try {
-
- var gitTag = getTagOfCurrentCommit();
- var semVerVersion, codeName, fullVersion;
- if (gitTag) {
- // tagged release
- fullVersion = semVerVersion = semver.valid(gitTag);
- codeName = getTaggedReleaseCodeName(gitTag);
- } else {
- // snapshot release
- semVerVersion = getSnapshotVersion();
- fullVersion = semVerVersion + '-' + getSnapshotSuffix();
- codeName = 'snapshot';
- }
-
- var versionParts = semVerVersion.match(/(\d+)\.(\d+)\.(\d+)/);
-
- version = {
- full: fullVersion,
- major: versionParts[1],
- minor: versionParts[2],
- dot: versionParts[3],
- codename: codeName,
- cdn: getPackage().cdnVersion
- };
-
- // Stable versions have an even minor version
- version.isStable = version.minor%2 === 0;
-
- return version;
-
- } catch (e) {
- grunt.fail.warn(e);
- }
-
- function getTagOfCurrentCommit() {
- var gitTagResult = shell.exec('git describe --exact-match', {silent:true});
- var gitTagOutput = gitTagResult.output.trim();
- var branchVersionPattern = new RegExp(getPackage().branchVersion.replace('.', '\\.').replace('*', '\\d+'));
- if (gitTagResult.code === 0 && gitTagOutput.match(branchVersionPattern)) {
- return gitTagOutput;
- } else {
- return null;
- }
- }
-
- function getTaggedReleaseCodeName(tagName) {
- var tagMessage = shell.exec('git cat-file -p '+ tagName +' | grep "codename"', {silent:true}).output;
- var codeName = tagMessage && tagMessage.match(/codename\((.*)\)/)[1];
- if (!codeName) {
- throw new Error("Could not extract release code name. The message of tag "+tagName+
- " must match '*codename(some release name)*'");
- }
- return codeName;
- }
-
- function getSnapshotVersion() {
- var oldTags = shell.exec('git tag -l v'+getPackage().branchVersion, {silent:true}).output.trim().split('\n');
- // ignore non semver versions.
- oldTags = oldTags.filter(function(version) {
- return version && semver.valid(version);
- });
- if (oldTags.length) {
- oldTags.sort(semver.compare);
- semVerVersion = oldTags[oldTags.length-1];
- if (semVerVersion.indexOf('-') !== -1) {
- semVerVersion = semver.inc(semVerVersion, 'prerelease');
- } else {
- semVerVersion = semver.inc(semVerVersion, 'patch');
- }
- } else {
- semVerVersion = semver.valid(getPackage().branchVersion.replace(/\*/g, '0'));
- }
- return semVerVersion;
- }
-
- function getSnapshotSuffix() {
- var jenkinsBuild = process.env.TRAVIS_BUILD_NUMBER || process.env.BUILD_NUMBER || 'local';
- var hash = shell.exec('git rev-parse --short HEAD', {silent: true}).output.replace('\n', '');
- return 'build.'+jenkinsBuild+'+sha.'+hash;
- }
- },
-
- getPreviousVersions: function() {
- var VERSION_REGEX = /([1-9]\d*)\.(\d+)\.(\d+)(?:-?rc\.?(\d+)|-(snapshot))?/;
-
- // Pad out a number with zeros at the front to make it `digits` characters long
- function pad(num, digits) {
- var zeros = Array(digits+1).join('0');
- return (zeros+num).slice(-digits);
- }
-
- function padVersion(version) {
- // We pad out the version numbers with 0s so they sort nicely
- // - Non-Release Candidates get 9999 for their release candidate section to make them appear earlier
- // - Snapshots get 9 added to the front to move them to the top of the list
- var maxLength = 4;
- var padded = (version.snapshot ? '9' : '0') + pad(version.major, maxLength) +
- pad(version.minor, maxLength) + pad(version.dot, maxLength) +
- pad(version.rc || 9999, maxLength);
- return padded;
- }
-
- function getVersionFromTag(tag) {
- var match = VERSION_REGEX.exec(tag);
- if ( match ) {
- var version = {
- tag: tag,
- major: match[1], minor: match[2], dot: match[3], rc: match[4],
- snapshot: !!match[5] && getSnapshotSuffix()
- };
-
- if(version.snapshot) {
- version.full = version.major + '.' + version.minor + '.x (edge)';
- } else {
- version.full = version.major + '.' + version.minor + '.' + version.dot +
- (version.rc ? '-rc.' + version.rc : '');
- }
-
- // Stable versions have an even minor version and are not a release candidate
- version.isStable = !(version.minor%2 || version.rc);
-
- // Versions before 1.0.2 had a different docs folder name
- version.docsUrl = 'http://code.angularjs.org/' + version.full + '/docs';
- if ( version.major < 1 || (version.major === 1 && version.minor === 0 && version.dot < 2 ) ) {
- version.docsUrl += '-' + version.full;
- }
-
- return version;
- }
- }
-
- var tags = shell.exec('git tag', {silent: true}).output.split(/\s*\n\s*/);
- return _(tags)
- .map(getVersionFromTag)
- .filter() // getVersion can map to undefined - this clears those out
- .sortBy(padVersion)
- .value();
- },
-
startKarma: function(config, singleRun, done){
var browsers = grunt.option('browsers');
var reporters = grunt.option('reporters');
@@ -374,7 +205,7 @@ module.exports = {
var mapFile = minFile + '.map';
var mapFileName = mapFile.match(/[^\/]+$/)[0];
var errorFileName = file.replace(/\.js$/, '-errors.json');
- var versionNumber = this.getVersion().full;
+ var versionNumber = grunt.config('NG_VERSION').full;
shell.exec(
'java ' +
this.java32flags() + ' ' +