From d7ce81a7a64cd700077d06c95ce9771de2df1fbf Mon Sep 17 00:00:00 2001 From: hurricup Date: Sun, 30 Apr 2017 10:24:53 +0300 Subject: [PATCH] Removed global params --- README.md | 22 +++++--------- .../GrammarKitPluginExtension.groovy | 5 ---- .../grammarkit/tasks/BaseTask.groovy | 11 +------ .../grammarkit/tasks/GenerateLexer.groovy | 29 ++++++++----------- .../grammarkit/tasks/GenerateParser.groovy | 27 +++++++---------- 5 files changed, 32 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 1464448..2345c82 100644 --- a/README.md +++ b/README.md @@ -24,26 +24,14 @@ import org.jetbrains.grammarkit.tasks.* ``` ### Configuration -Plugin provides two-level configuration: global, using `grammarKit` extension and per-task configuration. Task-specific configuration has higher precedence. - -#### Global configuration options +Global configuration allows you to select necessary jFlex and Grammar-Kit versions. ```groovy grammarKit { // tag or short commit hash of IntelliJ patched JFlex (see links below), Default is 1.7.0 jflexRelease = '34fd65b92a' - // path to the custom skeleton file. If omitted, default IntelliJ skeleton file will be used - jflexSkeleton = '/some/custom/skeleton' - - // tag or short commit hash of Grammar-Kit to use (see links below). Default is 2017.1 ready version grammarKitRelease = '34fd65b92a' - - // Target root for GrammarKit-generated files, 'gen' by default - grammarKitTargetRoot = 'gen' - - // If this option is set, plugin will remove lexer, parser and psi directory before generation. Default: false - purgeOldFiles = true } ``` @@ -62,6 +50,9 @@ task generatePerlLexer(type: GenerateLexer) { // optional, path to the task-specific skeleton file. Default: none skeleton = '/some/specific/skeleton' + + // if set, plugin will remove a lexer output file before generating new one. Default: false + purgeOldFiles = true } ``` @@ -74,11 +65,14 @@ task generatePerl5Parser(type: GenerateParser) { // optional, task-specific root for the generated files. Default: none targetRoot = 'gen' - // path to a parser file, relative to the local targetRoot or global grammarKitTargetRoot + // path to a parser file, relative to the targetRoot pathToParser = '/com/perl5/lang/perl/parser/PerlParserGenerated.java' // path to a directory with generated psi files, relative to the targetRoot pathToPsiRoot = '/com/perl5/lang/perl/psi' + + // if set, plugin will remove a parser output file and psi output directory before generating new ones. Default: false + purgeOldFiles = true } ``` diff --git a/src/main/groovy/org/jetbrains/grammarkit/GrammarKitPluginExtension.groovy b/src/main/groovy/org/jetbrains/grammarkit/GrammarKitPluginExtension.groovy index 9f29fbe..1c82c4c 100644 --- a/src/main/groovy/org/jetbrains/grammarkit/GrammarKitPluginExtension.groovy +++ b/src/main/groovy/org/jetbrains/grammarkit/GrammarKitPluginExtension.groovy @@ -2,11 +2,6 @@ package org.jetbrains.grammarkit class GrammarKitPluginExtension { def grammarKitRelease = '34fd65b92a' - def grammarKitTargetRoot = 'gen' - def jflexRelease = '1.7.0' - def jflexSkeleton - - def purgeOldFiles = false } diff --git a/src/main/groovy/org/jetbrains/grammarkit/tasks/BaseTask.groovy b/src/main/groovy/org/jetbrains/grammarkit/tasks/BaseTask.groovy index e780f73..8c69d3d 100644 --- a/src/main/groovy/org/jetbrains/grammarkit/tasks/BaseTask.groovy +++ b/src/main/groovy/org/jetbrains/grammarkit/tasks/BaseTask.groovy @@ -1,7 +1,6 @@ package org.jetbrains.grammarkit.tasks import org.gradle.api.tasks.JavaExec -import org.jetbrains.grammarkit.GrammarKitPluginExtension /** * Created by hurricup on 05.04.2017. @@ -9,16 +8,8 @@ import org.jetbrains.grammarkit.GrammarKitPluginExtension abstract class BaseTask extends JavaExec { def purgeOldFiles = false - protected GrammarKitPluginExtension getExtension() { - return project.extensions.findByType(GrammarKitPluginExtension) - } - - protected boolean shouldPurge() { - return purgeOldFiles || getExtension().purgeOldFiles; - } - protected void purgeFiles(File... files) { - if (shouldPurge()) { + if (purgeOldFiles) { doFirst { project.delete(files) } diff --git a/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateLexer.groovy b/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateLexer.groovy index 2e4d7ce..665eb92 100644 --- a/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateLexer.groovy +++ b/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateLexer.groovy @@ -1,14 +1,17 @@ package org.jetbrains.grammarkit.tasks import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Optional class GenerateLexer extends BaseTask { - @Input def targetDir - @Input def targetClass - @Input def source - @Input @Optional def skeleton + @Input + def targetDir + @Input + def targetClass + @Input + def source + @Input + def skeleton GenerateLexer() { project.afterEvaluate({ @@ -19,11 +22,11 @@ class GenerateLexer extends BaseTask { outputs.file targetFile def newArgs = [] - def effectiveSkeleton = getEffectiveSkeleton() - if (effectiveSkeleton != null) { + if (skeleton != null) { + def skeletonFile = project.file(skeleton) newArgs.add("--skel") - newArgs.add(effectiveSkeleton) - inputs.file effectiveSkeleton + newArgs.add(skeletonFile) + inputs.file skeletonFile } newArgs.add("-d") newArgs.add(project.file(targetDir)) @@ -35,12 +38,4 @@ class GenerateLexer extends BaseTask { purgeFiles(targetFile) }) } - - File getEffectiveSkeleton() { - if (skeleton != null) { - return project.file(skeleton); - } - def ext = getExtension() - return ext.jflexSkeleton == null ? null : project.file(ext.jflexSkeleton) - } } diff --git a/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateParser.groovy b/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateParser.groovy index 4db9183..93f9eac 100644 --- a/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateParser.groovy +++ b/src/main/groovy/org/jetbrains/grammarkit/tasks/GenerateParser.groovy @@ -1,39 +1,34 @@ package org.jetbrains.grammarkit.tasks import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Optional class GenerateParser extends BaseTask { - @Input def source - @Input @Optional def targetRoot + @Input + def source + @Input + def targetRoot // would be nice to obtain these from the GC - @Input def pathToParser - @Input def pathToPsiRoot + @Input + def pathToParser + @Input + def pathToPsiRoot GenerateParser() { setMain("org.intellij.grammar.Main"); project.afterEvaluate { def bnfFile = project.file(source) inputs.file bnfFile - def effectiveTargetRoot = getEffectiveTargetRoot() - def parserFile = project.file("$effectiveTargetRoot$pathToParser") + def parserFile = project.file("$targetRoot$pathToParser") outputs.file parserFile - def psiDir = project.file("$effectiveTargetRoot$pathToPsiRoot") + def psiDir = project.file("$targetRoot$pathToPsiRoot") outputs.dir psiDir - args = [project.file(effectiveTargetRoot), bnfFile] + args = [project.file(targetRoot), bnfFile] classpath project.configurations.compile + project.configurations.compileOnly purgeFiles(parserFile, psiDir) } } - - String getEffectiveTargetRoot() { - if (targetRoot != null) { - return targetRoot; - } - return getExtension().grammarKitTargetRoot; - } }