Commits

Meikel Brandmeyer committed 88da6b9

Move scriptoresque in dedicated project

Comments (0)

Files changed (9)

     }
 }
 
-project(':scriptoresque') {
-    apply {
-        plugin 'groovy'
-    }
-
-    dependencies {
-        compile gradleApi()
-        // Workaround for milestone4
-        compile fileTree(dir: "${gradle.gradleHomeDir}/lib/plugins", include: '**/*.jar')
-        compile project(':clojuresque')
-
-        groovy localGroovy()
-    }
-}
-
-project(':scriptoresque-runtime') {
-    apply {
-        plugin 'java'
-    }
-
-    dependencies {
-        compile project(':clojuresque-runtime')
-    }
-}
-
 subprojects {
     configurations {
         deployerJars

scriptoresque-runtime/src/main/resources/clojuresque/tasks/compile_cljs.clj

-(ns clojuresque.tasks.compile-cljs
-  (:use
-    [clojuresque.cli :only (deftask)])
-  (:require
-    [cljs.closure :as cljsc]))
-
-(deftask main
-  "Compile the clojurescript files in the named directory to the given output
-  directory. Use the specified optimization level."
-  [[input-dir     i "Input directory."]
-   [output-dir    d "Output directory."]
-   [output-file   o "Output file." "all.js"]
-   [optimizations O "Optimisation level. [none,simple,whitespace,advanced.]"]
-   [target        t "Target option. [none,nodejs]"]
-   [pretty?       p "Pipe compiler output through pretty printer."]]
-  (let [optimizations (and optimizations (keyword optimizations))
-        target        (and target (keyword target))
-        options       (merge {:output-to    output-file
-                              :output-dir   output-dir
-                              :pretty-print pretty}
-                             (when optimizations
-                               {:optimizations optimizations})
-                             (when target
-                               {:target target}))]
-    (cljsc/build input-dir options)))

scriptoresque/src/main/groovy/clojuresque/ClojureScriptCompileTask.groovy

-/*-
- * Copyright 2012 © Meikel Brandmeyer.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-package clojuresque
-
-import org.gradle.api.file.FileCollection
-import org.gradle.api.file.SourceDirectorySet
-import org.gradle.api.tasks.InputFiles
-import org.gradle.api.tasks.OutputFile
-import org.gradle.api.tasks.StopExecutionException
-import org.gradle.api.tasks.TaskAction
-
-import java.io.File
-import java.io.InputStream
-
-import groovy.lang.Closure
-
-public class ClojureScriptCompileTask extends ClojureScriptSourceTask {
-    def String optimisations = "advanced"
-    def String target = null
-    def boolean pretty = false
-
-    def File destinationDir
-    def File outputFile
-    def FileCollection classpath
-    def SourceDirectorySet clojureScriptRoots
-    def Closure jvmOptions = {}
-
-    @OutputFile
-    public File getOutputFile() {
-        return this.outputFile
-    }
-
-    @InputFiles
-    public FileCollection getClasspath() {
-        return this.classpath
-    }
-
-    @TaskAction
-    public void compile() {
-        if (destinationDir == null) {
-            throw new StopExecutionException("destinationDir not set!")
-        }
-        destinationDir.mkdirs()
-
-        List<String> options = [
-            "-i", clojureScriptRoots.srcDirs.iterator().next().path,
-            "-d", destinationDir.path,
-            "-o", outputFile.path,
-            "-O", optimisations,
-        ]
-
-        if (target != null) {
-            options.add("-t")
-            options.add(target)
-        }
-
-        if (pretty) {
-            options.add("-p")
-        }
-
-        project.clojureexec {
-            this.jvmOptions()
-            classpath = project.files(
-                this.clojureScriptRoots.srcDirs,
-                this.classpath
-            )
-            main = "clojuresque.tasks.compile-cljs/main"
-            args = options
-        }
-    }
-}

scriptoresque/src/main/groovy/clojuresque/ClojureScriptGzipTask.groovy

-/*-
- * Copyright 2012 © Meikel Brandmeyer.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-package clojuresque
-
-import org.gradle.api.tasks.InputFile
-import org.gradle.api.tasks.OutputFile
-import org.gradle.api.tasks.SourceTask
-import org.gradle.api.tasks.TaskAction
-
-import java.io.File
-
-public class ClojureScriptGzipTask extends SourceTask {
-    def File destinationDir
-    def String archiveName = null
-
-    @InputFile
-    File getInputFile() {
-        return source.singleFile
-    }
-
-    @OutputFile
-    File getArchivePath() {
-        String archive
-        if (archiveName != null)
-            archive = archiveName
-        else
-            archive = inputFile.name + ".gz"
-
-        return project.file("${destinationDir}/${archive}")
-    }
-
-    @TaskAction
-    void gzip() {
-        ant.gzip(src: inputFile.path, destfile: archivePath.path)
-    }
-}

scriptoresque/src/main/groovy/clojuresque/ClojureScriptPlugin.groovy

-/*-
- * Copyright 2012 © Meikel Brandmeyer.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-package clojuresque
-
-import org.gradle.api.Plugin
-import org.gradle.api.Project
-import org.gradle.api.internal.project.ProjectInternal
-
-public class ClojureScriptPlugin implements Plugin<Project> {
-    public void apply(Project project) {
-        project.apply plugin: ClojureBasePlugin.class
-
-        configureConfigurations(project)
-        configureSourceSets(project)
-        configureCompilation(project)
-        configureGzip(project)
-    }
-
-    private void configureConfigurations(Project project) {
-        project.dependencies {
-            clojuresque group: "clojuresque", name: "scriptoresque-runtime",
-                version: Util.properties.getProperty("clojuresque.version")
-        }
-    }
-
-    private void configureSourceSets(Project project) {
-        ProjectInternal projectInternal = (ProjectInternal)project
-
-        project.sourceSets.each { sourceSet ->
-            ClojureScriptSourceSet clojureScriptSourceSet =
-                new ClojureScriptSourceSet(sourceSet.name, projectInternal.fileResolver)
-
-            sourceSet.convention.plugins.clojureScript = clojureScriptSourceSet
-            sourceSet.clojureScript.srcDirs = [ String.format("src/%s/cljs", sourceSet.name) ]
-            sourceSet.resources.filter.exclude("**/*.cljs")
-            sourceSet.allSource.source(clojureScriptSourceSet.clojureScript)
-        }
-    }
-
-    private void configureCompilation(Project project) {
-        project.sourceSets.each { set ->
-            if (set.equals(project.sourceSets.test))
-                return
-            def File destDir = project.file(
-                String.format("%s/javascript/%s", project.buildDir.path, set.name))
-
-            String taskName = set.getCompileTaskName("clojureScript")
-            ClojureScriptCompileTask task = project.tasks.add(name: taskName,
-                    type: ClojureScriptCompileTask.class) {
-                destinationDir = destDir
-                outputFile = project.file("${destDir}/all.js")
-                source set.clojureScript
-                clojureScriptRoots = set.clojureScript
-                classpath = project.files(
-                    set.compileClasspath,
-                    set.clojure.srcDirs,
-                    project.configurations.development
-                )
-                description =
-                    String.format("Compile the %s ClojureScript source.",
-                            set.name)
-            }
-            project.tasks[set.classesTaskName].dependsOn task
-        }
-    }
-
-    private void configureGzip(Project project) {
-        project.sourceSets.each { set ->
-            if (set.equals(project.sourceSets.test))
-                return
-            def File destDir = project.file(
-                String.format("%s/javascript/%s", project.buildDir.path, set.name))
-
-            String compileTaskName = set.getCompileTaskName("clojureScript")
-            ClojureScriptCompileTask compileTask = project.tasks[compileTaskName]
-
-            String taskName = set.getTaskName("gzip", "clojureScript")
-            ClojureScriptGzipTask gzipTask = project.tasks.add(name: taskName,
-                    type: ClojureScriptGzipTask.class) {
-                destinationDir = destDir
-                source compileTask
-                description =
-                    String.format("Gzip the %s ClojureScript compilate.",
-                            set.name)
-            }
-        }
-    }
-}

