From 9277179943f59dce8f6134b04e006bd3608c2c2d Mon Sep 17 00:00:00 2001 From: Eric Wendelin Date: Sat, 10 Mar 2012 14:25:12 -0700 Subject: [PATCH] Failing fast when we detect a file that doesn't exist, fixes #5 --- build.gradle | 2 +- plugin.gradle | 6 +++--- .../eriwen/gradle/js/tasks/CombineJsTask.groovy | 14 +++++++++----- .../com/eriwen/gradle/js/tasks/GzipJsTask.groovy | 11 ++++++++--- .../com/eriwen/gradle/js/tasks/JsDocTask.groovy | 6 +++--- .../eriwen/gradle/js/tasks/MinifyJsTask.groovy | 15 ++++++++++----- .../eriwen/gradle/js/tasks/Props2JsTask.groovy | 11 ++++++++--- 7 files changed, 42 insertions(+), 23 deletions(-) diff --git a/build.gradle b/build.gradle index 99b8e7b..12c939e 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ apply plugin: 'idea' defaultTasks 'clean', 'build' -version = '0.3.42-SNAPSHOT' +version = '0.3.44-SNAPSHOT' group = 'com.eriwen' archivesBaseName = 'gradle-js-plugin' isSnapshot = version.endsWith("-SNAPSHOT") diff --git a/plugin.gradle b/plugin.gradle index 462a0ac..53369a4 100644 --- a/plugin.gradle +++ b/plugin.gradle @@ -4,7 +4,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.eriwen:gradle-js-plugin:0.3.42-SNAPSHOT' + classpath 'com.eriwen:gradle-js-plugin:0.3.44-SNAPSHOT' } } @@ -43,13 +43,13 @@ combineJs { task combine(type: com.eriwen.gradle.js.tasks.CombineJsTask) { //javascript.source.custom.js.files.toList() - source = ["${projectDir}/src/test/resources/file1.js", "${projectDir}/src/test/resources/file2.js"] + source = ["${projectDir}/src/test/resources/file1.js", "${projectDir}/src/test/resources/file3.js"] dest = file("${buildDir}/all.js") } // Minify with Google Closure Compiler minifyJs { - inputs.file file("${buildDir}/all.js") + inputs.file file("${buildDir}/all2.js") outputs.file file("${buildDir}/all-min.js") warningLevel = 'QUIET' } diff --git a/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy b/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy index d4d457f..2b12bbd 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy @@ -17,6 +17,7 @@ package com.eriwen.gradle.js.tasks import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction +import org.gradle.api.GradleException class CombineJsTask extends DefaultTask { def source @@ -31,19 +32,22 @@ class CombineJsTask extends DefaultTask { } if (!getOutputs().files.files.empty) { - logger.warn('The syntax "outputs.files ..." is deprecated! Please use `dest = "dest/filename.js"`') + logger.warn 'The syntax "outputs.files ..." is deprecated! Please use `dest = "dest/filename.js"`' def outputFiles = getOutputs().files.files if (outputFiles.size() == 1) { dest = (outputFiles.toArray()[0] as File) } else if (!dest) { - throw new IllegalArgumentException('Output must be exactly 1 File object. Example: dest = "myFile"') + throw new GradleException('Output must be exactly 1 File object. Example: dest = "myFile"') } } ant.concat(destfile: dest.canonicalPath, fixlastline: 'yes') { - source.each { - logger.info("Adding to fileset: ${it}") - fileset(file: it) + source.each { String path -> + if (!(new File(path).exists())) { + throw new GradleException("Source JS file ${path} does not exist!") + } + logger.info("Adding to fileset: ${path}") + fileset(file: path) } } } diff --git a/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy b/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy index 938dbfd..d689260 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy @@ -17,9 +17,10 @@ package com.eriwen.gradle.js.tasks import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction +import org.gradle.api.GradleException class GzipJsTask extends DefaultTask { - File source + def source File dest @TaskAction @@ -35,7 +36,11 @@ class GzipJsTask extends DefaultTask { dest = getOutputs().files.files.toArray()[0] as File } - ant.gzip(src: source.canonicalPath, destfile: "${source.canonicalPath}.gz") - ant.move(file: "${source.canonicalPath}.gz", tofile: dest.canonicalPath) + if (!source.exists()) { + throw new GradleException("JS file ${source.canonicalPath} doesn't exist!") + } else { + ant.gzip(src: source.canonicalPath, destfile: "${source.canonicalPath}.gz") + ant.move(file: "${source.canonicalPath}.gz", tofile: dest.canonicalPath) + } } } diff --git a/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy b/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy index 1cdd129..26b68f0 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy @@ -36,13 +36,13 @@ class JsDocTask extends DefaultTask { @TaskAction def run() { if (!source) { - logger.warn('The syntax "inputs.files ..." is deprecated! Please use `source = ["path1", "path2"]`') - logger.warn('This will be removed in the next version of the JS plugin') + logger.warn 'The syntax "inputs.files ..." is deprecated! Please use `source = ["path1", "path2"]`' + logger.warn 'This will be removed in the next version of the JS plugin' source = getInputs().files.files.collect { it.canonicalPath } } if (!destinationDir) { - logger.warn('The syntax "outputs.file file(..)" is deprecated! Please use `destinationDir = file(buildDir)`') + logger.warn 'The syntax "outputs.file file(..)" is deprecated! Please use `destinationDir = file(buildDir)`' destinationDir = getOutputs().files.files.toArray()[0] as File } diff --git a/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy b/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy index 055940c..ee06924 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy @@ -20,11 +20,12 @@ import org.gradle.api.tasks.TaskAction import com.google.javascript.jscomp.CompilerOptions import com.eriwen.gradle.js.JsMinifier +import org.gradle.api.GradleException class MinifyJsTask extends DefaultTask { private static final JsMinifier MINIFIER = new JsMinifier() - // FIXME: Wire defaults in properly through convention (#14) + // FIXME: Wire defaults in properly through convention (issue #14) CompilerOptions compilerOptions = new CompilerOptions() String compilationLevel = 'SIMPLE_OPTIMIZATIONS' String warningLevel = 'DEFAULT' @@ -34,16 +35,20 @@ class MinifyJsTask extends DefaultTask { @TaskAction def run() { if (!source) { - logger.warn('The syntax "inputs.files ..." is deprecated! Please use `source = file("path1")`') - logger.warn('This will be removed in the next version of the JS plugin') + logger.warn 'The syntax "inputs.files ..." is deprecated! Please use `source = file("path1")`' + logger.warn 'This will be removed in the next version of the JS plugin' source = getInputs().files.files.toArray()[0] as File } + if (!source.exists()) { + throw new GradleException("JS file ${source.canonicalPath} doesn't exist!") + } + if (!dest) { - logger.warn('The syntax "outputs.files ..." is deprecated! Please use `dest = file("dest/file.js")`') + logger.warn 'The syntax "outputs.files ..." is deprecated! Please use `dest = file("dest/file.js")`' dest = getOutputs().files.files.toArray()[0] as File } MINIFIER.minifyJsFile(source, dest, compilerOptions, warningLevel, compilationLevel) - } + } } diff --git a/src/main/groovy/com/eriwen/gradle/js/tasks/Props2JsTask.groovy b/src/main/groovy/com/eriwen/gradle/js/tasks/Props2JsTask.groovy index 66abc8e..268ac5c 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/Props2JsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/Props2JsTask.groovy @@ -18,6 +18,7 @@ package com.eriwen.gradle.js.tasks import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction import com.eriwen.gradle.js.ResourceUtil +import org.gradle.api.GradleException class Props2JsTask extends DefaultTask { private static final String PROPS2JS_JAR = 'props2js-0.1.0.jar' @@ -34,16 +35,20 @@ class Props2JsTask extends DefaultTask { @TaskAction def run() { if (!propertiesFile) { - logger.warn('The syntax "inputs.file file(..)" is deprecated! Please use `propertiesFile = file("path/file.props")`') - logger.warn('This will be removed in the next version of the JS plugin') + logger.warn 'The syntax "inputs.file file(..)" is deprecated! Please use `propertiesFile = file("path/file.props")`' + logger.warn 'This will be removed in the next version of the JS plugin' propertiesFile = getInputs().files.files.toArray()[0] as File } if (!dest) { - logger.warn('The syntax "outputs.file file(..)" is deprecated! Please use `dest = file("dest/file.js")`') + logger.warn 'The syntax "outputs.file file(..)" is deprecated! Please use `dest = file("dest/file.js")`' dest = getOutputs().files.files.toArray()[0] as File } + if (!propertiesFile.exists()) { + throw new GradleException("${propertiesFile} does not exist!") + } + // Prevent arguments that don't make sense if (!AVAILABLE_TYPES.contains(type)) { throw new IllegalArgumentException("Invalid type specified. Must be one of: ${AVAILABLE_TYPES.join(',')}")