Skip to content

Commit 7352216

Browse files
committed
Release: fix CDN archive creation
Fixes gh-1940
1 parent dcd2c8f commit 7352216

File tree

2 files changed

+61
-34
lines changed

2 files changed

+61
-34
lines changed

build/release.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,15 @@ module.exports = function( Release ) {
5858
* @param {Function} callback
5959
*/
6060
dist: function( callback ) {
61-
dist( Release, callback );
61+
cdn.makeArchives( Release, function() {
62+
dist( Release, callback );
63+
});
6264
}
6365
});
6466
};
6567

6668
module.exports.dependencies = [
67-
"archiver@0.5.2",
69+
"archiver@0.14.2",
6870
"shelljs@0.2.6",
6971
"npm@2.3.0"
7072
];

build/release/cdn.js

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var
22
fs = require( "fs" ),
33
shell = require( "shelljs" ),
4+
path = require( "path" ),
45

56
cdnFolder = "dist/cdn",
67

@@ -20,18 +21,22 @@ var
2021

2122
msFilesCDN = [
2223
"jquery-compat-VER.js", "jquery-compat-VER.min.js", "jquery-compat-VER.min.map"
23-
];
24+
],
25+
26+
rver = /VER/,
27+
rcompat = /\-compat\./g;
2428

2529
/**
2630
* Generates copies for the CDNs
2731
*/
2832
function makeReleaseCopies( Release ) {
33+
var version = Release.newVersion.replace( "-compat", "" );
2934
shell.mkdir( "-p", cdnFolder );
3035

3136
Object.keys( releaseFiles ).forEach(function( key ) {
3237
var text,
3338
builtFile = releaseFiles[ key ],
34-
unpathedFile = key.replace( /VER/g, Release.newVersion ),
39+
unpathedFile = key.replace( /VER/g, version ),
3540
releaseFile = cdnFolder + "/" + unpathedFile;
3641

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

58-
function makeArchive( Release, cdn, files ) {
59-
if ( Release.preRelease ) {
60-
console.log( "Skipping archive creation for " + cdn + "; this is a beta release." );
61-
return;
62-
}
63+
function makeArchives( Release, callback ) {
6364

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

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

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

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

78-
files = files.map(function( item ) {
79-
return cdnFolder + "/" + item.replace( /VER/g, Release.newVersion );
80-
});
78+
var sum,
79+
archiver = require( "archiver" )( "zip" ),
80+
md5file = cdnFolder + "/" + cdn + "-md5.txt",
81+
output = fs.createWriteStream(
82+
cdnFolder + "/" + cdn + "-jquery-compat-" + version + ".zip"
83+
);
84+
85+
output.on( "close", callback );
86+
87+
output.on( "error", function( err ) {
88+
throw err;
89+
});
90+
91+
archiver.pipe( output );
8192

82-
shell.exec( "md5sum", files, function( code, stdout ) {
83-
fs.writeFileSync( md5file, stdout );
93+
files = files.map(function( item ) {
94+
return "dist" + ( rver.test( item ) ? "/cdn" : "" ) + "/" +
95+
item.replace( rver, version );
96+
});
97+
98+
sum = Release.exec(
99+
// Read jQuery files
100+
"md5sum " + files.join( " " ).replace( rcompat, "." ),
101+
"Error retrieving md5sum"
102+
);
103+
fs.writeFileSync( "./" + md5file, sum );
84104
files.push( md5file );
85105

86106
files.forEach(function( file ) {
87-
archiver.append( fs.createReadStream( file ), { name: file } );
107+
// For Google, read jquery.js, write jquery-compat.js
108+
archiver.append( fs.createReadStream( file.replace( rcompat, "." ) ),
109+
{ name: path.basename( file ) } );
88110
});
89111

90112
archiver.finalize();
91-
});
92-
}
113+
}
93114

94-
function buildGoogleCDN( Release ) {
95-
makeArchive( Release, "googlecdn", googleFilesCDN );
96-
}
115+
function buildGoogleCDN( callback ) {
116+
makeArchive( "googlecdn", googleFilesCDN, callback );
117+
}
97118

98-
function buildMicrosoftCDN( Release ) {
99-
makeArchive( Release, "mscdn", msFilesCDN );
119+
function buildMicrosoftCDN( callback ) {
120+
makeArchive( "mscdn", msFilesCDN, callback );
121+
}
122+
123+
buildGoogleCDN(function() {
124+
buildMicrosoftCDN( callback );
125+
});
100126
}
101127

102128
module.exports = {
103129
makeReleaseCopies: makeReleaseCopies,
104-
buildGoogleCDN: buildGoogleCDN,
105-
buildMicrosoftCDN: buildMicrosoftCDN
130+
makeArchives: makeArchives
106131
};

0 commit comments

Comments
 (0)