scriptoresque/src/main/groovy/clojuresque/ClojureScriptSourceSet.groovy

-/*-
- * Copyright 2012 © Meikel Brandmeyer.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-package clojuresque
-
-import groovy.lang.Closure
-
-import org.gradle.api.file.FileTree
-import org.gradle.api.file.SourceDirectorySet
-import org.gradle.api.internal.file.UnionFileTree
-import org.gradle.api.internal.file.DefaultSourceDirectorySet
-import org.gradle.api.internal.file.FileResolver
-import org.gradle.api.tasks.util.PatternFilterable
-import org.gradle.api.tasks.util.PatternSet
-import org.gradle.util.ConfigureUtil
-
-class ClojureScriptSourceSet {
-    private final SourceDirectorySet clojureScript
-    private final UnionFileTree allClojureScript
-    private final PatternFilterable clojureScriptPatterns = new PatternSet()
-
-    public ClojureScriptSourceSet(String displayName, FileResolver fileResolver) {
-        clojureScript = new DefaultSourceDirectorySet(String.format("%s ClojureScript source", displayName), fileResolver)
-        clojureScript.filter.include("**/*.cljs")
-        clojureScriptPatterns.include("**/*.cljs")
-        allClojureScript = new UnionFileTree(String.format("%s ClojureScript source", displayName), clojureScript.matching(clojureScriptPatterns))
-    }
-
-    public SourceDirectorySet getClojureScript() {
-        return clojureScript
-    }
-
-    public ClojureScriptSourceSet clojureScript(Closure configureClosure) {
-        ConfigureUtil.configure(configureClosure, this.clojureScript)
-        return this
-    }
-
-    public PatternFilterable getClojureScriptSourcePatterns() {
-        return clojureScriptPatterns
-    }
-
-    public FileTree getAllClojureScript() {
-        return allClojureScript
-    }
-
-    public void clojureScriptIncludeNamespace(String pattern) {
-        clojureScript.include(
-            pattern.replaceAll("-", "_").replaceAll("\\.", "/") + ".cljs"
-        )
-    }
-
-    public void clojureScriptExcludeNamespace(String pattern) {
-        clojureScript.exclude(
-            pattern.replaceAll("-", "_").replaceAll("\\.", "/") + ".cljs"
-        )
-    }
-}

scriptoresque/src/main/groovy/clojuresque/ClojureScriptSourceTask.groovy

-/*-
- * Copyright 2012 © Meikel Brandmeyer.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-package clojuresque
-
-import org.gradle.api.tasks.SourceTask
-
-public class ClojureScriptSourceTask extends SourceTask {
-    /* Duplicate the functionality of ClojureScriptSourceSet. */
-    public ClojureScriptSourceTask includeNamespace(String pattern) {
-        include(pattern.replaceAll("-", "_").replaceAll("\\.", "/") + ".cljs")
-        return this
-    }
-
-    public ClojureScriptSourceTask excludeNamespace(String pattern) {
-        exclude(pattern.replaceAll("-", "_").replaceAll("\\.", "/") + ".cljs")
-        return this
-    }
-}

scriptoresque/src/main/resources/META-INF/gradle-plugins/clojurescript.properties

-implementation-class=clojuresque.ClojureScriptPlugin
 rootProject.name = 'root'
 include 'clojuresque'
 include 'clojuresque-runtime'
-include 'scriptoresque'
-include 'scriptoresque-runtime'