diff --git a/README.md b/README.md index 7bc94a3e6cfbea1a4c68e031497d00706a55d27f..7cf427edf0186fcbf21b046f1d1fee9bf318cf2e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Usage: |---|---|---|---| | `repo_name` | `"test_repo"` | Name used in the URL of the project | Initialize `project_url`, `repo_url`, Generated project directory, last part of the Java package, prefix of version file, name of the published artifact | | `project_name` | `"My New Relational RAG Project"` | (Long) name of the project | Title in README, pages | -| `project_short_name` | `"NewRelAST"` | (Short) name of the project | Name of the grammar, partly name of the test | +| `grammar_name` | `"MyNewRelationalRAGProject"` | Name of the grammar (initialized from project name) | Name of the grammar, partly name of the test | | `namespace` | `"jastadd"` | Namespace of the gitlab repository | Namespace used in the URL of the project | | `project_url` | `"git@git-st.inf.tu-dresden.de:{{cookiecutter.namespace}}/{{cookiecutter.repo_name}}.git"` | (pre-computed) URL to clone the project using SSH | Setting git `origin` remote | | `repo_url` | `"https://git-st.inf.tu-dresden.de/{{cookiecutter.namespace}}/{{cookiecutter.repo_name}}"` | (pre-computed) URL of the project | Back-link to repository in pages | diff --git a/cookiecutter.json b/cookiecutter.json index 0978cf1cd3a6d053330ae8b0add19aa8ab541448..fbb8138558370c83d28e01f6e0b709bd34e9d299 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -2,7 +2,7 @@ "README of": "Cookiecutter template for relational RAG projects]\nPlease refer to <https://git-st.inf.tu-dresden.de/jastadd/project-templates/relast> for information on the parameters to follow\n[Continue with Enter", "repo_name": "test_repo", "project_name": "My New Relational RAG Project", - "project_short_name": "NewRelAST", + "grammar_name": "{{ cookiecutter.project_name.replace(' ', '') }}", "namespace": "jastadd", "project_url": "git@git-st.inf.tu-dresden.de:{{cookiecutter.namespace}}/{{cookiecutter.repo_name}}.git", "repo_url": "https://git-st.inf.tu-dresden.de/{{cookiecutter.namespace}}/{{cookiecutter.repo_name}}", diff --git a/hooks/pre_gen_project.py b/hooks/pre_gen_project.py index faafdaf2b0f18bbaac06f6bb239257b4dc42076c..e17e66cdc573b9667a2a99e5a6242b31e5bbb57a 100644 --- a/hooks/pre_gen_project.py +++ b/hooks/pre_gen_project.py @@ -1,11 +1,19 @@ +import re import sys -project_short_name = '{{cookiecutter.project_short_name}}' +MODULE_REGEX = r'^[_a-zA-Z][_a-zA-Z0-9]+$' + +repo_name = '{{cookiecutter.repo_name}}' +grammar_name = '{{cookiecutter.grammar_name}}' def main(): - if not project_short_name.isalnum(): - print('project_short_name "' + project_short_name + '" must be a single word. Exiting.') + if not re.match(MODULE_REGEX, repo_name): + print('Error: repo_name "%s" is not a valid URL and Java package name' % repo_name) + sys.exit(1) + + if not grammar_name.isalnum(): + print('Error: grammar_name "%s" must be a single word. Exiting.' % grammar_name) sys.exit(1) diff --git a/{{cookiecutter.repo_name}}/.gitlab-ci.yml b/{{cookiecutter.repo_name}}/.gitlab-ci.yml index 0290ed4790bfd5f67d04da3178f12f8e735a63a5..d23211f1714b371ab001f7e3d3599db165067701 100644 --- a/{{cookiecutter.repo_name}}/.gitlab-ci.yml +++ b/{{cookiecutter.repo_name}}/.gitlab-ci.yml @@ -37,7 +37,7 @@ diagram: - "./gradlew generateGrammarDiagrams" artifacts: paths: - - "src/gen/resources/{{cookiecutter.project_short_name}}Grammar.png" + - "src/gen/resources/{{cookiecutter.grammar_name}}Grammar.png" ragdoc_build: image: "git-st.inf.tu-dresden.de:4567/jastadd/ragdoc-builder" @@ -80,7 +80,7 @@ pages: - pip install -r pages/requirements.txt script: - mkdir pages/docs/diagrams - - cp src/gen/resources/{{cookiecutter.project_short_name}}Grammar.png pages/docs/diagrams/ + - cp src/gen/resources/{{cookiecutter.grammar_name}}Grammar.png pages/docs/diagrams/ - cd pages && mkdocs build artifacts: paths: diff --git a/{{cookiecutter.repo_name}}/build.gradle b/{{cookiecutter.repo_name}}/build.gradle index 5be04cbb083f3028d3f1045abe2d6a27527d091e..a78380cddf43b7db8e46e57c2eea3331d189b70e 100644 --- a/{{cookiecutter.repo_name}}/build.gradle +++ b/{{cookiecutter.repo_name}}/build.gradle @@ -28,19 +28,22 @@ dependencies { // implementation group: 'de.tudresden.inf.st', name: 'dumpAst', version: "${dumpAst_version}" grammar2uml group: 'de.tudresden.inf.st', name: 'grammar2uml', version: "${grammar2uml_version}" relast group: 'org.jastadd', name: 'relast', version: "${relast_version}" + jastadd2 group: 'org.jastadd', name: 'jastadd2', version: "${jastadd_version}" + testImplementation group: 'org.assertj', name: 'assertj-core', version: "${assertj_version}" testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "${jupyter_version}" testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${jupyter_version}" } // --- Preprocessors --- -File genSrc = file("src/gen/java") +def genJastaddDir = './src/gen/jastadd' +File genSrc = file("${genJastaddDir}") idea.module.generatedSourceDirs += genSrc sourceSets.main.java.srcDir genSrc -def relastFiles = ['./src/main/jastadd/{{cookiecutter.project_short_name}}.relast'] -def grammarPrefix = './src/gen/jastadd/{{cookiecutter.project_short_name}}' -def grammarDiagramFile = './src/gen/resources/{{cookiecutter.project_short_name}}Grammar.png' +def relastFiles = ['./src/main/jastadd/{{cookiecutter.grammar_name}}.relast'] +def grammarPrefix = "${genJastaddDir}/{{cookiecutter.grammar_name}}" +def grammarDiagramFile = './src/gen/resources/{{cookiecutter.grammar_name}}Grammar.png' def jastAddListName = 'JastAddList' task generateGrammarDiagrams(type: JavaExec) { @@ -64,7 +67,7 @@ task relastToJastAdd(type: JavaExec) { mainClass = 'org.jastadd.relast.compiler.Compiler' doFirst { - mkdir "src/gen/jastadd/" + mkdir "${genJastaddDir}" } args "--grammarName=${grammarPrefix}", @@ -84,13 +87,6 @@ jastadd { modules { //noinspection GroovyAssignabilityCheck module('relast-module') { - - java { - basedir 'src/' - include 'main/**/*.java' - include 'gen/**/*.java' - } - jastadd { basedir 'src/' include 'main/jastadd/**/*.ast' @@ -119,7 +115,7 @@ jastadd { } // TODO uncomment of parser is used - // parser.name = '{{cookiecutter.project_short_name}}Parser' + // parser.name = '{{cookiecutter.grammar_name}}Parser' // scanner.genDir = 'src/gen/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/scanner' // parser.genDir = 'src/gen/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/parser' @@ -148,7 +144,7 @@ ext { } jar.manifest { - attributes 'Main-Class': '${mainClassName}' + attributes 'Main-Class': "${mainClassName}" } task fatJar(type: Jar) { diff --git a/{{cookiecutter.repo_name}}/pages/docs/index.md b/{{cookiecutter.repo_name}}/pages/docs/index.md index 824fea10df7e85bc420d61d21c32e3cd116aedbe..a3c1d9ec45e2556784ba0d2a51355f595fe35925 100644 --- a/{{cookiecutter.repo_name}}/pages/docs/index.md +++ b/{{cookiecutter.repo_name}}/pages/docs/index.md @@ -4,5 +4,5 @@ ## The Grammar - + diff --git a/{{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.project_short_name}}.relast b/{{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.grammar_name}}.relast similarity index 69% rename from {{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.project_short_name}}.relast rename to {{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.grammar_name}}.relast index 659992af8a6cd785a0b76b143bb13e6be5e9b70c..d46a5f14fd8aaf6bc8dab9b56b73199c76eee68e 100644 --- a/{{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.project_short_name}}.relast +++ b/{{cookiecutter.repo_name}}/src/main/jastadd/{{cookiecutter.grammar_name}}.relast @@ -1,4 +1,4 @@ -// Grammar for {{cookiecutter.project_short_name}} +// Grammar for {{cookiecutter.grammar_name}} // TODO replace with own grammar Root ::= A B* [myC:C]; diff --git a/{{cookiecutter.repo_name}}/src/main/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/Main.java b/{{cookiecutter.repo_name}}/src/main/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/Main.java index fdce0c056b74fd23cb57eb9e3b9c23e5458de746..da76b962d72bb773a4ce5c7b60a8fc9beecb4f40 100644 --- a/{{cookiecutter.repo_name}}/src/main/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/Main.java +++ b/{{cookiecutter.repo_name}}/src/main/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/Main.java @@ -6,7 +6,7 @@ public class Main { public static void main(String[] args) { // TODO put code here - System.out.println("Running {{cookiecutter.project_short_name}}"); + System.out.println("Running {{cookiecutter.project_name}}"); } } diff --git a/{{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.project_short_name}}Test.java b/{{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.grammar_name}}Test.java similarity index 83% rename from {{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.project_short_name}}Test.java rename to {{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.grammar_name}}Test.java index 590a0bc416f21bbda34756376e6639ece8803a70..6c83b0fac1e13d96c12d93d6c949914f46f89103 100644 --- a/{{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.project_short_name}}Test.java +++ b/{{cookiecutter.repo_name}}/src/test/java/de/tudresden/inf/st/{{cookiecutter.repo_name}}/{{cookiecutter.grammar_name}}Test.java @@ -5,7 +5,7 @@ import de.tudresden.inf.st.{{cookiecutter.repo_name}}.ast.*; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -public class {{cookiecutter.project_short_name}}Test { +public class {{cookiecutter.grammar_name}}Test { @Test void test() {