Skip to content

Commit

Permalink
Release: fix CDN archive creation
Browse files Browse the repository at this point in the history
Fixes gh-1940
  • Loading branch information
timmywil committed Jan 30, 2015
1 parent dcd2c8f commit 7352216
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 34 deletions.
6 changes: 4 additions & 2 deletions build/release.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ module.exports = function( Release ) {
* @param {Function} callback
*/
dist: function( callback ) {
dist( Release, callback );
cdn.makeArchives( Release, function() {
dist( Release, callback );
});
}
});
};

module.exports.dependencies = [
"archiver@0.5.2",
"archiver@0.14.2",
"[email protected]",
"[email protected]"
];
89 changes: 57 additions & 32 deletions build/release/cdn.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var
fs = require( "fs" ),
shell = require( "shelljs" ),
path = require( "path" ),

cdnFolder = "dist/cdn",

Expand All @@ -20,18 +21,22 @@ var

msFilesCDN = [
"jquery-compat-VER.js", "jquery-compat-VER.min.js", "jquery-compat-VER.min.map"
];
],

rver = /VER/,
rcompat = /\-compat\./g;

/**
* Generates copies for the CDNs
*/
function makeReleaseCopies( Release ) {
var version = Release.newVersion.replace( "-compat", "" );
shell.mkdir( "-p", cdnFolder );

Object.keys( releaseFiles ).forEach(function( key ) {
var text,
builtFile = releaseFiles[ key ],
unpathedFile = key.replace( /VER/g, Release.newVersion ),
unpathedFile = key.replace( /VER/g, version ),
releaseFile = cdnFolder + "/" + unpathedFile;

if ( /\.map$/.test( releaseFile ) ) {
Expand All @@ -55,52 +60,72 @@ function makeReleaseCopies( Release ) {
});
}

function makeArchive( Release, cdn, files ) {
if ( Release.preRelease ) {
console.log( "Skipping archive creation for " + cdn + "; this is a beta release." );
return;
}
function makeArchives( Release, callback ) {

console.log( "Creating production archive for " + cdn );
Release.chdir( Release.dir.repo );

var archiver = require( "archiver" )( "zip" ),
md5file = cdnFolder + "/" + cdn + "-md5.txt",
output = fs.createWriteStream(
cdnFolder + "/" + cdn + "-jquery-" + Release.newVersion + ".zip"
);
var version = Release.newVersion.replace( "-compat", "" );

output.on( "error", function( err ) {
throw err;
});
function makeArchive( cdn, files, callback ) {
if ( Release.preRelease ) {
console.log( "Skipping archive creation for " + cdn + "; this is a beta release." );
callback();
return;
}

archiver.pipe( output );
console.log( "Creating production archive for " + cdn );

files = files.map(function( item ) {
return cdnFolder + "/" + item.replace( /VER/g, Release.newVersion );
});
var sum,
archiver = require( "archiver" )( "zip" ),
md5file = cdnFolder + "/" + cdn + "-md5.txt",
output = fs.createWriteStream(
cdnFolder + "/" + cdn + "-jquery-compat-" + version + ".zip"
);

output.on( "close", callback );

output.on( "error", function( err ) {
throw err;
});

archiver.pipe( output );

shell.exec( "md5sum", files, function( code, stdout ) {
fs.writeFileSync( md5file, stdout );
files = files.map(function( item ) {
return "dist" + ( rver.test( item ) ? "/cdn" : "" ) + "/" +
item.replace( rver, version );
});

sum = Release.exec(
// Read jQuery files
"md5sum " + files.join( " " ).replace( rcompat, "." ),
"Error retrieving md5sum"
);
fs.writeFileSync( "./" + md5file, sum );
files.push( md5file );

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();
});
}
}

function buildGoogleCDN( Release ) {
makeArchive( Release, "googlecdn", googleFilesCDN );
}
function buildGoogleCDN( callback ) {
makeArchive( "googlecdn", googleFilesCDN, callback );
}

function buildMicrosoftCDN( Release ) {
makeArchive( Release, "mscdn", msFilesCDN );
function buildMicrosoftCDN( callback ) {
makeArchive( "mscdn", msFilesCDN, callback );
}

buildGoogleCDN(function() {
buildMicrosoftCDN( callback );
});
}

module.exports = {
makeReleaseCopies: makeReleaseCopies,
buildGoogleCDN: buildGoogleCDN,
buildMicrosoftCDN: buildMicrosoftCDN
makeArchives: makeArchives
};

0 comments on commit 7352216

Please sign in to comment.