diff --git a/.circleci/config.yml b/.circleci/config.yml index 8dabc3f..c781fdc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,7 +21,7 @@ commands: - sdkman/setup-sdkman - sdkman/sdkman-install: candidate: kotlin - version: 2.0.20 + version: 2.1.10 - run: name: Download dependencies command: ./bld download @@ -46,11 +46,11 @@ jobs: steps: - build_and_test - bld_jdk20: + bld_jdk21: <<: *defaults docker: - - image: cimg/openjdk:20.0 + - image: cimg/openjdk:21.0 steps: - build_and_test @@ -59,4 +59,4 @@ workflows: bld: jobs: - bld_jdk17 - - bld_jdk20 + - bld_jdk21 diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 297568a..639d0d6 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -4,17 +4,17 @@ on: [push, pull_request, workflow_dispatch] env: COVERAGE_JDK: "21" - COVERAGE_KOTLIN: "2.0.0" - KOTLIN_HOME: /usr/share/kotlinc + COVERAGE_KOTLIN: "2.0.21" jobs: build-bld-project: - runs-on: ubuntu-latest - strategy: matrix: - java-version: [17, 21, 22] - kotlin-version: [1.19.24, 2.0.20] + java-version: [17, 21, 24] + kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ] + os: [ ubuntu-latest, windows-latest, macos-latest ] + + runs-on: ${{ matrix.os }} steps: - name: Checkout source repository @@ -28,6 +28,23 @@ jobs: distribution: "zulu" java-version: ${{ matrix.java-version }} + - name: Download dependencies [bld example] + working-directory: examples/bld + run: ./bld download + + - name: Compile and run examples [bld example] + working-directory: examples/bld + run: | + ./bld compile + ./bld run --args='https://www.example.com https://is.gd/Pt2sET' + ./bld run-java --args='https://www.example.com https://is.gd/Pt2sET' + + - name: Run examples [gradle example] + working-directory: examples/gradle + run: | + ./gradlew run --args='https://www.example.com https://is.gd/Pt2sET' + ./gradlew runJava --args='https://www.example.com https://is.gd/Pt2sET' + - name: Download dependencies run: ./bld download @@ -39,11 +56,13 @@ jobs: - name: Remove pom.xml if: success() && matrix.java-version == env.COVERAGE_JDK && matrix.kotlin-version == env.COVERAGE_KOTLIN + && matrix.os == 'ubuntu-latest' run: rm -rf pom.xml - name: SonarCloud Scan uses: sonarsource/sonarcloud-github-action@master if: success() && matrix.java-version == env.COVERAGE_JDK && matrix.kotlin-version == env.COVERAGE_KOTLIN + && matrix.os == 'ubuntu-latest' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 1e01b48..94f28ea 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -4,5 +4,6 @@ + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..9d6ea82 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index 5c4010c..153a060 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/LICENSE.txt b/LICENSE.txt index 1d8c0dd..75e61da 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) +Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index a4ee365..7bff2fb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](https://opensource.org/licenses/BSD-3-Clause) -[![Kotlin](https://img.shields.io/badge/kotlin-2.0.20-7f52ff)](https://kotlinlang.org/) -[![bld](https://img.shields.io/badge/2.1.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) +[![Kotlin](https://img.shields.io/badge/kotlin-2.1.20-7f52ff)](https://kotlinlang.org/) +[![bld](https://img.shields.io/badge/2.2.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![release](https://img.shields.io/github/release/ethauvin/isgd-shorten.svg)](https://github.com/ethauvin/isgd-shorten/releases/latest) [![Maven Central](https://img.shields.io/maven-central/v/net.thauvin.erik/isgd-shorten.svg?color=blue)](https://central.sonatype.com/artifact/net.thauvin.erik/isgd-shorten) [![Nexus Snapshot](https://img.shields.io/nexus/s/net.thauvin.erik/isgd-shorten?label=snapshot&server=https%3A%2F%2Foss.sonatype.org%2F)](https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/isgd-shorten/) @@ -19,7 +19,7 @@ A simple implementation of the [is.gd](https://is.gd/) URL shortening and lookup ```kotlin import net.thauvin.erik.isgd.Isgd -... +// ... Isgd.shorten("https://www.example.com/") // returns https://is.gd/Pt2sET Isgd.lookup("https://is.gd/Pt2sET") // returns https://www.example.com @@ -69,10 +69,10 @@ To use with [bld](https://rife2.com/bld), include the following dependency in yo repositories = List.of(MAVEN_CENTRAL, SONATYPE_SNAPSHOTS_LEGACY); scope(compile) - .include("net.thauvin.erik:isgd-shorten:1.0.`"); + .include("net.thauvin.erik:isgd-shorten:1.1.0"); ``` -## Gradle +## Gradle, Maven, etc... To use with [Gradle](https://gradle.org/), include the following dependency in your [build](https://github.com/ethauvin/isgd-shorten/blob/master/examples/gradle/build.gradle.kts) file: @@ -83,7 +83,7 @@ repositories { } dependencies { - implementation("net.thauvin.erik:isgd-shorten:1.0.1") + implementation("net.thauvin.erik:isgd-shorten:1.1.0") } ``` diff --git a/examples/bld/.idea/libraries/bld.xml b/examples/bld/.idea/libraries/bld.xml index 5c4010c..153a060 100644 --- a/examples/bld/.idea/libraries/bld.xml +++ b/examples/bld/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/examples/bld/.vscode/settings.json b/examples/bld/.vscode/settings.json index 4c33beb..ba429d0 100644 --- a/examples/bld/.vscode/settings.json +++ b/examples/bld/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.1.0.jar", + "${HOME}/.bld/dist/bld-2.2.1.jar", "lib/**/*.jar" ] } diff --git a/examples/bld/lib/bld/bld-wrapper.jar b/examples/bld/lib/bld/bld-wrapper.jar index 7d19312..ee1bfee 100644 Binary files a/examples/bld/lib/bld/bld-wrapper.jar and b/examples/bld/lib/bld/bld-wrapper.jar differ diff --git a/examples/bld/lib/bld/bld-wrapper.properties b/examples/bld/lib/bld/bld-wrapper.properties index c1a8f56..1156265 100644 --- a/examples/bld/lib/bld/bld-wrapper.properties +++ b/examples/bld/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.8 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 +bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.10 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.1.0-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.1.0 +bld.version=2.2.1 diff --git a/examples/bld/src/bld/java/com/example/ExampleBuild.java b/examples/bld/src/bld/java/com/example/ExampleBuild.java index 19bb45e..172466e 100644 --- a/examples/bld/src/bld/java/com/example/ExampleBuild.java +++ b/examples/bld/src/bld/java/com/example/ExampleBuild.java @@ -24,7 +24,7 @@ public class ExampleBuild extends BaseProject { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, SONATYPE_SNAPSHOTS_LEGACY); scope(compile) - .include(dependency("net.thauvin.erik:isgd-shorten:1.0.2-SNAPSHOT")); + .include(dependency("net.thauvin.erik:isgd-shorten:1.1.1-SNAPSHOT")); } public static void main(String[] args) { diff --git a/examples/gradle/build.gradle.kts b/examples/gradle/build.gradle.kts index b7804fb..989a94e 100644 --- a/examples/gradle/build.gradle.kts +++ b/examples/gradle/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("application") id("com.github.ben-manes.versions") version "0.51.0" - kotlin("jvm") version "2.0.20" + kotlin("jvm") version "2.1.20" } repositories { @@ -13,7 +13,7 @@ repositories { } dependencies { - implementation("net.thauvin.erik:isgd-shorten:1.0.2-SNAPSHOT") + implementation("net.thauvin.erik:isgd-shorten:1.1.1-SNAPSHOT") } java { diff --git a/examples/gradle/gradle/wrapper/gradle-wrapper.jar b/examples/gradle/gradle/wrapper/gradle-wrapper.jar index a4b76b9..1b33c55 100644 Binary files a/examples/gradle/gradle/wrapper/gradle-wrapper.jar and b/examples/gradle/gradle/wrapper/gradle-wrapper.jar differ diff --git a/examples/gradle/gradle/wrapper/gradle-wrapper.properties b/examples/gradle/gradle/wrapper/gradle-wrapper.properties index 0aaefbc..ca025c8 100644 --- a/examples/gradle/gradle/wrapper/gradle-wrapper.properties +++ b/examples/gradle/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/examples/gradle/gradlew b/examples/gradle/gradlew index f5feea6..23d15a9 100755 --- a/examples/gradle/gradlew +++ b/examples/gradle/gradlew @@ -86,8 +86,7 @@ done # 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 -' "$PWD" ) || exit +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 @@ -115,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -206,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * 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. @@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/examples/gradle/gradlew.bat b/examples/gradle/gradlew.bat index 9d21a21..db3a6ac 100644 --- a/examples/gradle/gradlew.bat +++ b/examples/gradle/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index 755b72f..a252a09 100644 Binary files a/lib/bld/bld-wrapper.jar and b/lib/bld/bld-wrapper.jar differ diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index ee5e7de..751133d 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -1,10 +1,10 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.7 -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 -bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.8 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 +bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.10-SNAPSHOT +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.4-SNAPSHOT +bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.10 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.1.0-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.1.0 +bld.version=2.2.1 diff --git a/pom.xml b/pom.xml index 47efac9..33a16b9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 net.thauvin.erik isgd-shorten - 1.0.2-SNAPSHOT + 1.1.1-SNAPSHOT isgd-shorten A simple implementation of the is.gd URL shortening and lookup APIs https://github.com/ethauvin/isgd-shorten @@ -18,13 +18,13 @@ org.jetbrains.kotlin kotlin-stdlib - 2.0.20 + 2.1.20 compile net.thauvin.erik.urlencoder urlencoder-lib-jvm - 1.5.0 + 1.6.0 compile diff --git a/src/bld/java/net/thauvin/erik/IsgdShortenBuild.java b/src/bld/java/net/thauvin/erik/IsgdShortenBuild.java index dd8b32e..49abd79 100644 --- a/src/bld/java/net/thauvin/erik/IsgdShortenBuild.java +++ b/src/bld/java/net/thauvin/erik/IsgdShortenBuild.java @@ -1,7 +1,7 @@ /* * IsgdShortenBuild.java * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -39,6 +39,7 @@ import rife.bld.extension.DokkaOperation; import rife.bld.extension.JacocoReportOperation; import rife.bld.extension.dokka.LoggingLevel; import rife.bld.extension.dokka.OutputFormat; +import rife.bld.extension.kotlin.CompileOptions; import rife.bld.operations.exceptions.ExitStatusException; import rife.bld.publish.PomBuilder; import rife.bld.publish.PublishDeveloper; @@ -49,6 +50,9 @@ import rife.tools.exceptions.FileUtilsErrorException; import java.io.File; import java.io.IOException; import java.util.List; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.Logger; import static rife.bld.dependencies.Repository.*; import static rife.bld.dependencies.Scope.compile; @@ -60,7 +64,7 @@ public class IsgdShortenBuild extends Project { public IsgdShortenBuild() { pkg = "net.thauvin.erik"; name = "isgd-shorten"; - version = version(1, 0, 2, "SNAPSHOT"); + version = version(1, 1, 1, "SNAPSHOT"); javaRelease = 11; downloadSources = true; @@ -68,14 +72,15 @@ public class IsgdShortenBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL); - final var kotlin = version(2, 0, 20); + final var kotlin = version(2, 1, 20); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)) - .include(dependency("net.thauvin.erik.urlencoder", "urlencoder-lib-jvm", version(1, 5, 0))); + .include(dependency("net.thauvin.erik.urlencoder", "urlencoder-lib-jvm", version(1, 6, 0))); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 2))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 2))) + .include(dependency("org.junit.platform", "junit-platform-launcher", version(1, 12, 2))) .include(dependency("com.willowtreeapps.assertk", "assertk-jvm", version(0, 28, 1))); publishOperation() @@ -111,6 +116,16 @@ public class IsgdShortenBuild extends Project { } public static void main(String[] args) { + // Enable detailed logging for the extensions + var level = Level.ALL; + var logger = Logger.getLogger("rife.bld.extension"); + var consoleHandler = new ConsoleHandler(); + + consoleHandler.setLevel(level); + logger.addHandler(consoleHandler); + logger.setLevel(level); + logger.setUseParentHandlers(false); + new IsgdShortenBuild().start(args); } @@ -119,6 +134,7 @@ public class IsgdShortenBuild extends Project { public void compile() throws Exception { new CompileKotlinOperation() .fromProject(this) + .compileOptions(new CompileOptions().verbose(true)) .execute(); } diff --git a/src/main/kotlin/net/thauvin/erik/isgd/Isgd.kt b/src/main/kotlin/net/thauvin/erik/isgd/Isgd.kt index 2575d04..9157567 100644 --- a/src/main/kotlin/net/thauvin/erik/isgd/Isgd.kt +++ b/src/main/kotlin/net/thauvin/erik/isgd/Isgd.kt @@ -1,7 +1,7 @@ /* * Isgd.kt * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -33,7 +33,7 @@ package net.thauvin.erik.isgd import net.thauvin.erik.urlencoder.UrlEncoderUtil import java.net.HttpURLConnection -import java.net.URL +import java.net.URI /** * See the [is.gd API](https://is.gd/apishorteningreference.php). @@ -50,17 +50,21 @@ fun String.encode(): String = UrlEncoderUtil.encode(this) class Isgd private constructor() { companion object { private fun callApi(url: String): String { - val connection = URL(url).openConnection() as HttpURLConnection - connection.setRequestProperty( - "User-Agent", - "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/109.0" - ) - if (connection.responseCode in 200..399) { - return connection.inputStream.bufferedReader().use { it.readText() } - } else { - throw IsgdException( - connection.responseCode, - connection.errorStream.bufferedReader().use { it.readText() }) + val connection = URI(url).toURL().openConnection() as HttpURLConnection + try { + connection.setRequestProperty( + "User-Agent", + "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/109.0" + ) + if (connection.responseCode in 200..399) { + return connection.inputStream.bufferedReader().use { it.readText() } + } else { + throw IsgdException( + connection.responseCode, + connection.errorStream.bufferedReader().use { it.readText() }) + } + } finally { + connection.disconnect() } } diff --git a/src/main/kotlin/net/thauvin/erik/isgd/IsgdException.kt b/src/main/kotlin/net/thauvin/erik/isgd/IsgdException.kt index 110b3f4..d44ea5a 100644 --- a/src/main/kotlin/net/thauvin/erik/isgd/IsgdException.kt +++ b/src/main/kotlin/net/thauvin/erik/isgd/IsgdException.kt @@ -1,7 +1,7 @@ /* * IsgdException.kt * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/kotlin/net/thauvin/erik/isgd/LookupConfig.kt b/src/main/kotlin/net/thauvin/erik/isgd/LookupConfig.kt index 16f698f..6975ff2 100644 --- a/src/main/kotlin/net/thauvin/erik/isgd/LookupConfig.kt +++ b/src/main/kotlin/net/thauvin/erik/isgd/LookupConfig.kt @@ -1,7 +1,7 @@ /* * LookupConfig.kt * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/main/kotlin/net/thauvin/erik/isgd/ShortenConfig.kt b/src/main/kotlin/net/thauvin/erik/isgd/ShortenConfig.kt index c71c36a..a11fc4e 100644 --- a/src/main/kotlin/net/thauvin/erik/isgd/ShortenConfig.kt +++ b/src/main/kotlin/net/thauvin/erik/isgd/ShortenConfig.kt @@ -1,7 +1,7 @@ /* * ShortenConfig.kt * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/src/test/kotlin/net/thauvin/erik/isgd/IsgdTest.kt b/src/test/kotlin/net/thauvin/erik/isgd/IsgdTest.kt index 1139351..8048362 100644 --- a/src/test/kotlin/net/thauvin/erik/isgd/IsgdTest.kt +++ b/src/test/kotlin/net/thauvin/erik/isgd/IsgdTest.kt @@ -1,7 +1,7 @@ /* * IsgdTest.kt * - * Copyright 2020-2024 Erik C. Thauvin (erik@thauvin.net) + * Copyright 2020-2025 Erik C. Thauvin (erik@thauvin.net) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: