From 37d3cfcebebfab59d0dbe6eb7cf5e22a839e080a Mon Sep 17 00:00:00 2001 From: Yuriy Davygora Date: Mon, 11 May 2026 13:29:07 +0200 Subject: [PATCH] Initial commit: basic project structure --- .editorconfig | 13 ++ .gitattributes | 3 + .gitignore | 14 ++ build.gradle.kts | 78 +++++++ gradle.properties | 5 + gradle/libs.versions.toml | 51 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 48462 bytes gradle/wrapper/gradle-wrapper.properties | 9 + gradlew | 248 +++++++++++++++++++++++ gradlew.bat | 82 ++++++++ settings.gradle.kts | 13 ++ 11 files changed, 516 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..98c969d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +insert_final_newline = true + +[*.{kt,kts}] + +ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL +# No package should have default wildcard imports +ij_kotlin_packages_to_use_import_on_demand = unset +# Prevent wildcard imports for classes and member imports +ij_kotlin_name_count_to_use_star_import = 99999 +ij_kotlin_name_count_to_use_star_import_for_members = 99999 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7385c23 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2474a34 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# IDE + +**/.idea +**/*.iml +**/*.ipr +**/*.iws + +# Build + +**/build/ + +# Gradle + +**/.gradle/ diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..26cc008 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,78 @@ +plugins { + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.ktlint) + `maven-publish` +} + +repositories { + mavenCentral() + maven { + url = uri("https://gitea.davygora.duckdns.org/api/packages/yura/maven") + } +} + +group = "org.duckdns.davygora" +version = "0.1" + +dependencies { + // Main + + implementation(libs.kotlin.reflect) + + implementation(libs.memoize) + + // Test + + testImplementation(libs.bundles.test) + testRuntimeOnly(libs.bundles.junit.platform) +} + +kotlin { + compilerOptions { + freeCompilerArgs.addAll("-Xjsr305=strict") + } +} + +kotlin { + jvmToolchain { + languageVersion = JavaLanguageVersion.of(25) + vendor = JvmVendorSpec.ADOPTIUM + } +} + +tasks.named("test") { + useJUnitPlatform() +} + +ktlint { + version = + libs.versions.ktlint.library + .get() +} + +publishing { + publications { + create("maven") { + from(components["java"]) + } + } + + repositories { + maven { + name = "gitea" + url = + uri( + "https://gitea.davygora.duckdns.org/api/packages/yura/maven", + ) + credentials { + username = System.getenv("MAVEN_USERNAME") + password = System.getenv("MAVEN_PASSWORD") + } + } + } +} + +tasks.wrapper { + gradleVersion = libs.versions.gradle.get() + distributionType = Wrapper.DistributionType.BIN +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..377538c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,5 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties + +org.gradle.configuration-cache=true + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..8c2419b --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,51 @@ +[versions] + +# Main + +gradle = "9.5.0" # https://gradle.org/releases/ + +kotlin = "2.3.21" # https://kotlinlang.org/docs/releases.html#release-details + +ktlint-library = "1.8.0" # https://github.com/pinterest/ktlint +ktlint-plugin = "14.2.0" # https://github.com/JLLeitschuh/ktlint-gradle + +memoize = "0.1" # https://gitea.davygora.duckdns.org/yura/-/packages/maven/org.duckdns.davygora:memoize + +# Test + +kotest = "6.1.11" # https://mvnrepository.com/artifact/io.kotest/kotest-runner-junit5 +junit = "6.0.3" # https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter +mockk = "1.14.9" # https://mvnrepository.com/artifact/io.mockk/mockk + +[libraries] + +# Main + +kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" } + +memoize = {group = "org.duckdns.davygora", name = "memoize", version.ref="memoize"} + +# Test + +kotest = { group = "io.kotest", name = "kotest-runner-junit5", version.ref = "kotest" } +junit-jupiter = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit" } +mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } + +junit-platform-launcher = { group = "org.junit.platform", name = "junit-platform-launcher", version.ref = "junit" } +junit-platform-commons = { group = "org.junit.platform", name = "junit-platform-commons", version.ref = "junit" } +junit-platform-engine = { group = "org.junit.platform", name = "junit-platform-engine", version.ref = "junit" } + +[bundles] + +# Main + +# Test + +test = ["kotest", "junit-jupiter", "mockk"] +junit-platform = ["junit-platform-launcher", "junit-platform-commons", "junit-platform-engine"] + +[plugins] + +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } + +ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-plugin" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b1b8ef56b44f16b14dc800fa8103a6d89abb526f GIT binary patch literal 48462 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/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + 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=SC2039,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=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + 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 optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# 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. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..24c62d5 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,82 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..8a54dda --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,13 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + } +} + +plugins { + // see https://plugins.gradle.org/plugin/org.gradle.toolchains.foojay-resolver-convention + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} + +rootProject.name = "matrix"