diff options
| author | Peter Bacon Darwin | 2014-03-11 06:34:09 +0000 |
|---|---|---|
| committer | Peter Bacon Darwin | 2014-03-11 06:35:19 +0000 |
| commit | d1214af13245b8570a335a6cbc1d81ae3c366eb0 (patch) | |
| tree | 9cc1f78db3ad4f37b117579fd899c90d806bed22 /lib | |
| parent | 11c5bb7f3de13722a84c5503129097393056061e (diff) | |
| download | angular.js-d1214af13245b8570a335a6cbc1d81ae3c366eb0.tar.bz2 | |
chore(build): refactor build version information
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/grunt/utils.js | 177 |
1 files changed, 4 insertions, 173 deletions
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() + ' ' + |
