Skip to content
Snippets Groups Projects
Commit fccc53ec authored by René Schöne's avatar René Schöne
Browse files

change project-short-name to grammar-name plus minor changes

- add pre-hook to check validity of repo-name
- fix minor errors in build.gradle, add variable for genDir
parent 2c97f291
Branches
No related tags found
1 merge request!3Resolve "repo_name must not contain hyphens or other illegal characters and project_short_name is missleading"
......@@ -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 |
......
......@@ -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}}",
......
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)
......
......@@ -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 genDir = './src/gen/jastadd'
File genSrc = file("${genDir}")
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 = "${genDir}/{{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 "${genDir}"
}
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) {
......
......@@ -4,5 +4,5 @@
## The Grammar
![](diagrams/{{cookiecutter.project_short_name}}Grammar.png)
![](diagrams/{{cookiecutter.grammar_name}}Grammar.png)
// Grammar for {{cookiecutter.project_short_name}}
// Grammar for {{cookiecutter.grammar_name}}
// TODO replace with own grammar
Root ::= A B* [myC:C];
......
......@@ -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}}");
}
}
......@@ -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() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment