Files
yoga/Gruntfile.js

114 lines
3.3 KiB
JavaScript
Raw Normal View History

'use strict';
module.exports = function(grunt) {
2015-08-11 16:52:57 +01:00
require('load-grunt-tasks')(grunt);
grunt.initConfig({
paths: {
2015-08-12 07:41:12 +01:00
libName: 'css-layout',
distFolder: 'dist',
2015-08-11 14:42:21 +01:00
srcFolder: 'src',
testFolder: 'src/__tests__',
2015-08-12 06:17:53 +01:00
cTestFiles: 'src/__tests__/Layout-test.c src/Layout.c src/Layout-test-utils.c',
2015-08-12 07:41:12 +01:00
cTestOutput: 'c_test',
javaLibFolder: 'src/java/lib',
javaSource: 'src/java/tests/com/facebook/csslayout/*.java',
javaTestFiles: 'org.junit.runner.JUnitCore com.facebook.csslayout.LayoutEngineTest com.facebook.csslayout.LayoutCachingTest com.facebook.csslayout.CSSNodeTest'
},
2015-08-12 06:17:53 +01:00
clean: {
dist: ['<%= paths.distFolder %>'],
2015-08-12 07:41:12 +01:00
cTest: ['<%= paths.cTestOutput %>'],
javaTest: ['**/*.class']
2015-08-12 06:17:53 +01:00
},
2015-08-11 16:52:57 +01:00
eslint: {
options: {
configFile: '.eslintrc'
},
target: ['<%= paths.srcFolder %>/Layout.js']
},
includereplace: {
options: {
prefix: '// @@',
},
main: {
2015-08-12 07:41:12 +01:00
src: '<%= paths.srcFolder %>/<%= paths.libName %>.js',
dest: '<%= paths.distFolder %>/<%= paths.libName %>.js'
}
},
uglify: {
options: {
sourceMap: true,
sourceMapIncludeSources: true
},
main: {
files: {
2015-08-12 07:41:12 +01:00
'<%= paths.distFolder %>/<%= paths.libName %>.min.js':
['<%= paths.distFolder %>/<%= paths.libName %>.js']
}
}
2015-08-11 14:42:21 +01:00
},
karma: {
main: {
options: {
files: [
'<%= paths.srcFolder %>/Layout.js',
'<%= paths.srcFolder %>/Layout-test-utils.js',
'<%= paths.testFolder %>/Layout-test.js',
'<%= paths.testFolder %>/Layout-consts-test.js'
],
browsers: ['Chrome'],
frameworks: ['jasmine'],
singleRun: true
}
}
2015-08-12 06:17:53 +01:00
},
execute: {
transpile: {
src: ['<%= paths.srcFolder %>/transpile.js']
}
},
shell: {
2015-08-12 07:41:12 +01:00
cCompile: {
2015-08-12 06:17:53 +01:00
command: 'gcc -std=c99 -Werror -Wno-padded <%= paths.cTestFiles %> -lm -o "./<%= paths.cTestOutput %>"'
},
2015-08-12 07:41:12 +01:00
cTestExecute: {
2015-08-12 06:17:53 +01:00
command: './<%= paths.cTestOutput %>'
2015-08-12 07:41:12 +01:00
},
javaCompile: {
command: 'javac -cp <%= paths.javaLibFolder %>/junit4.jar:<%= paths.javaLibFolder %>/jsr305.jar:<%= paths.javaLibFolder %>/infer-annotations-1.4.jar -sourcepath ./src/java/src:./src/java/tests <%= paths.javaSource %>'
},
javaTestExecute: {
command: 'java -cp ./src/java/src:./src/java/tests:<%= paths.javaLibFolder %>/junit4.jar:<%= paths.javaLibFolder %>/infer-annotations-1.4.jar <%= paths.javaTestFiles %>'
},
javaPackage: {
command: 'jar cf <%= paths.distFolder %>/<%= paths.libName %>.jar <%= paths.javaSource %>'
2015-08-12 06:17:53 +01:00
}
}
});
2015-08-12 07:41:12 +01:00
grunt.registerTask('test-java', ['shell:javaCompile', 'shell:javaTestExecute', 'clean:javaTest']);
2015-08-12 06:17:53 +01:00
2015-08-12 07:41:12 +01:00
grunt.registerTask('test-c', ['shell:cCompile', 'shell:cTestExecute', 'clean:cTest']);
grunt.registerTask('transpile', ['execute:transpile', 'test-c', 'test-java']);
2015-08-12 06:17:53 +01:00
grunt.registerTask('test-javascript', ['eslint', 'karma']);
2015-08-12 07:41:12 +01:00
grunt.registerTask('package-javascript', ['includereplace', 'uglify']);
grunt.registerTask('package-java', ['shell:javaPackage']);
2015-08-12 06:17:53 +01:00
2015-08-12 07:41:12 +01:00
grunt.registerTask('build', ['test-javascript', 'transpile', 'clean:dist', 'package-javascript', 'package-java']);
grunt.registerTask('default', ['build']);
};