Commit 7352216c authored by Timmy Willison's avatar Timmy Willison

Release: fix CDN archive creation

Fixes gh-1940
parent dcd2c8f3
...@@ -58,13 +58,15 @@ module.exports = function( Release ) { ...@@ -58,13 +58,15 @@ module.exports = function( Release ) {
* @param {Function} callback * @param {Function} callback
*/ */
dist: function( callback ) { dist: function( callback ) {
cdn.makeArchives( Release, function() {
dist( Release, callback ); dist( Release, callback );
});
} }
}); });
}; };
module.exports.dependencies = [ module.exports.dependencies = [
"archiver@0.5.2", "archiver@0.14.2",
"shelljs@0.2.6", "shelljs@0.2.6",
"npm@2.3.0" "npm@2.3.0"
]; ];
var var
fs = require( "fs" ), fs = require( "fs" ),
shell = require( "shelljs" ), shell = require( "shelljs" ),
path = require( "path" ),
cdnFolder = "dist/cdn", cdnFolder = "dist/cdn",
...@@ -20,18 +21,22 @@ var ...@@ -20,18 +21,22 @@ var
msFilesCDN = [ msFilesCDN = [
"jquery-compat-VER.js", "jquery-compat-VER.min.js", "jquery-compat-VER.min.map" "jquery-compat-VER.js", "jquery-compat-VER.min.js", "jquery-compat-VER.min.map"
]; ],
rver = /VER/,
rcompat = /\-compat\./g;
/** /**
* Generates copies for the CDNs * Generates copies for the CDNs
*/ */
function makeReleaseCopies( Release ) { function makeReleaseCopies( Release ) {
var version = Release.newVersion.replace( "-compat", "" );
shell.mkdir( "-p", cdnFolder ); shell.mkdir( "-p", cdnFolder );
Object.keys( releaseFiles ).forEach(function( key ) { Object.keys( releaseFiles ).forEach(function( key ) {
var text, var text,
builtFile = releaseFiles[ key ], builtFile = releaseFiles[ key ],
unpathedFile = key.replace( /VER/g, Release.newVersion ), unpathedFile = key.replace( /VER/g, version ),
releaseFile = cdnFolder + "/" + unpathedFile; releaseFile = cdnFolder + "/" + unpathedFile;
if ( /\.map$/.test( releaseFile ) ) { if ( /\.map$/.test( releaseFile ) ) {
...@@ -55,20 +60,30 @@ function makeReleaseCopies( Release ) { ...@@ -55,20 +60,30 @@ function makeReleaseCopies( Release ) {
}); });
} }
function makeArchive( Release, cdn, files ) { function makeArchives( Release, callback ) {
Release.chdir( Release.dir.repo );
var version = Release.newVersion.replace( "-compat", "" );
function makeArchive( cdn, files, callback ) {
if ( Release.preRelease ) { if ( Release.preRelease ) {
console.log( "Skipping archive creation for " + cdn + "; this is a beta release." ); console.log( "Skipping archive creation for " + cdn + "; this is a beta release." );
callback();
return; return;
} }
console.log( "Creating production archive for " + cdn ); console.log( "Creating production archive for " + cdn );
var archiver = require( "archiver" )( "zip" ), var sum,
archiver = require( "archiver" )( "zip" ),
md5file = cdnFolder + "/" + cdn + "-md5.txt", md5file = cdnFolder + "/" + cdn + "-md5.txt",
output = fs.createWriteStream( output = fs.createWriteStream(
cdnFolder + "/" + cdn + "-jquery-" + Release.newVersion + ".zip" cdnFolder + "/" + cdn + "-jquery-compat-" + version + ".zip"
); );
output.on( "close", callback );
output.on( "error", function( err ) { output.on( "error", function( err ) {
throw err; throw err;
}); });
...@@ -76,31 +91,41 @@ function makeArchive( Release, cdn, files ) { ...@@ -76,31 +91,41 @@ function makeArchive( Release, cdn, files ) {
archiver.pipe( output ); archiver.pipe( output );
files = files.map(function( item ) { files = files.map(function( item ) {
return cdnFolder + "/" + item.replace( /VER/g, Release.newVersion ); return "dist" + ( rver.test( item ) ? "/cdn" : "" ) + "/" +
item.replace( rver, version );
}); });
shell.exec( "md5sum", files, function( code, stdout ) { sum = Release.exec(
fs.writeFileSync( md5file, stdout ); // Read jQuery files
"md5sum " + files.join( " " ).replace( rcompat, "." ),
"Error retrieving md5sum"
);
fs.writeFileSync( "./" + md5file, sum );
files.push( md5file ); files.push( md5file );
files.forEach(function( file ) { files.forEach(function( file ) {
archiver.append( fs.createReadStream( file ), { name: file } ); // For Google, read jquery.js, write jquery-compat.js
archiver.append( fs.createReadStream( file.replace( rcompat, "." ) ),
{ name: path.basename( file ) } );
}); });
archiver.finalize(); archiver.finalize();
}); }
}
function buildGoogleCDN( Release ) { function buildGoogleCDN( callback ) {
makeArchive( Release, "googlecdn", googleFilesCDN ); makeArchive( "googlecdn", googleFilesCDN, callback );
} }
function buildMicrosoftCDN( Release ) { function buildMicrosoftCDN( callback ) {
makeArchive( Release, "mscdn", msFilesCDN ); makeArchive( "mscdn", msFilesCDN, callback );
}
buildGoogleCDN(function() {
buildMicrosoftCDN( callback );
});
} }
module.exports = { module.exports = {
makeReleaseCopies: makeReleaseCopies, makeReleaseCopies: makeReleaseCopies,
buildGoogleCDN: buildGoogleCDN, makeArchives: makeArchives
buildMicrosoftCDN: buildMicrosoftCDN
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment