From aec2464b5805d2d827ea5500cd85c459952c9931 Mon Sep 17 00:00:00 2001 From: Eric Wendelin Date: Thu, 21 Jun 2012 12:07:12 -0600 Subject: [PATCH] Using Gradle built-ins to detect single-file inputs --- .../eriwen/gradle/js/ClosureCompilerExtension.groovy | 9 +++++---- .../groovy/com/eriwen/gradle/js/JsDocExtension.groovy | 4 +++- .../com/eriwen/gradle/js/Props2JsExtension.groovy | 6 ++++-- .../groovy/com/eriwen/gradle/js/ResourceUtil.groovy | 2 +- src/main/groovy/com/eriwen/gradle/js/RhinoExec.groovy | 10 +++++++--- .../com/eriwen/gradle/js/tasks/CombineJsTask.groovy | 3 +-- .../com/eriwen/gradle/js/tasks/GzipJsTask.groovy | 9 ++------- .../groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy | 2 +- .../com/eriwen/gradle/js/tasks/MinifyJsTask.groovy | 10 ++-------- 9 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/main/groovy/com/eriwen/gradle/js/ClosureCompilerExtension.groovy b/src/main/groovy/com/eriwen/gradle/js/ClosureCompilerExtension.groovy index 645bacf..6a4c044 100644 --- a/src/main/groovy/com/eriwen/gradle/js/ClosureCompilerExtension.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/ClosureCompilerExtension.groovy @@ -17,11 +17,12 @@ package com.eriwen.gradle.js import com.google.javascript.jscomp.CompilerOptions import org.gradle.api.file.FileCollection +import org.gradle.api.tasks.Input class ClosureCompilerExtension { public static final NAME = "closure" - CompilerOptions compilerOptions = new CompilerOptions() - String compilationLevel = 'SIMPLE_OPTIMIZATIONS' - String warningLevel = 'DEFAULT' - FileCollection externs = null + @Input CompilerOptions compilerOptions = new CompilerOptions() + @Input String compilationLevel = 'SIMPLE_OPTIMIZATIONS' + @Input String warningLevel = 'DEFAULT' + @Input FileCollection externs = null } diff --git a/src/main/groovy/com/eriwen/gradle/js/JsDocExtension.groovy b/src/main/groovy/com/eriwen/gradle/js/JsDocExtension.groovy index cc09044..e92b9ed 100644 --- a/src/main/groovy/com/eriwen/gradle/js/JsDocExtension.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/JsDocExtension.groovy @@ -15,8 +15,10 @@ */ package com.eriwen.gradle.js +import org.gradle.api.tasks.Input + class JsDocExtension { public static final String NAME = 'jsdoc' - Iterable options = [] + @Input Iterable options = [] } diff --git a/src/main/groovy/com/eriwen/gradle/js/Props2JsExtension.groovy b/src/main/groovy/com/eriwen/gradle/js/Props2JsExtension.groovy index 04d692a..93178ca 100644 --- a/src/main/groovy/com/eriwen/gradle/js/Props2JsExtension.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/Props2JsExtension.groovy @@ -15,9 +15,11 @@ */ package com.eriwen.gradle.js +import org.gradle.api.tasks.Input + class Props2JsExtension { public static final NAME = 'props' - String type = 'json' - String functionName = '' + @Input String type = 'json' + @Input String functionName = '' } diff --git a/src/main/groovy/com/eriwen/gradle/js/ResourceUtil.groovy b/src/main/groovy/com/eriwen/gradle/js/ResourceUtil.groovy index ebe602f..43d9ab9 100644 --- a/src/main/groovy/com/eriwen/gradle/js/ResourceUtil.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/ResourceUtil.groovy @@ -60,4 +60,4 @@ class ResourceUtil { return zipTargetDir } -} \ No newline at end of file +} diff --git a/src/main/groovy/com/eriwen/gradle/js/RhinoExec.groovy b/src/main/groovy/com/eriwen/gradle/js/RhinoExec.groovy index fd7466b..6e34684 100644 --- a/src/main/groovy/com/eriwen/gradle/js/RhinoExec.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/RhinoExec.groovy @@ -12,16 +12,20 @@ class RhinoExec { private static final String RHINO_MAIN_CLASS = 'org.mozilla.javascript.tools.shell.Main' Project project - void execute(final Iterable execargs, final String workingDirIn = '.', final Boolean ignoreExitCode = false) { - def options = { + void execute(final Iterable execargs, final Map options = [:]) { + final String workingDirIn = options.get('workingDir', '.') + final Boolean ignoreExitCode = options.get('ignoreExitCode', false).asBoolean() + final OutputStream out = options.get('out', System.out) as OutputStream + def execOptions = { main = RHINO_MAIN_CLASS classpath = project.configurations.rhino args = execargs workingDir = workingDirIn ignoreExitValue = ignoreExitCode + standardOutput = out } - project.javaexec(options) + project.javaexec(execOptions) } public RhinoExec(final Project projectIn) { 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 aebd19d..774c4fd 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/CombineJsTask.groovy @@ -20,8 +20,7 @@ import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.SourceTask class CombineJsTask extends SourceTask { - @OutputFile - File dest + @OutputFile File dest @TaskAction def run() { 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 679c1e7..03df8ae 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/GzipJsTask.groovy @@ -15,21 +15,16 @@ */ package com.eriwen.gradle.js.tasks -import org.gradle.api.GradleException import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.SourceTask import org.gradle.api.tasks.TaskAction class GzipJsTask extends SourceTask { - @OutputFile - File dest + @OutputFile File dest @TaskAction def run() { - if (source.files.size() != 1) { - throw new GradleException("Only 1 file can be minified. Please run MinifyJs for each file.") - } - final String srcPath = (source.files.toArray() as File[])[0].canonicalPath + final String srcPath = source.singleFile.canonicalPath ant.gzip(src: srcPath, destfile: "${srcPath}.gz") ant.move(file: "${srcPath}.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 184619d..820c916 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/JsDocTask.groovy @@ -51,6 +51,6 @@ class JsDocTask extends SourceTask { args.addAll(['-d', destinationDir.absolutePath]) args.addAll(project.jsdoc.options.collect { it }) - rhino.execute(args, workingDir) + rhino.execute(args, [workingDir: workingDir]) } } 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 1f75b29..4245171 100644 --- a/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy +++ b/src/main/groovy/com/eriwen/gradle/js/tasks/MinifyJsTask.groovy @@ -17,7 +17,6 @@ package com.eriwen.gradle.js.tasks import com.eriwen.gradle.js.JsMinifier -import org.gradle.api.GradleException import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.SourceTask import org.gradle.api.tasks.TaskAction @@ -25,17 +24,12 @@ import org.gradle.api.tasks.TaskAction class MinifyJsTask extends SourceTask { private static final JsMinifier MINIFIER = new JsMinifier() - @OutputFile - File dest + @OutputFile File dest @TaskAction def run() { - if (source.files.size() != 1) { - throw new GradleException("Only 1 file can be minified. Please run MinifyJs for each file.") - } - Set externsFiles = project.closure.externs ? project.closure.externs.files : [] as Set - MINIFIER.minifyJsFile((source.files.toArray() as File[])[0], externsFiles, dest, + MINIFIER.minifyJsFile(source.singleFile, externsFiles, dest, project.closure.compilerOptions, project.closure.warningLevel, project.closure.compilationLevel) } }