diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index de713ee..f56fc0a 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -7,12 +7,12 @@ jobs: # Set up the OS runs-on: ubuntu-latest env: - # Nexus credentials and GitHub token - NEXUS_USERNAME: '${{ secrets.NEXUS_USERNAME }}' - NEXUS_PASSWORD: '${{ secrets.NEXUS_PASSWORD }}' + # Sonatype Credentials & GitHub token + SONATYPE_USERNAME: '${{ secrets.SONATYPE_USERNAME }}' + SONATYPE_PASSWORD: '${{ secrets.SONATYPE_PASSWORD }}' GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' # Set environment - env: 'prod' + ENV: 'prod' steps: # Checkout the Code - name: Checkout Code @@ -37,7 +37,7 @@ jobs: run: chmod +x gradlew # Clean, Test, Publish and Build (in that order to save the artifact to the action) - name: Test, Deploy and Build with Gradle - run: ./gradlew clean test publish shadow dokkaHtml + run: ./gradlew clean test shadowJar dokkaHtml publish publishToSonatype closeAndReleaseSonatypeStagingRepository -no-daemon # Now we store the artifact in the action - name: Upload the artifact uses: actions/upload-artifact@v3 @@ -56,3 +56,5 @@ jobs: branch: gh-pages folder: build/dokka clean: true + clean-exclude: | + CNAME diff --git a/.github/workflows/gradle-test.yml b/.github/workflows/gradle-test.yml index 8024e59..e2bcf6e 100644 --- a/.github/workflows/gradle-test.yml +++ b/.github/workflows/gradle-test.yml @@ -12,21 +12,21 @@ jobs: runs-on: ubuntu-latest # Set up environment variables env: - env: 'local' # Set to local, so it won't deploy the jar to the repos + ENV: 'local' # Set to local, so it won't deploy the jar to the repos steps: - # Checkout code - - name: Checkout Code - uses: actions/checkout@v3 - # Setup java and maven - - name: Set up JDK ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: adopt - java-version: ${{ matrix.java-version }} - cache: 'gradle' - # Setup executable gradle - - name: Make Gradle executable - run: chmod +x gradlew - # Test building without dokka - - name: Build Jar with Java ${{ matrix.java-version }} - run: ./gradlew clean publish shadow -x dokkaHtml \ No newline at end of file + # Checkout code + - name: Checkout Code + uses: actions/checkout@v3 + # Setup java and maven + - name: Set up JDK ${{ matrix.java-version }} + uses: actions/setup-java@v3 + with: + distribution: adopt + java-version: ${{ matrix.java-version }} + cache: 'gradle' + # Setup executable gradle + - name: Make Gradle executable + run: chmod +x gradlew + # Test building without dokka + - name: Build Jar with Java ${{ matrix.java-version }} + run: ./gradlew clean shadowJar test -x dokkaHtml -no-daemon \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e6ac18..ba643f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## v0.2.0 - Snapshot +* Added to sonatype +* Updated Dependencies +* Updated to gradle 8 +* Updated to kotlin 1.8 +* Updated to use gradle kotlin dsl +* Updated repositories + ## v0.1.3 - Snapshot * Updated Dependencies * Migrated to JitPack diff --git a/build.gradle b/build.gradle deleted file mode 100644 index adb7c25..0000000 --- a/build.gradle +++ /dev/null @@ -1,120 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' version '1.7.20' - id 'maven-publish' - id 'com.github.johnrengelman.shadow' version '7.1.2' - id 'cl.franciscosolis.blossom-extended' version '1.3.1' - id 'org.jetbrains.dokka' version '1.7.20' -} - -def projectVersion = (System.getenv("VERSION") ?: '0.1.3-SNAPSHOT').replaceFirst("v", "").replace('/', '') - -group 'xyz.theprogramsrc' -version projectVersion -description 'File configurations and utils for the SimpleCore API' - -repositories { - mavenLocal() - mavenCentral() - - maven { url 'https://repo.theprogramsrc.xyz/repository/maven-public/' } - maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } - maven { url 'https://oss.sonatype.org/content/repositories/releases/' } - maven { url 'https://oss.sonatype.org/content/groups/public/' } - maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } - maven { url 'https://repo.codemc.org/repository/maven-public/' } - maven { url 'https://jitpack.io/' } -} - -dependencies { - compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.7.20' - compileOnly 'xyz.theprogramsrc:simplecoreapi:0.4.5-SNAPSHOT' - - implementation 'me.carleslc.Simple-YAML:Simple-Yaml:1.8.3' - - testImplementation 'org.junit.jupiter:junit-jupiter:5.9.2' -} - -shadowJar { - relocate 'org.simpleyaml', 'xyz.theprogramsrc.filesmodule.libs.simpleyaml' - relocate 'org.yaml.snakeyaml', 'xyz.theprogramsrc.filesmodule.libs.snakeyaml' - - mergeServiceFiles() - exclude('**/*.kotlin_metadata') - exclude('**/*.kotlin_builtins') - - archiveBaseName.set('FilesModule') - archiveClassifier.set('') -} - -test { - useJUnitPlatform() -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - withSourcesJar() -} - -blossom { - replaceToken '@name@', rootProject.name - replaceToken '@version@', project.version.toString() - replaceToken '@description@', project.description - replaceToken '@git_short@', System.getenv("GIT_COMMIT_SHORT_HASH") ?: "unknown" - replaceToken '@git_full@', System.getenv("GIT_COMMIT_LONG_HASH") ?: "unknown" -} - -tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' -} - -tasks.withType(Copy) { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE -} - -tasks.withType(Jar) { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE -} - -configurations { - testImplementation { - extendsFrom(compileOnly) - } -} - -tasks.named("dokkaHtml") { - outputDirectory.set(file(project.buildDir.absolutePath + '/dokka')) -} - -publishing { - repositories { - if(System.getenv('env') == 'prod'){ - maven { - name = 'GitHubPackages' - url = 'https://maven.pkg.github.com/TheProgramSrc/SimpleCore-Filesmodule' - credentials { - username = System.getenv('GITHUB_ACTOR') - password = System.getenv('GITHUB_TOKEN') - } - } - }else{ - mavenLocal() - } - } - publications { - mavenKotlin(MavenPublication) { publication -> - artifactId = 'filesmodule' - - from components.java - - pom.withXml { - asNode().appendNode('packaging', 'jar') - if(asNode().get('dependencies')[0] != null) { - asNode().remove(asNode().get('dependencies')[0]) - } - } - } - } -} - -publish.dependsOn clean, test, jar, shadowJar \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..f7e936e --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,183 @@ +import com.github.jengelman.gradle.plugins.shadow.ShadowExtension +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + `maven-publish` + id("io.github.gradle-nexus.publish-plugin") version "1.1.0" + id("com.github.johnrengelman.shadow") version "7.1.2" + id("cl.franciscosolis.blossom-extended") version "1.3.1" + + kotlin("jvm") version "1.8.10" + id("org.jetbrains.dokka") version "1.7.20" +} + +val env = project.rootProject.file(".env").let { file -> + if(file.exists()) file.readLines().filter { it.isNotBlank() && !it.startsWith("#") && it.split("=").size == 2 }.associate { it.split("=")[0] to it.split("=")[1] } else emptyMap() +}.toMutableMap().apply { putAll(System.getenv()) } + +val projectVersion = env["VERSION"] ?: "0.2.0-SNAPSHOT" + +group = "xyz.theprogramsrc" +version = projectVersion +description = "File configurations and utils for the SimpleCore API" + +repositories { + mavenLocal() + mavenCentral() + + maven("https://s01.oss.sonatype.org/content/groups/public/") + maven("https://oss.sonatype.org/content/groups/public/") + maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") + maven("https://repo.codemc.org/repository/maven-public/") + maven("https://jitpack.io/") +} + +dependencies { + compileOnly("xyz.theprogramsrc:simplecoreapi:0.6.2-SNAPSHOT") + + implementation("me.carleslc.Simple-YAML:Simple-Yaml:1.8.3") + + testImplementation("org.junit.jupiter:junit-jupiter:5.9.2") +} + + +tasks { + named("shadowJar") { + relocate("org.simpleyaml", "xyz.theprogramsrc.filesmodule.libs.simpleyaml") + relocate("org.yaml.snakeyaml", "xyz.theprogramsrc.filesmodule.libs.snakeyaml") + + mergeServiceFiles() + exclude("**/*.kotlin_metadata") + exclude("**/*.kotlin_builtins") + + archiveBaseName.set("FilesModule") + archiveClassifier.set("") + } + + test { + useJUnitPlatform() + } + + java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + withSourcesJar() + withJavadocJar() + } + + compileKotlin { + kotlinOptions { + jvmTarget = "11" + } + } + + compileTestKotlin { + kotlinOptions { + jvmTarget = "11" + } + } + + compileJava { + options.encoding = "UTF-8" + } + + jar { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + } + + copy { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + } + + dokkaHtml { + outputDirectory.set(file(project.buildDir.absolutePath + "/dokka")) + } +} + +configurations { + testImplementation { + extendsFrom(configurations.compileOnly.get()) + } +} + +val dokkaJavadocJar by tasks.register("dokkaJavadocJar") { + dependsOn(tasks.dokkaJavadoc, tasks.dokkaHtml) + from(tasks.dokkaJavadoc.flatMap { it.outputDirectory }) + archiveClassifier.set("javadoc") +} + +publishing { + repositories { + if (env["ENV"] == "prod") { + if (env.containsKey("GITHUB_ACTOR") && env.containsKey("GITHUB_TOKEN")) { + maven { + name = "GithubPackages" + url = uri("https://maven.pkg.github.com/TheProgramSrc/SimpleCore-FilesModule") + credentials { + username = env["GITHUB_ACTOR"] + password = env["GITHUB_TOKEN"] + } + } + } + } else { + mavenLocal() + } + } + + publications { + create("shadow") { + project.extensions.configure { + artifactId = rootProject.name.lowercase() + + component(this@create) + artifact(dokkaJavadocJar) + artifact(tasks.kotlinSourcesJar) + + pom { + name.set(rootProject.name) + description.set(project.description) + url.set("https://github.com/TheProgramSrc/SimpleCore-FilesModule") + + licenses { + license { + name.set("GNU GPL v3") + url.set("https://github.com/TheProgramSrc/SimpleCore-FilesModule/blob/master/LICENSE") + } + } + + developers { + developer { + id.set("ImFran") + name.set("Francisco Solis") + email.set("imfran@duck.com") + } + } + + scm { + url.set("https://github.com/TheProgramSrc/SimpleCore-FilesModule") + } + } + } + } + } +} + +nexusPublishing { + repositories { + sonatype { + nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) + snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) + + username.set(env["SONATYPE_USERNAME"]) + password.set(env["SONATYPE_PASSWORD"]) + } + } +} + +tasks.withType { + dependsOn(tasks.test, tasks.kotlinSourcesJar, dokkaJavadocJar, tasks.jar, tasks.shadowJar) +} + +tasks.withType { + dependsOn(tasks.test, tasks.kotlinSourcesJar, tasks.jar, dokkaJavadocJar, tasks.shadowJar) +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..35d2cc9 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-XX:MaxMetaspaceSize=512m \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e583..ccebba7 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..42defcc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb..79a61d4 100755 --- a/gradlew +++ b/gradlew @@ -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,10 +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##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,16 @@ fi 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 diff --git a/gradlew.bat b/gradlew.bat index f127cfd..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index c90e5d4..0000000 --- a/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -rootProject.name = 'FilesModule' - diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..d6b1d89 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,2 @@ +rootProject.name = "FilesModule" + diff --git a/src/main/kotlin/xyz/theprogramsrc/filesmodule/Main.kt b/src/main/kotlin/xyz/theprogramsrc/filesmodule/Main.kt index df61cc7..ad046de 100644 --- a/src/main/kotlin/xyz/theprogramsrc/filesmodule/Main.kt +++ b/src/main/kotlin/xyz/theprogramsrc/filesmodule/Main.kt @@ -2,5 +2,4 @@ package xyz.theprogramsrc.filesmodule import xyz.theprogramsrc.simplecoreapi.global.module.Module -class Main: Module() { -} \ No newline at end of file +class Main: Module() \ No newline at end of file diff --git a/src/main/kotlin/xyz/theprogramsrc/filesmodule/config/JsonConfig.kt b/src/main/kotlin/xyz/theprogramsrc/filesmodule/config/JsonConfig.kt index 1dd82d1..f9f1ecc 100644 --- a/src/main/kotlin/xyz/theprogramsrc/filesmodule/config/JsonConfig.kt +++ b/src/main/kotlin/xyz/theprogramsrc/filesmodule/config/JsonConfig.kt @@ -1,10 +1,7 @@ package xyz.theprogramsrc.filesmodule.config +import com.google.gson.* import xyz.theprogramsrc.filesmodule.utils.file -import xyz.theprogramsrc.simplecoreapi.libs.google.gson.JsonArray -import xyz.theprogramsrc.simplecoreapi.libs.google.gson.JsonElement -import xyz.theprogramsrc.simplecoreapi.libs.google.gson.JsonObject -import xyz.theprogramsrc.simplecoreapi.libs.google.gson.JsonParser import java.io.File /** diff --git a/src/main/resources/module.properties b/src/main/resources/module.properties index 0c61440..d9924d4 100644 --- a/src/main/resources/module.properties +++ b/src/main/resources/module.properties @@ -3,4 +3,4 @@ name=FilesModule description=@description@ version=@version@ author=TheProgramSrc -repository-id=filesmodule +module-id=filesmodule