diff options
author | 2022-02-04 20:18:20 +0100 | |
---|---|---|
committer | 2022-02-04 20:18:20 +0100 | |
commit | 42db1e8b4dcff3667c5f14e8dd464309c3c2f23e (patch) | |
tree | f5f5efe86fb352980cf144cceb68d1a1101b274f /language-web/build.gradle | |
parent | chore(web): fix Sonar issue (diff) | |
parent | chore(frontend): bump frontend dependencies (diff) | |
download | refinery-42db1e8b4dcff3667c5f14e8dd464309c3c2f23e.tar.gz refinery-42db1e8b4dcff3667c5f14e8dd464309c3c2f23e.tar.zst refinery-42db1e8b4dcff3667c5f14e8dd464309c3c2f23e.zip |
Merge pull request #18 from kris7t/releng-docs
Restructure project
Diffstat (limited to 'language-web/build.gradle')
-rw-r--r-- | language-web/build.gradle | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/language-web/build.gradle b/language-web/build.gradle deleted file mode 100644 index ea2f1269..00000000 --- a/language-web/build.gradle +++ /dev/null | |||
@@ -1,161 +0,0 @@ | |||
1 | apply plugin: 'java' | ||
2 | apply from: "${rootDir}/gradle/xtext-common.gradle" | ||
3 | apply from: "${rootDir}/gradle/junit.gradle" | ||
4 | |||
5 | dependencies { | ||
6 | implementation project(':refinery-language') | ||
7 | implementation project(':refinery-language-ide') | ||
8 | implementation "org.eclipse.xtext:org.eclipse.xtext.web:${xtextVersion}" | ||
9 | implementation "org.eclipse.xtend:org.eclipse.xtend.lib:${xtextVersion}" | ||
10 | implementation "org.eclipse.jetty:jetty-server:${jettyVersion}" | ||
11 | implementation "org.eclipse.jetty:jetty-servlet:${jettyVersion}" | ||
12 | implementation "org.eclipse.jetty.websocket:websocket-jetty-server:${jettyVersion}" | ||
13 | implementation "org.slf4j:slf4j-simple:${slf4JVersion}" | ||
14 | implementation "org.slf4j:log4j-over-slf4j:${slf4JVersion}" | ||
15 | testImplementation testFixtures(project(':refinery-language')) | ||
16 | testImplementation "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" | ||
17 | testImplementation "org.eclipse.jetty.websocket:websocket-jetty-client:${jettyVersion}" | ||
18 | } | ||
19 | |||
20 | def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') | ||
21 | |||
22 | for (taskName in ['compileJava', 'processResources']) { | ||
23 | tasks.named(taskName) { | ||
24 | dependsOn generateXtextLanguage | ||
25 | } | ||
26 | } | ||
27 | |||
28 | def webpackOutputDir = "${buildDir}/webpack" | ||
29 | def productionResources = "${webpackOutputDir}/production" | ||
30 | def serverMainClass = 'tools.refinery.language.web.ServerLauncher' | ||
31 | |||
32 | apply plugin: 'org.siouan.frontend-jdk11' | ||
33 | import org.siouan.frontendgradleplugin.infrastructure.gradle.RunNpmYarn | ||
34 | |||
35 | def nodeDirectory = "${rootDir}/.gradle/node" | ||
36 | |||
37 | frontend { | ||
38 | nodeVersion = project.ext.nodeVersion | ||
39 | nodeInstallDirectory = file(nodeDirectory) | ||
40 | yarnEnabled = true | ||
41 | yarnVersion = project.ext.yarnVersion | ||
42 | yarnInstallDirectory = file("${rootDir}/.gradle/yarn") | ||
43 | assembleScript = 'run assemble:webpack' | ||
44 | } | ||
45 | |||
46 | def installFrontend = tasks.named('installFrontend') | ||
47 | |||
48 | def generateLezerGrammar = tasks.register('generateLezerGrammar', RunNpmYarn) { | ||
49 | dependsOn installFrontend | ||
50 | inputs.file('src/main/js/language/problem.grammar') | ||
51 | inputs.files('package.json', 'yarn.lock') | ||
52 | outputs.file "${buildDir}/generated/sources/lezer/problem.ts" | ||
53 | outputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts" | ||
54 | script = 'run assemble:lezer' | ||
55 | } | ||
56 | |||
57 | def assembleFrontend = tasks.named('assembleFrontend') | ||
58 | assembleFrontend.configure { | ||
59 | dependsOn generateLezerGrammar | ||
60 | inputs.dir 'src/main/css' | ||
61 | inputs.dir 'src/main/html' | ||
62 | inputs.dir 'src/main/js' | ||
63 | inputs.file "${buildDir}/generated/sources/lezer/problem.ts" | ||
64 | inputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts" | ||
65 | inputs.files('package.json', 'yarn.lock', 'webpack.config.js') | ||
66 | outputs.dir productionResources | ||
67 | } | ||
68 | |||
69 | def eslint = tasks.register('eslint', RunNpmYarn) { | ||
70 | dependsOn installFrontend | ||
71 | inputs.dir 'src/main/js' | ||
72 | inputs.files('.eslintrc.js', 'tsconfig.json') | ||
73 | if (project.hasProperty('ci')) { | ||
74 | outputs.file "${buildDir}/eslint.json" | ||
75 | script = 'run check:eslint:ci' | ||
76 | } else { | ||
77 | script = 'run check:eslint' | ||
78 | } | ||
79 | group = 'verification' | ||
80 | description = 'Check for TypeScript errors.' | ||
81 | } | ||
82 | |||
83 | def stylelint = tasks.register('stylelint', RunNpmYarn) { | ||
84 | dependsOn installFrontend | ||
85 | inputs.dir 'src/main/css' | ||
86 | inputs.file '.stylelintrc.js' | ||
87 | if (project.hasProperty('ci')) { | ||
88 | outputs.file "${buildDir}/stylelint.json" | ||
89 | script = 'run check:stylelint:ci' | ||
90 | } else { | ||
91 | script = 'run check:stylelint' | ||
92 | } | ||
93 | group = 'verification' | ||
94 | description = 'Check for Sass errors.' | ||
95 | } | ||
96 | |||
97 | tasks.named('check') { | ||
98 | dependsOn(eslint, stylelint) | ||
99 | } | ||
100 | |||
101 | tasks.named('jar') { | ||
102 | dependsOn assembleFrontend | ||
103 | from(productionResources) { | ||
104 | into 'webapp' | ||
105 | } | ||
106 | } | ||
107 | |||
108 | apply plugin: 'application' | ||
109 | mainClassName = serverMainClass | ||
110 | distTar.enabled = false | ||
111 | distZip.enabled = false | ||
112 | |||
113 | apply plugin: 'com.github.johnrengelman.shadow' | ||
114 | shadowDistTar.enabled = false | ||
115 | shadowDistZip.enabled = false | ||
116 | |||
117 | tasks.named('shadowJar') { | ||
118 | dependsOn assembleFrontend | ||
119 | from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output) | ||
120 | configurations = [project.configurations.runtimeClasspath] | ||
121 | exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*', | ||
122 | '.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*', | ||
123 | 'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**') | ||
124 | append('plugin.properties') | ||
125 | from(productionResources) { | ||
126 | into 'webapp' | ||
127 | } | ||
128 | } | ||
129 | |||
130 | def jettyRun = tasks.register('jettyRun', JavaExec) { | ||
131 | dependsOn assembleFrontend | ||
132 | dependsOn sourceSets.main.runtimeClasspath | ||
133 | classpath = sourceSets.main.runtimeClasspath.filter{it.exists()} | ||
134 | mainClass = serverMainClass | ||
135 | standardInput = System.in | ||
136 | environment BASE_RESOURCE: productionResources | ||
137 | group = 'run' | ||
138 | description = 'Start a Jetty web server serving the Xtex API and assets (without rebuilding assets).' | ||
139 | } | ||
140 | |||
141 | tasks.register('webpackServe', RunNpmYarn) { | ||
142 | dependsOn installFrontend | ||
143 | dependsOn generateLezerGrammar | ||
144 | outputs.dir "${webpackOutputDir}/development" | ||
145 | script = 'run serve' | ||
146 | group = 'run' | ||
147 | description = 'Start a Webpack dev server with hot module replacement.' | ||
148 | } | ||
149 | |||
150 | sonarqube.properties { | ||
151 | properties['sonar.sources'] += [ | ||
152 | 'src/main/css', | ||
153 | 'src/main/html', | ||
154 | 'src/main/js', | ||
155 | ] | ||
156 | property 'sonar.nodejs.executable', "${nodeDirectory}/bin/node" | ||
157 | property 'sonar.eslint.reportPaths', "${buildDir}/eslint.json" | ||
158 | property 'sonar.css.stylelint.reportPaths', "${buildDir}/stylelint.json" | ||
159 | // SonarJS does not pick up typescript files with `exactOptionalPropertyTypes` | ||
160 | property 'sonar.typescript.tsconfigPath', 'tsconfig.sonar.json' | ||
161 | } | ||