Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Completely automates the process: make_package will checkout each ver…
…sion of jQuery, import files and create a package in package/VERSION then run tests in package/VERSION/test using nodeunit :)
- Loading branch information
Showing
2 changed files
with
86 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 { | ||
|
||
} | ||
|
||
})(); | ||
|