From f27618fc0f777bca5f298ca2cf5e0cc7c1952f91 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 23 Jul 2016 20:02:52 -0500 Subject: [PATCH] Initial skeleton and build process for Spike Wars. --- spike-wars/build.gradle | 156 ++++++++++++++++++++++++++++ spike-wars/package.json | 21 ++++ spike-wars/src/main/html/index.html | 17 +++ 3 files changed, 194 insertions(+) create mode 100644 spike-wars/build.gradle create mode 100644 spike-wars/package.json create mode 100644 spike-wars/src/main/html/index.html diff --git a/spike-wars/build.gradle b/spike-wars/build.gradle new file mode 100644 index 0000000..b23ac2b --- /dev/null +++ b/spike-wars/build.gradle @@ -0,0 +1,156 @@ +buildscript { + repositories { + mavenLocal() + mavenCentral() + } + + dependencies { + classpath 'net.sourceforge.fmpp:fmpp:0.9.15+' + classpath 'com.google.javascript:closure-compiler:v20140730+' + } +} + +plugins { + id "com.moowork.node" version "0.11" +} + +group = "" +version = "" + +task clean( + group: 'build', + description: 'Deletes the build directory.', + type: Delete) { + delete 'build' +} + +task cleanAll( + group: 'build', + description: 'Deletes the build directory and locally installed libraries.', + type: Delete, + dependsOn: clean) { + delete 'node_modules', 'bower_components' +} + +task compileScss( + group: 'build', + description: 'Compile SCSS files into CSS.', + type: Exec) { + inputs.dir("src/main/scss") + outputs.dir("build/webroot/css") + executable "scss" + args "--update", "src/main/scss:build/webroot/css", "-I", "src/main/scss-lib", "-t", "compressed" +} + +task esLint( + group: 'check', + description: 'Run ESLint on JavaScript sources.', + dependsOn: npmInstall, + type: NodeTask) { + inputs.dir("src/main/js") + script = file('node_modules/eslint/bin/eslint') + args = ["src/main/js"] +} + +task bowerInstall( + group: 'build', + description: 'Install bower components.', + type: NodeTask) { + outputs.dir('bower_components') + script = file('node_modules/bower/bin/bower') + args = ['install'] +} + +task flowCheck( + group: 'build', + description: 'Run the Flow JavaScript type checker.', + dependsOn: [npmInstall/*, bowerInstall*/], + type: NodeTask) { + inputs.dir('src/main/js') + script = file('node_modules/flow-bin/cli.js') +} + +task browserify( + group: 'build', + dependsOn: npmInstall, + type: NodeTask) { + + inputs.dir('src/main/js/${project.name}.js') + outputs.file('build/webroot/js/${project.name}-${project.version}.js') + + doFirst { file('build/webroot/js').mkdirs() } + script = file('node_modules/browserify/bin/cmd.js') + args = ['-t', 'babelify', '-o', "build/webroot/js/${project.name}-${project.version}.js", + "src/main/js/${project.name}.js"] +} + +task minifyJavaScript( + group: 'build', + description: 'Compile JavaScript files into minified output files.', + dependsOn: browserify, + type: JavaExec) { + + inputs.dir('build/webroot/js/${project.name}-${project.version}.js') + outputs.file('build/webroot/js/${project.name}-${project.version}.min.js') + + classpath = project.buildscript.configurations.classpath + main = 'com.google.javascript.jscomp.CommandLineRunner' + def argsArr = [] + argsArr << '--compilation_level=SIMPLE_OPTIMIZATIONS' + argsArr << "--js_output_file=build/webroot/js/${project.name}-${project.version}.min.js" + argsArr << "build/webroot/js/${project.name}-${project.version}.js" + + args argsArr +} + +task compileHtml( + group: 'build', + description: 'Compile HTML templates into rendered output.') { + inputs.dir('src/main/html') + outputs.dir('build/webroot') + } << { + + ant.taskdef(name: 'fmpp', classname:'fmpp.tools.AntTask', + classpath: project.buildscript.configurations.classpath.asPath) + + ant.fmpp(sourceRoot: "src/main/html", outputRoot: "build/webroot", + excludes: "templates/**,**/*.sw?") { + + data("""version: ${project.version}""") + } +} + +task copyResources( + group: 'build', + description: 'Copy static resources into the build directory.', + type: Copy) { + + // Third party resources not bundled by Browserify + from "path/to/resource/dir" + into "build/webroot" +} + +task compile( + group: 'build', + description: 'Compile all webapp resources', + dependsOn: [jsHint, copyResources, compileScss, browserify, minifyJavaScript, compileHtml]) + +task assemble( + group: 'build', + description: 'Assembles the outputs of this project.', + dependsOn: compile, + type: Zip) { + + from "build/webroot" + destinationDir = file("build") + baseName = project.name + version = project.version + extension = 'zip' +} + +task build( + group: 'build', + description: 'Assembles and tests the outputs of this project.', + dependsOn: [assemble]) << { + +} diff --git a/spike-wars/package.json b/spike-wars/package.json new file mode 100644 index 0000000..b943a51 --- /dev/null +++ b/spike-wars/package.json @@ -0,0 +1,21 @@ +{ + "name": "spike-wars", + "version": "1.0.0", + "description": "Spike Wars game.", + "main": "spike-wars.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "_git@git.jdb-labs.com:jdb/code-katas.git" + }, + "author": "Jonathan Bernard ", + "license": "ISC", + "devDependencies": { + "babel-preset-es2015": "^6.9.0", + "babelify": "^7.3.0", + "browserify": "^13.0.1", + "flow-bin": "^0.29.0" + } +} diff --git a/spike-wars/src/main/html/index.html b/spike-wars/src/main/html/index.html new file mode 100644 index 0000000..9fb22cd --- /dev/null +++ b/spike-wars/src/main/html/index.html @@ -0,0 +1,17 @@ + + + + Spike Wars v${version} + + + + + + + + + +

Spike Wars!

+ + +