From 922633f241452743ef3ea5238a9f488122519c9a Mon Sep 17 00:00:00 2001 From: Mark Perry Date: Tue, 17 Feb 2015 00:03:09 +1000 Subject: Compile project if frege source dir is missing --- src/main/groovy/org/gradle/frege/FregeTask.groovy | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/main/groovy') diff --git a/src/main/groovy/org/gradle/frege/FregeTask.groovy b/src/main/groovy/org/gradle/frege/FregeTask.groovy index df4f7d6..bed9e2e 100644 --- a/src/main/groovy/org/gradle/frege/FregeTask.groovy +++ b/src/main/groovy/org/gradle/frege/FregeTask.groovy @@ -37,17 +37,13 @@ class FregeTask extends DefaultTask { String module = "" @Optional @InputDirectory - File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR) + File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR).exists() ? new File(project.projectDir, DEFAULT_SRC_DIR) : null @Optional @OutputDirectory File outputDir = new File(project.buildDir, DEFAULT_CLASSES_SUBDIR) @TaskAction void executeCompile() { - - if (! sourceDir.exists() ) { - throw new StopActionException("Source directory '${sourceDir.absolutePath}' does not exist. Cannot compile Frege code.") - } if (! outputDir.exists() ) { logger.info "Creating output directory '${outputDir.absolutePath}'." outputDir.mkdirs() @@ -80,15 +76,20 @@ class FregeTask extends DefaultTask { if (skipCompile) args << "-j" - args << "-sp" - args << sourceDir.absolutePath + if (sourceDir != null) { + args << "-sp" + args << sourceDir.absolutePath + } args << "-d" args << outputDir if (!module && !extraArgs) { logger.info "no module and no extra args given: compiling all of the sourceDir" - args << sourceDir.absolutePath + if (sourceDir != null) { + args << sourceDir.absolutePath + } + } else if (module) { logger.info "compiling module '$module'" args << module -- cgit From 3f37467241fa20e1789569050d39bbda21093757 Mon Sep 17 00:00:00 2001 From: Mark Perry Date: Tue, 17 Feb 2015 00:36:45 +1000 Subject: Changed package name to frege.gradle to match frege compiler package names --- src/main/groovy/frege/gradle/FregePlugin.groovy | 18 ++++ .../frege/gradle/FregePluginExtension.groovy | 11 +++ src/main/groovy/frege/gradle/FregeTask.groovy | 101 +++++++++++++++++++++ .../groovy/org/gradle/frege/FregePlugin.groovy | 18 ---- .../org/gradle/frege/FregePluginExtension.groovy | 11 --- src/main/groovy/org/gradle/frege/FregeTask.groovy | 101 --------------------- .../META-INF/gradle-plugins/frege.properties | 2 +- 7 files changed, 131 insertions(+), 131 deletions(-) create mode 100644 src/main/groovy/frege/gradle/FregePlugin.groovy create mode 100644 src/main/groovy/frege/gradle/FregePluginExtension.groovy create mode 100644 src/main/groovy/frege/gradle/FregeTask.groovy delete mode 100644 src/main/groovy/org/gradle/frege/FregePlugin.groovy delete mode 100644 src/main/groovy/org/gradle/frege/FregePluginExtension.groovy delete mode 100644 src/main/groovy/org/gradle/frege/FregeTask.groovy (limited to 'src/main/groovy') diff --git a/src/main/groovy/frege/gradle/FregePlugin.groovy b/src/main/groovy/frege/gradle/FregePlugin.groovy new file mode 100644 index 0000000..b509651 --- /dev/null +++ b/src/main/groovy/frege/gradle/FregePlugin.groovy @@ -0,0 +1,18 @@ +package frege.gradle + +import org.gradle.api.Plugin +import org.gradle.api.Project + +class FregePlugin implements Plugin { + + void apply(Project project) { + project.apply(plugin: 'base') + def e = (FregePluginExtension) project.extensions.create("frege", FregePluginExtension) + + project.task('compileFrege', type: FregeTask, group: 'Build') << { + + } + project.tasks.classes.dependsOn("compileFrege") + } + +} diff --git a/src/main/groovy/frege/gradle/FregePluginExtension.groovy b/src/main/groovy/frege/gradle/FregePluginExtension.groovy new file mode 100644 index 0000000..dbf0d2a --- /dev/null +++ b/src/main/groovy/frege/gradle/FregePluginExtension.groovy @@ -0,0 +1,11 @@ +package frege.gradle + +/** + * Created by mperry on 6/02/2015. + */ +class FregePluginExtension { + + + String key1 + +} diff --git a/src/main/groovy/frege/gradle/FregeTask.groovy b/src/main/groovy/frege/gradle/FregeTask.groovy new file mode 100644 index 0000000..fc3152d --- /dev/null +++ b/src/main/groovy/frege/gradle/FregeTask.groovy @@ -0,0 +1,101 @@ +package frege.gradle + +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.* +import org.gradle.process.internal.DefaultJavaExecAction +import org.gradle.process.internal.JavaExecAction +import org.gradle.api.internal.file.FileResolver +import org.gradle.tooling.BuildException + +class FregeTask extends DefaultTask { + + static String DEFAULT_CLASSES_SUBDIR = "classes/main" // TODO: should this come from a convention? + static String DEFAULT_SRC_DIR = "src/main/frege" // TODO: should this come from a source set? + + @Optional @Input + boolean hints = false + + @Optional @Input + boolean verbose = false + + @Optional @Input + boolean inline = true + + @Optional @Input + boolean make = true + + @Optional @Input + boolean skipCompile = false + + @Optional @Input + String extraArgs = "" + + @Optional @Input + String allArgs = "" // this is an option to overrule all other settings + + @Optional @Input + String module = "" + + @Optional @InputDirectory + File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR).exists() ? new File(project.projectDir, DEFAULT_SRC_DIR) : null + + @Optional @OutputDirectory + File outputDir = new File(project.buildDir, DEFAULT_CLASSES_SUBDIR) + + @TaskAction + void executeCompile() { + if (! outputDir.exists() ) { + logger.info "Creating output directory '${outputDir.absolutePath}'." + outputDir.mkdirs() + } + + // access extension configuration values as ${project.frege.key1} + + FileResolver fileResolver = getServices().get(FileResolver.class) + JavaExecAction action = new DefaultJavaExecAction(fileResolver) + action.setMain("frege.compiler.Main") + action.setClasspath(project.files(project.configurations.compile)) + + def args = allArgs ? allArgs.split().toList() : assembleArguments() + + logger.info("Calling Frege compiler with args: '$args'") + action.args(args) + action.execute() + } + + protected List assembleArguments() { + List args = [] + if (hints) + args << "-hints" + if (inline) + args << "-inline" + if (make) + args << "-make" + if (verbose) + args << "-v" + if (skipCompile) + args << "-j" + + if (sourceDir != null) { + args << "-sp" + args << sourceDir.absolutePath + } + + args << "-d" + args << outputDir + + if (!module && !extraArgs) { + logger.info "no module and no extra args given: compiling all of the sourceDir" + if (sourceDir != null) { + args << sourceDir.absolutePath + } + + } else if (module) { + logger.info "compiling module '$module'" + args << module + } else { + args = args + extraArgs.split().toList() + } + args + } +} \ No newline at end of file diff --git a/src/main/groovy/org/gradle/frege/FregePlugin.groovy b/src/main/groovy/org/gradle/frege/FregePlugin.groovy deleted file mode 100644 index a401eb7..0000000 --- a/src/main/groovy/org/gradle/frege/FregePlugin.groovy +++ /dev/null @@ -1,18 +0,0 @@ -package org.gradle.frege - -import org.gradle.api.Plugin -import org.gradle.api.Project - -class FregePlugin implements Plugin { - - void apply(Project project) { - project.apply(plugin: 'base') - def e = (FregePluginExtension) project.extensions.create("frege", FregePluginExtension) - - project.task('compileFrege', type: FregeTask, group: 'Build') << { - - } - project.tasks.classes.dependsOn("compileFrege") - } - -} diff --git a/src/main/groovy/org/gradle/frege/FregePluginExtension.groovy b/src/main/groovy/org/gradle/frege/FregePluginExtension.groovy deleted file mode 100644 index db81a41..0000000 --- a/src/main/groovy/org/gradle/frege/FregePluginExtension.groovy +++ /dev/null @@ -1,11 +0,0 @@ -package org.gradle.frege - -/** - * Created by mperry on 6/02/2015. - */ -class FregePluginExtension { - - - String key1 - -} diff --git a/src/main/groovy/org/gradle/frege/FregeTask.groovy b/src/main/groovy/org/gradle/frege/FregeTask.groovy deleted file mode 100644 index bed9e2e..0000000 --- a/src/main/groovy/org/gradle/frege/FregeTask.groovy +++ /dev/null @@ -1,101 +0,0 @@ -package org.gradle.frege - -import org.gradle.api.DefaultTask -import org.gradle.api.tasks.* -import org.gradle.process.internal.DefaultJavaExecAction -import org.gradle.process.internal.JavaExecAction -import org.gradle.api.internal.file.FileResolver -import org.gradle.tooling.BuildException - -class FregeTask extends DefaultTask { - - static String DEFAULT_CLASSES_SUBDIR = "classes/main" // TODO: should this come from a convention? - static String DEFAULT_SRC_DIR = "src/main/frege" // TODO: should this come from a source set? - - @Optional @Input - boolean hints = false - - @Optional @Input - boolean verbose = false - - @Optional @Input - boolean inline = true - - @Optional @Input - boolean make = true - - @Optional @Input - boolean skipCompile = false - - @Optional @Input - String extraArgs = "" - - @Optional @Input - String allArgs = "" // this is an option to overrule all other settings - - @Optional @Input - String module = "" - - @Optional @InputDirectory - File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR).exists() ? new File(project.projectDir, DEFAULT_SRC_DIR) : null - - @Optional @OutputDirectory - File outputDir = new File(project.buildDir, DEFAULT_CLASSES_SUBDIR) - - @TaskAction - void executeCompile() { - if (! outputDir.exists() ) { - logger.info "Creating output directory '${outputDir.absolutePath}'." - outputDir.mkdirs() - } - - // access extension configuration values as ${project.frege.key1} - - FileResolver fileResolver = getServices().get(FileResolver.class) - JavaExecAction action = new DefaultJavaExecAction(fileResolver) - action.setMain("frege.compiler.Main") - action.setClasspath(project.files(project.configurations.compile)) - - def args = allArgs ? allArgs.split().toList() : assembleArguments() - - logger.info("Calling Frege compiler with args: '$args'") - action.args(args) - action.execute() - } - - protected List assembleArguments() { - List args = [] - if (hints) - args << "-hints" - if (inline) - args << "-inline" - if (make) - args << "-make" - if (verbose) - args << "-v" - if (skipCompile) - args << "-j" - - if (sourceDir != null) { - args << "-sp" - args << sourceDir.absolutePath - } - - args << "-d" - args << outputDir - - if (!module && !extraArgs) { - logger.info "no module and no extra args given: compiling all of the sourceDir" - if (sourceDir != null) { - args << sourceDir.absolutePath - } - - } else if (module) { - logger.info "compiling module '$module'" - args << module - } else { - args = args + extraArgs.split().toList() - } - args - } -} \ No newline at end of file diff --git a/src/main/resources/META-INF/gradle-plugins/frege.properties b/src/main/resources/META-INF/gradle-plugins/frege.properties index cc3210c..25a44ac 100644 --- a/src/main/resources/META-INF/gradle-plugins/frege.properties +++ b/src/main/resources/META-INF/gradle-plugins/frege.properties @@ -1 +1 @@ -implementation-class=org.gradle.frege.FregePlugin +implementation-class=frege.gradle.FregePlugin -- cgit From 30d26acee36fa71b72651746a3eb25a18f825d4f Mon Sep 17 00:00:00 2001 From: Mark Perry Date: Tue, 17 Feb 2015 23:26:59 +1000 Subject: Added repl task named fregeRepl --- build.gradle | 2 ++ src/main/groovy/frege/gradle/FregePlugin.groovy | 2 ++ src/main/groovy/frege/gradle/ReplTask.groovy | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 src/main/groovy/frege/gradle/ReplTask.groovy (limited to 'src/main/groovy') diff --git a/build.gradle b/build.gradle index 1ff2833..81b0c99 100644 --- a/build.gradle +++ b/build.gradle @@ -18,6 +18,7 @@ apply from: "gradle/sonatype.gradle" repositories { mavenCentral() + mavenLocal() } version = pluginVersion @@ -25,6 +26,7 @@ group = groupName dependencies { compile "com.theoryinpractise.frege:frege:$fregeVersion$fregeClassifier" + compile "frege:frege-repl-core:1.1.1-SNAPSHOT" compile gradleApi() compile localGroovy() } diff --git a/src/main/groovy/frege/gradle/FregePlugin.groovy b/src/main/groovy/frege/gradle/FregePlugin.groovy index b509651..5435886 100644 --- a/src/main/groovy/frege/gradle/FregePlugin.groovy +++ b/src/main/groovy/frege/gradle/FregePlugin.groovy @@ -13,6 +13,8 @@ class FregePlugin implements Plugin { } project.tasks.classes.dependsOn("compileFrege") + + project.task('fregeRepl', type: ReplTask) } } diff --git a/src/main/groovy/frege/gradle/ReplTask.groovy b/src/main/groovy/frege/gradle/ReplTask.groovy new file mode 100644 index 0000000..3a44fa4 --- /dev/null +++ b/src/main/groovy/frege/gradle/ReplTask.groovy @@ -0,0 +1,16 @@ +package frege.gradle + +import frege.repl.* +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction + +/** + * Created by MarkPerry on 17/02/2015. + */ +public class ReplTask extends DefaultTask { + + @TaskAction + void repl() { + frege.repl.FregeRepl.main(null) + } +} -- cgit From 45e60eb078f15076878cc5dd6b160cc006109180 Mon Sep 17 00:00:00 2001 From: Mark Perry Date: Tue, 17 Feb 2015 23:33:28 +1000 Subject: Pass empty array to frege repl --- src/main/groovy/frege/gradle/ReplTask.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/groovy') diff --git a/src/main/groovy/frege/gradle/ReplTask.groovy b/src/main/groovy/frege/gradle/ReplTask.groovy index 3a44fa4..eb47944 100644 --- a/src/main/groovy/frege/gradle/ReplTask.groovy +++ b/src/main/groovy/frege/gradle/ReplTask.groovy @@ -11,6 +11,6 @@ public class ReplTask extends DefaultTask { @TaskAction void repl() { - frege.repl.FregeRepl.main(null) + frege.repl.FregeRepl.main([] as String[]) } } -- cgit From ab0e4dc9c475b8248fb41394c3e5c4a205d93eb0 Mon Sep 17 00:00:00 2001 From: Mark Perry Date: Wed, 18 Feb 2015 01:40:40 +1000 Subject: Added native code generation tool task --- build.gradle | 1 + src/main/groovy/frege/gradle/FregePlugin.groovy | 2 ++ src/main/groovy/frege/gradle/NativeGenTask.groovy | 25 +++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 src/main/groovy/frege/gradle/NativeGenTask.groovy (limited to 'src/main/groovy') diff --git a/build.gradle b/build.gradle index 81b0c99..b7f1463 100644 --- a/build.gradle +++ b/build.gradle @@ -27,6 +27,7 @@ group = groupName dependencies { compile "com.theoryinpractise.frege:frege:$fregeVersion$fregeClassifier" compile "frege:frege-repl-core:1.1.1-SNAPSHOT" + compile "frege:native-gen:1.0-SNAPSHOT" compile gradleApi() compile localGroovy() } diff --git a/src/main/groovy/frege/gradle/FregePlugin.groovy b/src/main/groovy/frege/gradle/FregePlugin.groovy index 5435886..e120faf 100644 --- a/src/main/groovy/frege/gradle/FregePlugin.groovy +++ b/src/main/groovy/frege/gradle/FregePlugin.groovy @@ -15,6 +15,8 @@ class FregePlugin implements Plugin { project.tasks.classes.dependsOn("compileFrege") project.task('fregeRepl', type: ReplTask) + project.task('fregeNativeGen', type: NativeGenTask) + } } diff --git a/src/main/groovy/frege/gradle/NativeGenTask.groovy b/src/main/groovy/frege/gradle/NativeGenTask.groovy new file mode 100644 index 0000000..6c8acc4 --- /dev/null +++ b/src/main/groovy/frege/gradle/NativeGenTask.groovy @@ -0,0 +1,25 @@ +package frege.gradle + +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction + +import frege.nativegen.* + +/** + * Created by MarkPerry on 18/02/2015. + */ +class NativeGenTask extends DefaultTask { + + String filename = "types.properties" + + String clazz = null + + + @TaskAction + void gen() { + + frege.nativegen.Main.main([clazz] as String[]) + } + + +} -- cgit