Navigation Menu

Skip to content

Commit

Permalink
Completely automates the process: make_package will checkout each ver…
Browse files Browse the repository at this point in the history
…sion of jQuery, import files and create a package in package/VERSION then run tests in package/VERSION/test using nodeunit :)
  • Loading branch information
jaubourg committed Apr 30, 2012
1 parent 1839803 commit 24a702c
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 62 deletions.
12 changes: 1 addition & 11 deletions import/main.js
Expand Up @@ -19,7 +19,6 @@ function chain( fns ) {
},
unit: {
inputDir: "./jquery/test/unit/",
outputDir: "./package/test/",
filter: [ srcFilter, unitFilter ]
}
}).forEach(function( data, type ) {
Expand All @@ -35,16 +34,7 @@ function chain( fns ) {
return callback && callback( err );
}
code = filter( "" + code ).trim() + "\n";
if ( data.outputDir ) {
fs.writeFile( data.outputDir + id + ".js", code, callback ? function() {
if ( err ) {
return callback( err );
}
callback( undefined, code );
} : undefined );
} else {
callback( undefined, code );
}
callback && callback( undefined, code );
});
};
});
136 changes: 85 additions & 51 deletions make_package.js
@@ -1,75 +1,109 @@
require( "plus" );

var fs = require( "fs" ),
wrench = require( "wrench" );
wrench = require( "wrench" ),
basename = require( "path" ).basename,
exec = require('child_process').exec,
imports = require( "./import/main" ),
versions = "1.5|1.5.1|1.5.2|1.6|1.6.2|1.6.3|1.6.4|1.7|1.7.1|1.7.2".split( "|" ),
testDirs = [];

fs.readFile( "./jquery/version.txt", function( err, version ) {
(function next() {

if ( err ) {
throw err;
}
if ( versions.length ) {

version = ( "" + version ).trim();
if ( version.split( "." ).length === 2 ) {
version += ".0";
}
var version = versions.shift(),
fullVersion = version + ( version.length < 5 ? ".0" : "" ),
packageDir = "./package/" + fullVersion + "/";

wrench.rmdirSyncRecursive( "./package", true );
wrench.mkdirSyncRecursive( "./package/lib", 0777);
wrench.mkdirSyncRecursive( "./package/test", 0777);
function test() {
var nodeunit = "nodeunit " + packageDir + "test";
console.log( "\n" + nodeunit + "\n" );
exec( nodeunit, function( error, stdout, stderr ) {
if ( error ) {
throw stderr;
}
console.log( stdout );
next();
});
}

var basename = require( "path").basename;
imports = require( "./import/main" ),
out = {
jquery: "var jQuery = require( \"./jquery\" );\n"
},
src = version < "1.5.2" ? [ "core" ]
: ( version < "1.7" ? [ "deferred" ] : [ "deferred", "callbacks" ] ),
count = src.length,
templateFiles = {
"./package/package.json": function( code ) {
return code.replace( "@VERSION@", version );
},
"./package/lib/jquery.js": function( code ) {
return code;
}
};
console.log( "\n---- STARTING GENERATION for JQUERY " + version + " ------\n" );

console.log( "Starting generation for jQuery " + version + " (" + src + ")" );
wrench.rmdirSyncRecursive( packageDir, true );
wrench.mkdirSyncRecursive( packageDir + "lib", 0777);
wrench.mkdirSyncRecursive( packageDir + "test", 0777);

templateFiles.forEach(function( filter, filename ) {
fs.readFile( "./template/" + basename( filename ), function( err, data ) {
if ( err ) {
throw err;
({
"package.json": function( code ) {
return code.replace( "@VERSION@", fullVersion );
},
"lib/jquery.js": function( code ) {
return code;
}
fs.writeFile( filename, filter( "" + data ), function( err ) {
}).forEach(function( filter, filename ) {
fs.readFile( "./template/" + basename( filename ), function( err, data ) {
if ( err ) {
throw err;
}
fs.writeFile( packageDir + filename, filter( "" + data ), function( err ) {
if ( err ) {
throw err;
}
});
});
});
});

src.forEach(function( id ) {
out[ id ] = undefined; // for proper ordering
imports.unit( id, function( err ) {
if ( err ) {
throw err;
}
});
imports.src( id, function( err, code ) {
if ( err ) {
throw err;
exec( "git checkout " + version, { cwd: "./jquery" }, function( error, stdout, stderr ) {

if ( error ) {
throw stderr;
}
out[ id ] = code;
if ( !( --count ) ) {
require( "fs" ).writeFile( "./package/lib/jquery-deferred.js", out.join( "\n" ), function( err ) {

var out = {
jquery: "var jQuery = require( \"./jquery\" );\n"
},
src = version < "1.5.2" ? [ "core" ]
: ( version < "1.7" ? [ "deferred" ] : [ "deferred", "callbacks" ] ),
count = src.length,
countNext = count + 1;

src.forEach(function( id ) {
out[ id ] = undefined; // for proper ordering
imports.unit( id, function( err, code ) {
if ( err ) {
throw err;
}
fs.writeFile( packageDir + "test/" + id + ".js", code, function( err ) {
if ( err ) {
throw err;
}
if ( !( --countNext ) ) {
test();
}
});
});
}
imports.src( id, function( err, code ) {
if ( err ) {
throw err;
}
out[ id ] = code;
if ( !( --count ) ) {
fs.writeFile( packageDir + "lib/jquery-deferred.js", out.join( "\n" ), function( err ) {
if ( err ) {
throw err;
}
if ( !( --countNext ) ) {
test();
}
});
}
});
});
});
});
});
} else {

}

})();

0 comments on commit 24a702c

Please sign in to comment.