summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/build.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-ui/build.gradle.kts')
-rw-r--r--opendc-web/opendc-web-ui/build.gradle.kts91
1 files changed, 91 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts
index 7edfd134..9e0d4ff0 100644
--- a/opendc-web/opendc-web-ui/build.gradle.kts
+++ b/opendc-web/opendc-web-ui/build.gradle.kts
@@ -19,3 +19,94 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
+
+import com.github.gradle.node.yarn.task.YarnTask
+
+description = "Web interface for OpenDC"
+
+plugins {
+ `java-library-conventions`
+ id("com.github.node-gradle.node")
+}
+
+sourceSets {
+ main {
+ java.srcDir("src")
+ }
+ test {
+ java.srcDir("test")
+ }
+}
+
+val lintTask = tasks.register<YarnTask>("lintNext") {
+ args.set(listOf("lint"))
+ dependsOn(tasks.yarn)
+ inputs.dir("src")
+ inputs.files("package.json", "next.config.js", ".eslintrc")
+ outputs.upToDateWhen { true }
+}
+
+tasks.register<YarnTask>("dev") {
+ args.set(listOf("dev"))
+ dependsOn(tasks.yarn)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.upToDateWhen { true }
+}
+
+val buildTask = tasks.register<YarnTask>("buildNext") {
+ args.set(listOf("build"))
+
+ val env = listOf(
+ "NEXT_BASE_PATH",
+ "NEXT_PUBLIC_API_BASE_URL",
+ "NEXT_PUBLIC_SENTRY_DSN",
+ "NEXT_PUBLIC_AUTH0_DOMAIN",
+ "NEXT_PUBLIC_AUTH0_CLIENT_ID",
+ "NEXT_PUBLIC_AUTH0_AUDIENCE",
+ )
+ for (envvar in env) {
+ environment.put(envvar, "%%${envvar}%%")
+ }
+
+ dependsOn(tasks.yarn)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.dir(layout.buildDirectory.dir("next"))
+}
+
+tasks.register<YarnTask>("start") {
+ args.set(listOf("start"))
+ dependsOn(buildTask)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.upToDateWhen { true }
+}
+
+tasks.processResources {
+ dependsOn(buildTask)
+ inputs.dir(project.fileTree("public"))
+
+ from(layout.buildDirectory.dir("next")) {
+ include("routes-manifest.json")
+ into("META-INF/resources/${project.name}")
+ }
+
+ from(layout.buildDirectory.dir("next/static")) {
+ into("META-INF/resources/${project.name}/static/_next/static")
+ }
+
+ from(layout.buildDirectory.dir("next/server/pages")) {
+ include("**/*.html")
+ into("META-INF/resources/${project.name}/pages")
+ }
+
+ from(project.fileTree("public")) {
+ into("META-INF/resources/${project.name}/static")
+ }
+
+ mkdir("${project.buildDir}/classes/java/main")
+}