aboutsummaryrefslogtreecommitdiffstats
path: root/language-web/build.gradle
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-12 17:48:47 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-12 17:48:47 +0100
commitfc7e9312d00e60171ed77c477ed91231d3dbfff9 (patch)
treecc185dd088b5fa6e9357aab3c9062a70626d1953 /language-web/build.gradle
parentbuild: refactor java-application conventions (diff)
downloadrefinery-fc7e9312d00e60171ed77c477ed91231d3dbfff9.tar.gz
refinery-fc7e9312d00e60171ed77c477ed91231d3dbfff9.tar.zst
refinery-fc7e9312d00e60171ed77c477ed91231d3dbfff9.zip
build: move modules into subproject directory
Diffstat (limited to 'language-web/build.gradle')
-rw-r--r--language-web/build.gradle147
1 files changed, 0 insertions, 147 deletions
diff --git a/language-web/build.gradle b/language-web/build.gradle
deleted file mode 100644
index a549288a..00000000
--- a/language-web/build.gradle
+++ /dev/null
@@ -1,147 +0,0 @@
1plugins {
2 id 'refinery-frontend-workspace'
3 id 'refinery-java-application'
4 id 'refinery-xtext-conventions'
5}
6
7import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn
8
9dependencies {
10 implementation project(':refinery-language')
11 implementation project(':refinery-language-ide')
12 implementation libs.xtend.lib
13 implementation libs.xtext.web
14 implementation libs.jetty.server
15 implementation libs.jetty.servlet
16 implementation libs.jetty.websocket.server
17 implementation libs.slf4j.simple
18 implementation libs.slf4j.log4j
19 testImplementation testFixtures(project(':refinery-language'))
20 testImplementation libs.jetty.websocket.client
21}
22
23def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage')
24
25for (taskName in ['compileJava', 'processResources']) {
26 tasks.named(taskName) {
27 dependsOn generateXtextLanguage
28 }
29}
30
31def webpackOutputDir = "${buildDir}/webpack"
32def productionResources = "${webpackOutputDir}/production"
33def serverMainClass = 'tools.refinery.language.web.ServerLauncher'
34
35frontend {
36 assembleScript = 'assemble:webpack'
37}
38
39def installFrontend = tasks.named('installFrontend')
40
41def generateLezerGrammar = tasks.register('generateLezerGrammar', RunYarn) {
42 dependsOn installFrontend
43 inputs.file('src/main/js/language/problem.grammar')
44 inputs.files('package.json', 'yarn.lock')
45 outputs.file "${buildDir}/generated/sources/lezer/problem.ts"
46 outputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts"
47 script = 'run assemble:lezer'
48}
49
50def assembleFrontend = tasks.named('assembleFrontend')
51assembleFrontend.configure {
52 dependsOn generateLezerGrammar
53 inputs.dir 'src/main/css'
54 inputs.dir 'src/main/html'
55 inputs.dir 'src/main/js'
56 inputs.file "${buildDir}/generated/sources/lezer/problem.ts"
57 inputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts"
58 inputs.files('package.json', 'yarn.lock', 'webpack.config.js')
59 outputs.dir productionResources
60}
61
62def eslint = tasks.register('eslint', RunYarn) {
63 dependsOn installFrontend
64 inputs.dir 'src/main/js'
65 inputs.files('.eslintrc.js', 'tsconfig.json')
66 if (project.hasProperty('ci')) {
67 outputs.file "${buildDir}/eslint.json"
68 script = 'run check:eslint:ci'
69 } else {
70 script = 'run check:eslint'
71 }
72 group = 'verification'
73 description = 'Check for TypeScript errors.'
74}
75
76def stylelint = tasks.register('stylelint', RunYarn) {
77 dependsOn installFrontend
78 inputs.dir 'src/main/css'
79 inputs.file '.stylelintrc.js'
80 if (project.hasProperty('ci')) {
81 outputs.file "${buildDir}/stylelint.json"
82 script = 'run check:stylelint:ci'
83 } else {
84 script = 'run check:stylelint'
85 }
86 group = 'verification'
87 description = 'Check for Sass errors.'
88}
89
90tasks.named('check') {
91 dependsOn(eslint, stylelint)
92}
93
94mainClassName = serverMainClass
95
96tasks.named('jar') {
97 dependsOn assembleFrontend
98 from(productionResources) {
99 into 'webapp'
100 }
101}
102
103tasks.named('shadowJar') {
104 dependsOn assembleFrontend
105 from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output)
106 configurations = [project.configurations.runtimeClasspath]
107 exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*',
108 '.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*',
109 'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**')
110 append('plugin.properties')
111 from(productionResources) {
112 into 'webapp'
113 }
114}
115
116def jettyRun = tasks.register('jettyRun', JavaExec) {
117 dependsOn assembleFrontend
118 dependsOn sourceSets.main.runtimeClasspath
119 classpath = sourceSets.main.runtimeClasspath.filter{it.exists()}
120 mainClass = serverMainClass
121 standardInput = System.in
122 environment BASE_RESOURCE: productionResources
123 group = 'run'
124 description = 'Start a Jetty web server serving the Xtex API and assets.'
125}
126
127tasks.register('webpackServe', RunYarn) {
128 dependsOn installFrontend
129 dependsOn generateLezerGrammar
130 outputs.dir "${webpackOutputDir}/development"
131 script = 'run serve'
132 group = 'run'
133 description = 'Start a Webpack dev server with hot module replacement.'
134}
135
136sonarqube.properties {
137 properties['sonar.sources'] += [
138 'src/main/css',
139 'src/main/html',
140 'src/main/js',
141 ]
142 property 'sonar.nodejs.executable', "${frontend.nodeInstallDirectory.get()}/bin/node"
143 property 'sonar.eslint.reportPaths', "${buildDir}/eslint.json"
144 property 'sonar.css.stylelint.reportPaths', "${buildDir}/stylelint.json"
145 // SonarJS does not pick up typescript files with `exactOptionalPropertyTypes`
146 property 'sonar.typescript.tsconfigPath', 'tsconfig.sonar.json'
147}