From 24a702c1ac7a4f1ae906cf45c3aa8dc91d3125f0 Mon Sep 17 00:00:00 2001 From: jaubourg Date: Mon, 30 Apr 2012 04:40:28 +0200 Subject: [PATCH] Completely automates the process: make_package will checkout each version of jQuery, import files and create a package in package/VERSION then run tests in package/VERSION/test using nodeunit :) --- import/main.js | 12 +---- make_package.js | 136 ++++++++++++++++++++++++++++++------------------ 2 files changed, 86 insertions(+), 62 deletions(-) diff --git a/import/main.js b/import/main.js index 6fcf235..fce5bdf 100644 --- a/import/main.js +++ b/import/main.js @@ -19,7 +19,6 @@ function chain( fns ) { }, unit: { inputDir: "./jquery/test/unit/", - outputDir: "./package/test/", filter: [ srcFilter, unitFilter ] } }).forEach(function( data, type ) { @@ -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 ); }); }; }); diff --git a/make_package.js b/make_package.js index 4d011f9..5712200 100644 --- a/make_package.js +++ b/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 { + + } + +})();