mirror of
				https://github.com/smyalygames/checklist-tester.git
				synced 2025-10-31 05:37:40 +01:00 
			
		
		
		
	build(connector): add Compose and split desktop app and server
This commit is contained in:
		
							parent
							
								
									609c8393ae
								
							
						
					
					
						commit
						89451ba849
					
				
							
								
								
									
										19
									
								
								connector/.fleet/receipt.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								connector/.fleet/receipt.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| // Project generated by Kotlin Multiplatform Wizard | ||||
| { | ||||
|     "spec": { | ||||
|         "template_id": "kmt", | ||||
|         "targets": { | ||||
|             "desktop": { | ||||
|                 "ui": [ | ||||
|                     "compose" | ||||
|                 ] | ||||
|             }, | ||||
|             "server": { | ||||
|                 "engine": [ | ||||
|                     "ktor" | ||||
|                 ] | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "timestamp": "2024-03-30T17:11:47.077783195Z" | ||||
| } | ||||
							
								
								
									
										17
									
								
								connector/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								connector/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| *.iml | ||||
| .gradle | ||||
| **/build/ | ||||
| xcuserdata | ||||
| !src/**/build/ | ||||
| local.properties | ||||
| .idea | ||||
| .DS_Store | ||||
| captures | ||||
| .externalNativeBuild | ||||
| .cxx | ||||
| *.xcodeproj/* | ||||
| !*.xcodeproj/project.pbxproj | ||||
| !*.xcodeproj/xcshareddata/ | ||||
| !*.xcodeproj/project.xcworkspace/ | ||||
| !*.xcworkspace/contents.xcworkspacedata | ||||
| **/xcshareddata/WorkspaceSettings.xcsettings | ||||
							
								
								
									
										16
									
								
								connector/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								connector/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| This is a Kotlin Multiplatform project targeting Desktop, Server. | ||||
| 
 | ||||
| * `/composeApp` is for code that will be shared across your Compose Multiplatform applications. | ||||
|   It contains several subfolders: | ||||
|   - `commonMain` is for code that’s common for all targets. | ||||
|   - Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name. | ||||
|     For example, if you want to use Apple’s CoreCrypto for the iOS part of your Kotlin app, | ||||
|     `iosMain` would be the right folder for such calls. | ||||
| 
 | ||||
| * `/server` is for the Ktor server application. | ||||
| 
 | ||||
| * `/shared` is for the code that will be shared between all targets in the project. | ||||
|   The most important subfolder is `commonMain`. If preferred, you can add code to the platform-specific folders here too. | ||||
| 
 | ||||
| 
 | ||||
| Learn more about [Kotlin Multiplatform](https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html)… | ||||
| @ -1,23 +1,7 @@ | ||||
| plugins { | ||||
|     kotlin("jvm") version "1.9.23" | ||||
| } | ||||
| 
 | ||||
| group = "io.anthonyberg" | ||||
| version = "1.0-SNAPSHOT" | ||||
| 
 | ||||
| repositories { | ||||
|     mavenCentral() | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation("dk.au.ece.vdmj:vdmj:4.5.0") | ||||
|     testImplementation("org.jetbrains.kotlin:kotlin-test") | ||||
| } | ||||
| 
 | ||||
| tasks.test { | ||||
|     useJUnitPlatform() | ||||
| } | ||||
| 
 | ||||
| kotlin { | ||||
|     jvmToolchain(21) | ||||
| } | ||||
|     // this is necessary to avoid the plugins to be loaded multiple times | ||||
|     // in each subproject's classloader | ||||
|     alias(libs.plugins.jetbrainsCompose) apply false | ||||
|     alias(libs.plugins.kotlinJvm) apply false | ||||
|     alias(libs.plugins.kotlinMultiplatform) apply false | ||||
| } | ||||
							
								
								
									
										41
									
								
								connector/composeApp/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								connector/composeApp/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| import org.jetbrains.compose.desktop.application.dsl.TargetFormat | ||||
| 
 | ||||
| plugins { | ||||
|     alias(libs.plugins.kotlinMultiplatform) | ||||
|      | ||||
|     alias(libs.plugins.jetbrainsCompose) | ||||
| } | ||||
| 
 | ||||
| kotlin { | ||||
|     jvm("desktop") | ||||
|      | ||||
|     sourceSets { | ||||
|         val desktopMain by getting | ||||
|          | ||||
|         commonMain.dependencies { | ||||
|             implementation(compose.runtime) | ||||
|             implementation(compose.foundation) | ||||
|             implementation(compose.material) | ||||
|             implementation(compose.ui) | ||||
|             implementation(compose.components.resources) | ||||
|             implementation(compose.components.uiToolingPreview) | ||||
|             implementation(projects.shared) | ||||
|         } | ||||
|         desktopMain.dependencies { | ||||
|             implementation(compose.desktop.currentOs) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| compose.desktop { | ||||
|     application { | ||||
|         mainClass = "MainKt" | ||||
| 
 | ||||
|         nativeDistributions { | ||||
|             targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) | ||||
|             packageName = "io.anthonyberg.connector" | ||||
|             packageVersion = "1.0.0" | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,36 @@ | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="600dp" | ||||
|     android:height="600dp" | ||||
|     android:viewportWidth="600" | ||||
|     android:viewportHeight="600"> | ||||
|   <path | ||||
|       android:pathData="M301.21,418.53C300.97,418.54 300.73,418.56 300.49,418.56C297.09,418.59 293.74,417.72 290.79,416.05L222.6,377.54C220.63,376.43 219,374.82 217.85,372.88C216.7,370.94 216.09,368.73 216.07,366.47L216.07,288.16C216.06,287.32 216.09,286.49 216.17,285.67C216.38,283.54 216.91,281.5 217.71,279.6L199.29,268.27L177.74,256.19C175.72,260.43 174.73,265.23 174.78,270.22L174.79,387.05C174.85,393.89 178.57,400.2 184.53,403.56L286.26,461.02C290.67,463.51 295.66,464.8 300.73,464.76C300.91,464.76 301.09,464.74 301.27,464.74C301.24,449.84 301.22,439.23 301.22,439.23L301.21,418.53Z" | ||||
|       android:fillColor="#041619" | ||||
|       android:fillType="nonZero"/> | ||||
|   <path | ||||
|       android:pathData="M409.45,242.91L312.64,188.23C303.64,183.15 292.58,183.26 283.68,188.51L187.92,245C183.31,247.73 179.93,251.62 177.75,256.17L177.74,256.19L199.29,268.27L217.71,279.6C217.83,279.32 217.92,279.02 218.05,278.74C218.24,278.36 218.43,277.98 218.64,277.62C219.06,276.88 219.52,276.18 220.04,275.51C221.37,273.8 223.01,272.35 224.87,271.25L289.06,233.39C290.42,232.59 291.87,231.96 293.39,231.51C295.53,230.87 297.77,230.6 300,230.72C302.98,230.88 305.88,231.73 308.47,233.2L373.37,269.85C375.54,271.08 377.49,272.68 379.13,274.57C379.68,275.19 380.18,275.85 380.65,276.53C380.86,276.84 381.05,277.15 381.24,277.47L397.79,266.39L420.34,252.93L420.31,252.88C417.55,248.8 413.77,245.35 409.45,242.91Z" | ||||
|       android:fillColor="#37BF6E" | ||||
|       android:fillType="nonZero"/> | ||||
|   <path | ||||
|       android:pathData="M381.24,277.47C381.51,277.92 381.77,278.38 382.01,278.84C382.21,279.24 382.39,279.65 382.57,280.06C382.91,280.88 383.19,281.73 383.41,282.59C383.74,283.88 383.92,285.21 383.93,286.57L383.93,361.1C383.96,363.95 383.35,366.77 382.16,369.36C381.93,369.86 381.69,370.35 381.42,370.83C379.75,373.79 377.32,376.27 374.39,378L310.2,415.87C307.47,417.48 304.38,418.39 301.21,418.53L301.22,439.23C301.22,439.23 301.24,449.84 301.27,464.74C306.1,464.61 310.91,463.3 315.21,460.75L410.98,404.25C419.88,399 425.31,389.37 425.22,379.03L425.22,267.85C425.17,262.48 423.34,257.34 420.34,252.93L397.79,266.39L381.24,277.47Z" | ||||
|       android:fillColor="#3870B2" | ||||
|       android:fillType="nonZero"/> | ||||
|   <path | ||||
|       android:pathData="M177.75,256.17C179.93,251.62 183.31,247.73 187.92,245L283.68,188.51C292.58,183.26 303.64,183.15 312.64,188.23L409.45,242.91C413.77,245.35 417.55,248.8 420.31,252.88L420.34,252.93L498.59,206.19C494.03,199.46 487.79,193.78 480.67,189.75L320.86,99.49C306.01,91.1 287.75,91.27 273.07,99.95L114.99,193.2C107.39,197.69 101.81,204.11 98.21,211.63L177.74,256.19L177.75,256.17ZM301.27,464.74C301.09,464.74 300.91,464.76 300.73,464.76C295.66,464.8 290.67,463.51 286.26,461.02L184.53,403.56C178.57,400.2 174.85,393.89 174.79,387.05L174.78,270.22C174.73,265.23 175.72,260.43 177.74,256.19L98.21,211.63C94.86,218.63 93.23,226.58 93.31,234.82L93.31,427.67C93.42,438.97 99.54,449.37 109.4,454.92L277.31,549.77C284.6,553.88 292.84,556.01 301.2,555.94L301.2,555.8C301.39,543.78 301.33,495.26 301.27,464.74Z" | ||||
|       android:strokeWidth="10" | ||||
|       android:fillColor="#00000000" | ||||
|       android:strokeColor="#083042" | ||||
|       android:fillType="nonZero"/> | ||||
|   <path | ||||
|       android:pathData="M498.59,206.19L420.34,252.93C423.34,257.34 425.17,262.48 425.22,267.85L425.22,379.03C425.31,389.37 419.88,399 410.98,404.25L315.21,460.75C310.91,463.3 306.1,464.61 301.27,464.74C301.33,495.26 301.39,543.78 301.2,555.8L301.2,555.94C309.48,555.87 317.74,553.68 325.11,549.32L483.18,456.06C497.87,447.39 506.85,431.49 506.69,414.43L506.69,230.91C506.6,222.02 503.57,213.5 498.59,206.19Z" | ||||
|       android:strokeWidth="10" | ||||
|       android:fillColor="#00000000" | ||||
|       android:strokeColor="#083042" | ||||
|       android:fillType="nonZero"/> | ||||
|   <path | ||||
|       android:pathData="M301.2,555.94C292.84,556.01 284.6,553.88 277.31,549.76L109.4,454.92C99.54,449.37 93.42,438.97 93.31,427.67L93.31,234.82C93.23,226.58 94.86,218.63 98.21,211.63C101.81,204.11 107.39,197.69 114.99,193.2L273.07,99.95C287.75,91.27 306.01,91.1 320.86,99.49L480.67,189.75C487.79,193.78 494.03,199.46 498.59,206.19C503.57,213.5 506.6,222.02 506.69,230.91L506.69,414.43C506.85,431.49 497.87,447.39 483.18,456.06L325.11,549.32C317.74,553.68 309.48,555.87 301.2,555.94Z" | ||||
|       android:strokeWidth="10" | ||||
|       android:fillColor="#00000000" | ||||
|       android:strokeColor="#083042" | ||||
|       android:fillType="nonZero"/> | ||||
| </vector> | ||||
							
								
								
									
										37
									
								
								connector/composeApp/src/desktopMain/kotlin/App.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								connector/composeApp/src/desktopMain/kotlin/App.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| import androidx.compose.animation.AnimatedVisibility | ||||
| import androidx.compose.foundation.Image | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.material.Button | ||||
| import androidx.compose.material.MaterialTheme | ||||
| import androidx.compose.material.Text | ||||
| import androidx.compose.runtime.* | ||||
| import androidx.compose.ui.Alignment | ||||
| import androidx.compose.ui.Modifier | ||||
| import org.jetbrains.compose.resources.ExperimentalResourceApi | ||||
| import org.jetbrains.compose.resources.painterResource | ||||
| import org.jetbrains.compose.ui.tooling.preview.Preview | ||||
| 
 | ||||
| import connector.composeapp.generated.resources.Res | ||||
| import connector.composeapp.generated.resources.compose_multiplatform | ||||
| 
 | ||||
| @OptIn(ExperimentalResourceApi::class) | ||||
| @Composable | ||||
| @Preview | ||||
| fun App() { | ||||
|     MaterialTheme { | ||||
|         var showContent by remember { mutableStateOf(false) } | ||||
|         Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { | ||||
|             Button(onClick = { showContent = !showContent }) { | ||||
|                 Text("Click me!") | ||||
|             } | ||||
|             AnimatedVisibility(showContent) { | ||||
|                 val greeting = remember { Greeting().greet() } | ||||
|                 Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { | ||||
|                     Image(painterResource(Res.drawable.compose_multiplatform), null) | ||||
|                     Text("Compose: $greeting") | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										9
									
								
								connector/composeApp/src/desktopMain/kotlin/main.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								connector/composeApp/src/desktopMain/kotlin/main.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.window.Window | ||||
| import androidx.compose.ui.window.application | ||||
| 
 | ||||
| fun main() = application { | ||||
|     Window(onCloseRequest = ::exitApplication, title = "connector") { | ||||
|         App() | ||||
|     } | ||||
| } | ||||
							
								
								
									
										9
									
								
								connector/gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								connector/gradle.properties
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| kotlin.code.style=official | ||||
| 
 | ||||
| #Gradle | ||||
| org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #Development | ||||
| development=true | ||||
							
								
								
									
										24
									
								
								connector/gradle/libs.versions.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								connector/gradle/libs.versions.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| [versions] | ||||
| compose = "1.6.2" | ||||
| compose-plugin = "1.6.0" | ||||
| junit = "4.13.2" | ||||
| kotlin = "1.9.22" | ||||
| ktor = "2.3.9" | ||||
| logback = "1.5.3" | ||||
| 
 | ||||
| [libraries] | ||||
| kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } | ||||
| kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } | ||||
| junit = { group = "junit", name = "junit", version.ref = "junit" } | ||||
| compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" } | ||||
| compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose" } | ||||
| logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } | ||||
| ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } | ||||
| ktor-server-netty = { module = "io.ktor:ktor-server-netty-jvm", version.ref = "ktor" } | ||||
| ktor-server-tests = { module = "io.ktor:ktor-server-tests-jvm", version.ref = "ktor" } | ||||
| 
 | ||||
| [plugins] | ||||
| jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } | ||||
| kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } | ||||
| ktor = { id = "io.ktor.plugin", version.ref = "ktor" } | ||||
| kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } | ||||
| @ -1,6 +1,7 @@ | ||||
| #Fri Mar 29 17:41:10 CET 2024 | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| zipStorePath=wrapper/dists | ||||
|  | ||||
							
								
								
									
										30
									
								
								connector/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								connector/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -55,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -80,13 +80,10 @@ do | ||||
|     esac | ||||
| done | ||||
| 
 | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||||
| 
 | ||||
| APP_NAME="Gradle" | ||||
| # This is normally unused | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| 
 | ||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
| @ -133,22 +130,29 @@ location of your Java installation." | ||||
|     fi | ||||
| else | ||||
|     JAVACMD=java | ||||
|     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
|     if ! command -v java >/dev/null 2>&1 | ||||
|     then | ||||
|         die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| 
 | ||||
| Please set the JAVA_HOME variable in your environment to match the | ||||
| location of your Java installation." | ||||
|     fi | ||||
| fi | ||||
| 
 | ||||
| # Increase the maximum file descriptors if we can. | ||||
| if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||||
|     case $MAX_FD in #( | ||||
|       max*) | ||||
|         # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. | ||||
|         # shellcheck disable=SC3045 | ||||
|         MAX_FD=$( ulimit -H -n ) || | ||||
|             warn "Could not query maximum file descriptor limit" | ||||
|     esac | ||||
|     case $MAX_FD in  #( | ||||
|       '' | soft) :;; #( | ||||
|       *) | ||||
|         # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. | ||||
|         # shellcheck disable=SC3045 | ||||
|         ulimit -n "$MAX_FD" || | ||||
|             warn "Could not set maximum file descriptor limit to $MAX_FD" | ||||
|     esac | ||||
| @ -193,6 +197,10 @@ if "$cygwin" || "$msys" ; then | ||||
|     done | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Collect all arguments for the java command; | ||||
| #   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | ||||
| #     shell script including quotes and variable substitutions, so put them in | ||||
| @ -205,6 +213,12 @@ set -- \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
| 
 | ||||
| # Stop when "xargs" is not available. | ||||
| if ! command -v xargs >/dev/null 2>&1 | ||||
| then | ||||
|     die "xargs is not available" | ||||
| fi | ||||
| 
 | ||||
| # Use "xargs" to parse quoted args. | ||||
| # | ||||
| # With -n1 it outputs one arg per line, with the quotes and backslashes removed. | ||||
|  | ||||
							
								
								
									
										15
									
								
								connector/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								connector/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @ -14,7 +14,7 @@ | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%" == "" @echo off | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @rem | ||||
| @rem  Gradle startup script for Windows | ||||
| @ -25,7 +25,8 @@ | ||||
| if "%OS%"=="Windows_NT" setlocal | ||||
| 
 | ||||
| set DIRNAME=%~dp0 | ||||
| if "%DIRNAME%" == "" set DIRNAME=. | ||||
| if "%DIRNAME%"=="" set DIRNAME=. | ||||
| @rem This is normally unused | ||||
| set APP_BASE_NAME=%~n0 | ||||
| set APP_HOME=%DIRNAME% | ||||
| 
 | ||||
| @ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome | ||||
| 
 | ||||
| set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if "%ERRORLEVEL%" == "0" goto execute | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| @ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
| if "%ERRORLEVEL%"=="0" goto mainEnd | ||||
| if %ERRORLEVEL% equ 0 goto mainEnd | ||||
| 
 | ||||
| :fail | ||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||
| rem the _cmd.exe /c_ return code! | ||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||
| exit /b 1 | ||||
| set EXIT_CODE=%ERRORLEVEL% | ||||
| if %EXIT_CODE% equ 0 set EXIT_CODE=1 | ||||
| if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% | ||||
| exit /b %EXIT_CODE% | ||||
| 
 | ||||
| :mainEnd | ||||
| if "%OS%"=="Windows_NT" endlocal | ||||
|  | ||||
							
								
								
									
										23
									
								
								connector/server/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								connector/server/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| plugins { | ||||
|     alias(libs.plugins.kotlinJvm) | ||||
|     alias(libs.plugins.ktor) | ||||
|     application | ||||
| } | ||||
| 
 | ||||
| group = "io.anthonyberg.connector" | ||||
| version = "1.0.0" | ||||
| application { | ||||
|     mainClass.set("io.anthonyberg.connector.ApplicationKt") | ||||
|     applicationDefaultJvmArgs = listOf("-Dio.ktor.development=${extra["development"] ?: "false"}") | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation(projects.shared) | ||||
|     implementation(libs.logback) | ||||
|     implementation(libs.ktor.server.core) | ||||
|     implementation(libs.ktor.server.netty) | ||||
|     testImplementation(libs.ktor.server.tests) | ||||
|     testImplementation(libs.kotlin.test.junit) | ||||
| 
 | ||||
|     implementation("dk.au.ece.vdmj:vdmj:4.5.0") | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| package io.anthonyberg.connector | ||||
| 
 | ||||
| import Greeting | ||||
| import SERVER_PORT | ||||
| import io.ktor.server.application.* | ||||
| import io.ktor.server.engine.* | ||||
| import io.ktor.server.netty.* | ||||
| import io.ktor.server.response.* | ||||
| import io.ktor.server.routing.* | ||||
| 
 | ||||
| fun main() { | ||||
|     embeddedServer(Netty, port = SERVER_PORT, host = "0.0.0.0", module = Application::module) | ||||
|         .start(wait = true) | ||||
| } | ||||
| 
 | ||||
| fun Application.module() { | ||||
|     routing { | ||||
|         get("/") { | ||||
|             call.respondText("Ktor: ${Greeting().greet()}") | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| package io.anthonyberg | ||||
| package io.anthonyberg.connector | ||||
| 
 | ||||
| import com.fujitsu.vdmj.ExitStatus | ||||
| import com.fujitsu.vdmj.Settings | ||||
							
								
								
									
										12
									
								
								connector/server/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								connector/server/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| <configuration> | ||||
|     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||
|         <encoder> | ||||
|             <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> | ||||
|         </encoder> | ||||
|     </appender> | ||||
|     <root level="trace"> | ||||
|         <appender-ref ref="STDOUT"/> | ||||
|     </root> | ||||
|     <logger name="org.eclipse.jetty" level="INFO"/> | ||||
|     <logger name="io.netty" level="INFO"/> | ||||
| </configuration> | ||||
| @ -1,5 +1,23 @@ | ||||
| plugins { | ||||
|     id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" | ||||
| } | ||||
| rootProject.name = "connector" | ||||
| enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") | ||||
| 
 | ||||
| pluginManagement { | ||||
|     repositories { | ||||
|         maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") | ||||
|         google() | ||||
|         gradlePluginPortal() | ||||
|         mavenCentral() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| dependencyResolutionManagement { | ||||
|     repositories { | ||||
|         google() | ||||
|         mavenCentral() | ||||
|         maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| include(":composeApp") | ||||
| include(":server") | ||||
| include(":shared") | ||||
							
								
								
									
										16
									
								
								connector/shared/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								connector/shared/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| 
 | ||||
| plugins { | ||||
|     alias(libs.plugins.kotlinMultiplatform) | ||||
|      | ||||
| } | ||||
| 
 | ||||
| kotlin { | ||||
|     jvm() | ||||
|      | ||||
|     sourceSets { | ||||
|         commonMain.dependencies { | ||||
|             // put your Multiplatform dependencies here | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										1
									
								
								connector/shared/src/commonMain/kotlin/Constants.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								connector/shared/src/commonMain/kotlin/Constants.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| const val SERVER_PORT = 8080 | ||||
							
								
								
									
										7
									
								
								connector/shared/src/commonMain/kotlin/Greeting.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								connector/shared/src/commonMain/kotlin/Greeting.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| class Greeting { | ||||
|     private val platform = getPlatform() | ||||
| 
 | ||||
|     fun greet(): String { | ||||
|         return "Hello, ${platform.name}!" | ||||
|     } | ||||
| } | ||||
							
								
								
									
										5
									
								
								connector/shared/src/commonMain/kotlin/Platform.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								connector/shared/src/commonMain/kotlin/Platform.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| interface Platform { | ||||
|     val name: String | ||||
| } | ||||
| 
 | ||||
| expect fun getPlatform(): Platform | ||||
							
								
								
									
										5
									
								
								connector/shared/src/jvmMain/kotlin/Platform.jvm.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								connector/shared/src/jvmMain/kotlin/Platform.jvm.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| class JVMPlatform: Platform { | ||||
|     override val name: String = "Java ${System.getProperty("java.version")}" | ||||
| } | ||||
| 
 | ||||
| actual fun getPlatform(): Platform = JVMPlatform() | ||||
| @ -1,6 +0,0 @@ | ||||
| package io.anthonyberg | ||||
| 
 | ||||
| fun main() { | ||||
|     // Open VDMJ | ||||
|     val VDMJ = VDMJ() | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
| /home/smyalygames/Documents/dissertation/formal/checklist.vdmsl | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anthony
						Anthony