From 822520ece7520457c045b1dae77b6ffc5b96654a Mon Sep 17 00:00:00 2001 From: Rafael Xavier de Souza Date: Wed, 13 Feb 2013 18:56:35 -0200 Subject: [PATCH] Grunt: update generate_themes task to use the new DownloadBuilder API - DownloadBuilder accepts the config file as an option. It's not necessary to workaround it by changing the DownloadBuilder config file anymore; - DownloadBuilder has exposed a method to generate the theme gallery bundle; --- build/tasks/build.js | 71 ++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/build/tasks/build.js b/build/tasks/build.js index 75cbca4a0..cef984198 100644 --- a/build/tasks/build.js +++ b/build/tasks/build.js @@ -175,67 +175,42 @@ grunt.registerMultiTask( "md5", "Create list of md5 hashes for CDN uploads", fun }); grunt.registerTask( "generate_themes", function() { - var download, files, done, configContent, - target = "dist/" + grunt.template.process( grunt.config( "files.themes" ), grunt.config() ) + "/", + var download, done, distFolder = "dist/" + grunt.template.process( grunt.config( "files.dist" ), grunt.config() ), - configFile = "node_modules/download.jqueryui.com/config.json"; + target = "dist/" + grunt.template.process( grunt.config( "files.themes" ), grunt.config() ) + "/"; + try { require.resolve( "download.jqueryui.com" ); } catch( error ) { throw new Error( "You need to manually install download.jqueryui.com for this task to work" ); } - // copy release files into download builder to avoid cloning again - grunt.file.expandFiles( distFolder + "/**" ).forEach(function( file ) { - grunt.file.copy( file, "node_modules/download.jqueryui.com/release/" + file.replace(/^dist\/jquery-ui-/, "") ); - }); - // make it look for the right version - configContent = grunt.file.readJSON( configFile ); - configContent.jqueryUi.stable.version = grunt.config( "pkg.version" ); - grunt.file.write( configFile, JSON.stringify( configContent, null, "\t" ) + "\n" ); - - download = new ( require( "download.jqueryui.com" ) )(); - - files = grunt.file.expandFiles( distFolder + "/themes/base/**/*" ); - files.forEach(function( fileName ) { - grunt.file.copy( fileName, target + fileName.replace( distFolder, "" ) ); + download = require( "download.jqueryui.com" )({ + config: { + "jqueryUi": { + "stable": { "path": path.resolve( __dirname + "/../../" + distFolder ) } + }, + "jquery": "skip" + } }); done = this.async(); - grunt.utils.async.forEach( download.themeroller.gallery(), function( theme, done ) { - var folderName = theme.folderName(), - concatTarget = "css-" + folderName, - cssContent = theme.css(), - cssFolderName = target + "themes/" + folderName + "/", - cssFileName = cssFolderName + "jquery.ui.theme.css", - cssFiles = grunt.config.get( "concat.css.src" )[ 1 ].slice(); - - grunt.file.write( cssFileName, cssContent ); - - // get css components, replace the last file with the current theme - cssFiles.splice(-1); - cssFiles.push( "" ); - grunt.config.get( "concat" )[ concatTarget ] = { - src: [ "", cssFiles ], - dest: cssFolderName + "jquery-ui.css" - }; - grunt.task.run( "concat:" + concatTarget ); - - theme.fetchImages(function( err, files ) { - if ( err ) { - done( err ); - return; - } - files.forEach(function( file ) { - grunt.file.write( cssFolderName + "images/" + file.path, file.data ); - }); - done(); - }); - }, function( err ) { + download.buildThemesBundle(function( err, files ) { if ( err ) { grunt.log.error( err ); + return done( false ); } - done( !err ); + done( + files.every(function( file ) { + try { + grunt.file.write( target + file.path, file.data ); + } catch( err ) { + grunt.log.error( err ); + return false; + } + return true; + }) && grunt.log.writeln( "Generated at " + target ) + ); }); });