diff --git a/.gitignore b/.gitignore index 0322f595a..64fecb426 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ dist/ nbdist/ .nb-gradle/ +/komga/src/main/resources/public/ diff --git a/.travis.yml b/.travis.yml index 55a52ebfc..0da7ae692 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,10 @@ jobs: include: - stage: deploy jdk: openjdk8 - script: skip # do not rerun any tests + install: + - ./gradlew copyWebDist + - ./gradlew assemble + script: skip deploy: - provider: script script: ./gradlew dockerPushBeta diff --git a/komga/build.gradle.kts b/komga/build.gradle.kts index 0b57bf158..5c3cdf9bc 100644 --- a/komga/build.gradle.kts +++ b/komga/build.gradle.kts @@ -1,5 +1,6 @@ import com.github.breadmoirai.githubreleaseplugin.GithubReleaseTask import com.palantir.gradle.docker.DockerExtension +import org.apache.tools.ant.taskdefs.condition.Os import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -113,6 +114,42 @@ tasks { from(zipTree(getByName("bootJar").outputs.files.singleFile)) into("$buildDir/dependency") } + + register("deletePublic") { + delete("$projectDir/src/main/resources/public/") + } + + register("npmInstall") { + workingDir("$rootDir/komga-webui") + commandLine( + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + "npm.cmd" + } else { + "npm" + }, + "install" + ) + } + + register("npmBuild") { + dependsOn("npmInstall") + workingDir("$rootDir/komga-webui") + commandLine( + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + "npm.cmd" + } else { + "npm" + }, + "run", + "build" + ) + } + + register("copyWebDist") { + dependsOn("deletePublic", "npmBuild") + from("$rootDir/komga-webui/dist/") + into("$projectDir/src/main/resources/public/") + } } configure { @@ -132,4 +169,4 @@ githubRelease { } tasks.withType { dependsOn(tasks.bootJar) -} \ No newline at end of file +} diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/web/SPAErrorViewResolver.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/web/SPAErrorViewResolver.kt new file mode 100644 index 000000000..da51833d0 --- /dev/null +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/web/SPAErrorViewResolver.kt @@ -0,0 +1,18 @@ +package org.gotson.komga.infrastructure.web + +import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver +import org.springframework.http.HttpStatus +import org.springframework.stereotype.Component +import org.springframework.web.servlet.ModelAndView +import javax.servlet.http.HttpServletRequest + + +@Component +class SPAErrorViewResolver : ErrorViewResolver { + override fun resolveErrorView(request: HttpServletRequest, status: HttpStatus, model: MutableMap): ModelAndView = + if (status == HttpStatus.NOT_FOUND) { + ModelAndView("/", HttpStatus.TEMPORARY_REDIRECT) + } else { + ModelAndView("/error", status) + } +}