From ab2fcd3793595779b20bb633bcbad147e2366cd4 Mon Sep 17 00:00:00 2001 From: demoth Date: Tue, 5 Apr 2022 15:44:33 +0200 Subject: [PATCH 1/3] kotlin 1.6.20 --- build.gradle.kts | 12 +++++------- gradle.properties | 8 ++++++++ settings.gradle.kts | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 gradle.properties diff --git a/build.gradle.kts b/build.gradle.kts index 17cf871..23782be 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,15 +1,13 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - id("org.springframework.boot") version "2.5.6" - id("io.spring.dependency-management") version "1.0.11.RELEASE" - kotlin("jvm") version "1.5.31" - kotlin("plugin.spring") version "1.5.31" - kotlin("plugin.jpa") version "1.5.31" + id("org.springframework.boot") + id("io.spring.dependency-management") + kotlin("jvm") + kotlin("plugin.spring") + kotlin("plugin.jpa") } -group = "org.davnokodery" -version = "0.0.2" java.sourceCompatibility = JavaVersion.VERSION_11 repositories { diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..6bf39ac --- /dev/null +++ b/gradle.properties @@ -0,0 +1,8 @@ +# application properties +version=0.0.3 +group=org.davnokodery + +# dependencies / plugins +kotlinVersion=1.6.20 +springBootVersion=2.5.6 +springDependencyVersion=1.0.11.RELEASE diff --git a/settings.gradle.kts b/settings.gradle.kts index 3bbe191..9ed0563 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,15 @@ +pluginManagement { + val kotlinVersion: String by settings + val springBootVersion: String by settings + val springDependencyVersion: String by settings + + plugins { + id("org.springframework.boot") version springBootVersion + id("io.spring.dependency-management") version springDependencyVersion + kotlin("jvm") version kotlinVersion + kotlin("plugin.spring") version kotlinVersion + kotlin("plugin.jpa") version kotlinVersion + } +} rootProject.name = "stournament" + From 5eeb6bbd9453906629ed3c4fce72d0aedf300983 Mon Sep 17 00:00:00 2001 From: demoth Date: Tue, 5 Apr 2022 15:48:05 +0200 Subject: [PATCH 2/3] bump java-jwt to 3.19.0 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 23782be..af42aac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,7 +24,7 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - implementation("com.auth0:java-jwt:3.18.2") + implementation("com.auth0:java-jwt:3.19.0") runtimeOnly("com.h2database:h2") From c0ecb0616bfdc72f98e0432db06c538d42792606 Mon Sep 17 00:00:00 2001 From: demoth Date: Wed, 13 Apr 2022 07:04:11 +0200 Subject: [PATCH 3/3] ARD2 - Extract game logic --- build.gradle.kts => app/build.gradle.kts | 0 .../org/davnokodery/StournamentApplication.kt | 0 .../org/davnokodery/rigel/AuthService.kt | 0 .../org/davnokodery/rigel/GameException.kt | 0 .../davnokodery/rigel/GameExceptionHandler.kt | 0 .../org/davnokodery/rigel/LoginController.kt | 0 .../davnokodery/rigel/RigelWebsocketConfig.kt | 0 .../org/davnokodery/rigel/TestDataCreator.kt | 0 .../org/davnokodery/rigel/UserRepository.kt | 0 .../davnokodery/rigel/UserSessionManager.kt | 0 .../kotlin/org/davnokodery/rigel/messages.kt | 0 .../org/davnokodery/rigel/model/Card.kt | 0 .../davnokodery/rigel/model/GameSession.kt | 0 .../davnokodery/rigel/model/SessionPlayer.kt | 0 .../kotlin/org/davnokodery/rigel/notes.md | 0 .../davnokodery/stournament/GameController.kt | 0 .../org/davnokodery/stournament/GameState.kt | 0 .../org/davnokodery/stournament/cards.kt | 0 .../org/davnokodery/stournament/model.kt | 0 .../main/resources/application.properties | 0 {src => app/src}/main/resources/logback.xml | 0 .../org/davnokodery/rigel/GameSessionTest.kt | 0 .../org/davnokodery/rigel/IntegrationTest.kt | 0 .../rigel/StournamentApplicationTests.kt | 0 .../davnokodery/stournament/GameStateTest.kt | 0 docs/arch/adr-0002-extract-card-logic.md | 44 +++++++++++++++++++ settings.gradle.kts | 1 + 27 files changed, 45 insertions(+) rename build.gradle.kts => app/build.gradle.kts (100%) rename {src => app/src}/main/kotlin/org/davnokodery/StournamentApplication.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/AuthService.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/GameException.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/GameExceptionHandler.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/LoginController.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/RigelWebsocketConfig.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/TestDataCreator.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/UserRepository.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/UserSessionManager.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/messages.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/model/Card.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/model/GameSession.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/model/SessionPlayer.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/rigel/notes.md (100%) rename {src => app/src}/main/kotlin/org/davnokodery/stournament/GameController.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/stournament/GameState.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/stournament/cards.kt (100%) rename {src => app/src}/main/kotlin/org/davnokodery/stournament/model.kt (100%) rename {src => app/src}/main/resources/application.properties (100%) rename {src => app/src}/main/resources/logback.xml (100%) rename {src => app/src}/test/kotlin/org/davnokodery/rigel/GameSessionTest.kt (100%) rename {src => app/src}/test/kotlin/org/davnokodery/rigel/IntegrationTest.kt (100%) rename {src => app/src}/test/kotlin/org/davnokodery/rigel/StournamentApplicationTests.kt (100%) rename {src => app/src}/test/kotlin/org/davnokodery/stournament/GameStateTest.kt (100%) create mode 100644 docs/arch/adr-0002-extract-card-logic.md diff --git a/build.gradle.kts b/app/build.gradle.kts similarity index 100% rename from build.gradle.kts rename to app/build.gradle.kts diff --git a/src/main/kotlin/org/davnokodery/StournamentApplication.kt b/app/src/main/kotlin/org/davnokodery/StournamentApplication.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/StournamentApplication.kt rename to app/src/main/kotlin/org/davnokodery/StournamentApplication.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/AuthService.kt b/app/src/main/kotlin/org/davnokodery/rigel/AuthService.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/AuthService.kt rename to app/src/main/kotlin/org/davnokodery/rigel/AuthService.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/GameException.kt b/app/src/main/kotlin/org/davnokodery/rigel/GameException.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/GameException.kt rename to app/src/main/kotlin/org/davnokodery/rigel/GameException.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/GameExceptionHandler.kt b/app/src/main/kotlin/org/davnokodery/rigel/GameExceptionHandler.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/GameExceptionHandler.kt rename to app/src/main/kotlin/org/davnokodery/rigel/GameExceptionHandler.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/LoginController.kt b/app/src/main/kotlin/org/davnokodery/rigel/LoginController.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/LoginController.kt rename to app/src/main/kotlin/org/davnokodery/rigel/LoginController.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/RigelWebsocketConfig.kt b/app/src/main/kotlin/org/davnokodery/rigel/RigelWebsocketConfig.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/RigelWebsocketConfig.kt rename to app/src/main/kotlin/org/davnokodery/rigel/RigelWebsocketConfig.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/TestDataCreator.kt b/app/src/main/kotlin/org/davnokodery/rigel/TestDataCreator.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/TestDataCreator.kt rename to app/src/main/kotlin/org/davnokodery/rigel/TestDataCreator.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/UserRepository.kt b/app/src/main/kotlin/org/davnokodery/rigel/UserRepository.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/UserRepository.kt rename to app/src/main/kotlin/org/davnokodery/rigel/UserRepository.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/UserSessionManager.kt b/app/src/main/kotlin/org/davnokodery/rigel/UserSessionManager.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/UserSessionManager.kt rename to app/src/main/kotlin/org/davnokodery/rigel/UserSessionManager.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/messages.kt b/app/src/main/kotlin/org/davnokodery/rigel/messages.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/messages.kt rename to app/src/main/kotlin/org/davnokodery/rigel/messages.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/model/Card.kt b/app/src/main/kotlin/org/davnokodery/rigel/model/Card.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/model/Card.kt rename to app/src/main/kotlin/org/davnokodery/rigel/model/Card.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/model/GameSession.kt b/app/src/main/kotlin/org/davnokodery/rigel/model/GameSession.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/model/GameSession.kt rename to app/src/main/kotlin/org/davnokodery/rigel/model/GameSession.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/model/SessionPlayer.kt b/app/src/main/kotlin/org/davnokodery/rigel/model/SessionPlayer.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/model/SessionPlayer.kt rename to app/src/main/kotlin/org/davnokodery/rigel/model/SessionPlayer.kt diff --git a/src/main/kotlin/org/davnokodery/rigel/notes.md b/app/src/main/kotlin/org/davnokodery/rigel/notes.md similarity index 100% rename from src/main/kotlin/org/davnokodery/rigel/notes.md rename to app/src/main/kotlin/org/davnokodery/rigel/notes.md diff --git a/src/main/kotlin/org/davnokodery/stournament/GameController.kt b/app/src/main/kotlin/org/davnokodery/stournament/GameController.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/stournament/GameController.kt rename to app/src/main/kotlin/org/davnokodery/stournament/GameController.kt diff --git a/src/main/kotlin/org/davnokodery/stournament/GameState.kt b/app/src/main/kotlin/org/davnokodery/stournament/GameState.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/stournament/GameState.kt rename to app/src/main/kotlin/org/davnokodery/stournament/GameState.kt diff --git a/src/main/kotlin/org/davnokodery/stournament/cards.kt b/app/src/main/kotlin/org/davnokodery/stournament/cards.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/stournament/cards.kt rename to app/src/main/kotlin/org/davnokodery/stournament/cards.kt diff --git a/src/main/kotlin/org/davnokodery/stournament/model.kt b/app/src/main/kotlin/org/davnokodery/stournament/model.kt similarity index 100% rename from src/main/kotlin/org/davnokodery/stournament/model.kt rename to app/src/main/kotlin/org/davnokodery/stournament/model.kt diff --git a/src/main/resources/application.properties b/app/src/main/resources/application.properties similarity index 100% rename from src/main/resources/application.properties rename to app/src/main/resources/application.properties diff --git a/src/main/resources/logback.xml b/app/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to app/src/main/resources/logback.xml diff --git a/src/test/kotlin/org/davnokodery/rigel/GameSessionTest.kt b/app/src/test/kotlin/org/davnokodery/rigel/GameSessionTest.kt similarity index 100% rename from src/test/kotlin/org/davnokodery/rigel/GameSessionTest.kt rename to app/src/test/kotlin/org/davnokodery/rigel/GameSessionTest.kt diff --git a/src/test/kotlin/org/davnokodery/rigel/IntegrationTest.kt b/app/src/test/kotlin/org/davnokodery/rigel/IntegrationTest.kt similarity index 100% rename from src/test/kotlin/org/davnokodery/rigel/IntegrationTest.kt rename to app/src/test/kotlin/org/davnokodery/rigel/IntegrationTest.kt diff --git a/src/test/kotlin/org/davnokodery/rigel/StournamentApplicationTests.kt b/app/src/test/kotlin/org/davnokodery/rigel/StournamentApplicationTests.kt similarity index 100% rename from src/test/kotlin/org/davnokodery/rigel/StournamentApplicationTests.kt rename to app/src/test/kotlin/org/davnokodery/rigel/StournamentApplicationTests.kt diff --git a/src/test/kotlin/org/davnokodery/stournament/GameStateTest.kt b/app/src/test/kotlin/org/davnokodery/stournament/GameStateTest.kt similarity index 100% rename from src/test/kotlin/org/davnokodery/stournament/GameStateTest.kt rename to app/src/test/kotlin/org/davnokodery/stournament/GameStateTest.kt diff --git a/docs/arch/adr-0002-extract-card-logic.md b/docs/arch/adr-0002-extract-card-logic.md new file mode 100644 index 0000000..6f8dc8b --- /dev/null +++ b/docs/arch/adr-0002-extract-card-logic.md @@ -0,0 +1,44 @@ +# ADR 2: Extract game logic to a separate submodule + +## Status + +Proposed + +## Context + +Game project consists of the application and game logic code. +The application code contains endpoints and services for communicating with the client application and managing the game session lifecycle. +That part of the project is expected to be settled and have only slight changes after the initial release. +The game logic part on the other side is where the all game mechanics and balance logic is located and therefore can change more often. +The biggest necessity to make it separate is not to share it as part of the main open source project and not to spoil the fun of exploring the game. +Game logic code can be published as open source with a delay, when the new set of game logic code is developed. +## Decision + +We will keep game logic in a separate gradle module residing in a git submodule, added to the application during the build process. +To separate these modules a new interface module will be requried (`game-logic-interface`). + +The suggested git tree: + + + app/ + logic-interface/ + logic/ (git submodule) + build.gradle + + +The compilation dependencies will look like this: + +```mermaid +graph TB + app --> logic-interface + logic --> logic-interface +``` + +The `logic` dependency should be runtime only and optional (implemented via gradle `feature variant`) + +The app project can contain some sample logic to have a technically functional application but not a full game. + +## Consequences + +The application project is split into separate modules, which can have different visibility and lifecycle. +Git submodules are used. \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 9ed0563..6b1a261 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,5 +11,6 @@ pluginManagement { kotlin("plugin.jpa") version kotlinVersion } } +include(":app") rootProject.name = "stournament"