mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-01 17:36:35 +00:00
ec8d31e7ad
Append this new task to the 'test' sequence in Jenkins (so that if e.g. buildloader causes dirty diff, the build fails). Locally this doesn't run by default, but you can mimick the Jenkins build by running 'grunt ci' instead of 'grunt test'. Change-Id: I7dd5417777c5a060fd9042248ece695c02c8ab41
114 lines
2.6 KiB
JavaScript
114 lines
2.6 KiB
JavaScript
/*!
|
|
* Grunt file
|
|
*
|
|
* @package VisualEditor
|
|
*/
|
|
|
|
/*jshint node:true */
|
|
module.exports = function ( grunt ) {
|
|
var modules = grunt.file.readJSON( 'lib/ve/build/modules.json' );
|
|
|
|
grunt.loadNpmTasks( 'grunt-contrib-csslint' );
|
|
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
|
|
grunt.loadNpmTasks( 'grunt-contrib-watch' );
|
|
grunt.loadNpmTasks( 'grunt-banana-checker' );
|
|
grunt.loadNpmTasks( 'grunt-jscs-checker' );
|
|
grunt.loadTasks( 'lib/ve/build/tasks' );
|
|
grunt.loadTasks( 'build/tasks' );
|
|
|
|
grunt.initConfig( {
|
|
pkg: grunt.file.readJSON( 'package.json' ),
|
|
jsduckcatconfig: {
|
|
main: {
|
|
target: '.docs/categories.json',
|
|
from: [
|
|
'.docs/mw-categories.json',
|
|
{
|
|
file: 'lib/ve/.docs/categories.json',
|
|
aggregate: {
|
|
'VisualEditor (core)': [
|
|
'General',
|
|
'Initialization',
|
|
'DataModel',
|
|
'ContentEditable',
|
|
'User Interface',
|
|
'Tests'
|
|
]
|
|
},
|
|
include: [ 'UnicodeJS', 'OOJS UI', 'Upstream' ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
buildloader: {
|
|
egiframe: {
|
|
targetFile: '.docs/eg-iframe.html',
|
|
template: '.docs/eg-iframe.html.template',
|
|
modules: modules,
|
|
load: [ 'visualEditor.desktop.standalone' ],
|
|
pathPrefix: 'lib/ve/',
|
|
indent: '\t\t'
|
|
}
|
|
},
|
|
jshint: {
|
|
options: {
|
|
jshintrc: true
|
|
},
|
|
all: [
|
|
'*.js',
|
|
'{.docs,build}/**/*.js',
|
|
'modules/**/*.js'
|
|
]
|
|
},
|
|
jscs: {
|
|
src: '<%= jshint.all %>'
|
|
},
|
|
csslint: {
|
|
options: {
|
|
csslintrc: '.csslintrc'
|
|
},
|
|
all: 'modules/*/**/*.css'
|
|
},
|
|
banana: {
|
|
all: 'modules/ve-{mw,wmf}/i18n/'
|
|
},
|
|
watch: {
|
|
files: [
|
|
'.{csslintrc,jscsrc,jshintignore,jshintrc}',
|
|
'<%= jshint.all %>',
|
|
'<%= csslint.all %>'
|
|
],
|
|
tasks: 'test'
|
|
}
|
|
} );
|
|
|
|
grunt.registerTask( 'git-status', function () {
|
|
var done = this.async();
|
|
// Are there unstaged changes?
|
|
require( 'child_process' ).exec( 'git ls-files --modified', function ( err, stdout, stderr ) {
|
|
var ret = err || stderr || stdout;
|
|
if ( ret ) {
|
|
grunt.log.write( ret );
|
|
grunt.log.error( 'Unstaged changes.' );
|
|
done( false );
|
|
} else {
|
|
grunt.log.ok( 'No unstaged changes.' );
|
|
done();
|
|
}
|
|
} );
|
|
} );
|
|
|
|
grunt.registerTask( 'build', [ 'jsduckcatconfig', 'buildloader' ] );
|
|
grunt.registerTask( 'lint', [ 'jshint', 'jscs', 'csslint', 'banana' ] );
|
|
grunt.registerTask( 'test', [ 'build', 'lint' ] );
|
|
grunt.registerTask( 'test-ci', [ 'git-status' ] );
|
|
grunt.registerTask( 'default', 'test' );
|
|
|
|
if ( process.env.JENKINS_HOME ) {
|
|
grunt.renameTask( 'test', 'test-internal' );
|
|
grunt.registerTask( 'test', [ 'test-internal', 'test-ci' ] );
|
|
} else {
|
|
grunt.registerTask( 'ci', [ 'test', 'test-ci' ] );
|
|
}
|
|
};
|