Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 18 additions & 23 deletions .github/workflows/deployment-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,53 +19,48 @@ jobs:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 17

- name: Build with gradle
uses: gradle/gradle-build-action@v2
with:
arguments: build javadocJar --stacktrace --info
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle
run: ./gradlew build javadocJar --stacktrace --info
release:
name: Publish artifacts
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
needs: build
env:
NEXUS_USER: ${{ secrets.NEXUS_USER }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.signingKey }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.signingPassword }}
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_USER }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY_ARMORED }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD_RAW }}
GITHUB_EVENT_NAME: ${{ github.event_name }}
GITHUB_TAG_NAME: ${{ github.event.release.tag_name }}
GITHUB_TARGET_COMMITISH: ${{ github.event.release.target_commitish }}
GITHUB_BRANCH_NAME: ${{ github.ref }}
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 17
- name: Build with gradle
uses: gradle/gradle-build-action@v2
with:
arguments: --stacktrace --info build

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Publish with Gradle
uses: gradle/gradle-build-action@v2
with:
arguments: -x test publish
# Disabled for now
#
# - name: Close and Release Repository
# run: ./gradlew closeAndReleaseRepository
run: ./gradlew -x test publish
116 changes: 31 additions & 85 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
import dev.kord.x.emoji.EmojiPlugin
import de.undercouch.gradle.tasks.download.org.apache.commons.codec.binary.Base64

version = Library.version
group = Library.group

plugins {
kotlin("jvm") version Versions.kotlin

signing
`maven-publish`
id("io.codearte.nexus-staging") version "0.30.0"
id("com.vanniktech.maven.publish") version "0.36.0"
}

repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots")

}

dependencies {
Expand All @@ -31,98 +26,49 @@ dependencies {
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}

tasks.compileKotlin {
kotlinOptions.jvmTarget = "1.8"
kotlin {
jvmToolchain(11)
}

apply<EmojiPlugin>()

val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.main.get().allSource)
}

val javadocJar by tasks.registering(Jar::class) {
group = JavaBasePlugin.DOCUMENTATION_GROUP
archiveClassifier.set("javadoc")
}

tasks.withType<PublishToMavenRepository>().configureEach {
doFirst { require(!Library.isUndefined) { "No release/snapshot version found." } }
}

publishing {
publications {
create<MavenPublication>(Library.name) {
from(components["kotlin"])
groupId = Library.group
artifactId = Library.name
version = Library.version

artifact(sourcesJar.get())

pom {
name.set(Library.name)
description.set(Library.description)
url.set(Library.description)
mavenPublishing {
coordinates(Library.group, Library.name, Library.version)

organization {
name.set("Kord")
url.set(Library.projectUrl)
}
publishToMavenCentral(automaticRelease = true)
signAllPublications()

developers {
developer {
name.set("The Kord Team")
}
}
pom {
name.set(Library.name)
description.set(Library.description)
url.set(Library.projectUrl)

issueManagement {
system.set("GitHub")
url.set("${Library.projectUrl}/issues")
}
organization {
name.set("Kord")
url.set(Library.projectUrl)
}

licenses {
license {
name.set("MIT")
url.set("https://opensource.org/licenses/MIT")
}
}
scm {
connection.set("scm:git:ssh://github.com/kordlib/kordx.emoji.git")
developerConnection.set("scm:git:ssh://git@github.com:kordlib/kordx.emoji.git")
url.set(Library.projectUrl)
}
developers {
developer {
name.set("The Kord Team")
}
}

if (!isJitPack) {
repositories {
maven {
url = if (Library.isSnapshot) uri(Repo.snapshotsUrl)
else uri(Repo.releasesUrl)
issueManagement {
system.set("GitHub")
url.set("${Library.projectUrl}/issues")
}

credentials {
username = System.getenv("NEXUS_USER")
password = System.getenv("NEXUS_PASSWORD")
}
}
}
licenses {
license {
name.set("MIT")
url.set("https://opensource.org/licenses/MIT")
}

}
}

}

if (!isJitPack && Library.isRelease) {
signing {
val signingKey = findProperty("signingKey")?.toString()
val signingPassword = findProperty("signingPassword")?.toString()
if (signingKey != null && signingPassword != null) {
useInMemoryPgpKeys(String(Base64().decode(signingKey.toByteArray())), signingPassword)
scm {
connection.set("scm:git:ssh://github.com/kordlib/kordx.emoji.git")
developerConnection.set("scm:git:ssh://git@github.com:kordlib/kordx.emoji.git")
url.set(Library.projectUrl)
}
sign(publishing.publications[Library.name])
}
}

nexusStaging { }
21 changes: 10 additions & 11 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
plugins {
groovy
`kotlin-dsl`
kotlin("jvm") version "1.7.10"
kotlin("plugin.serialization") version "1.7.10"
kotlin("jvm") version "2.3.10"
kotlin("plugin.serialization") version "2.3.10"
}

repositories {
Expand All @@ -11,14 +9,15 @@ repositories {
}

dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3")
implementation("com.squareup:kotlinpoet:1.12.0")
implementation("org.apache.commons:commons-text:1.9")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.10.0")
implementation("com.squareup:kotlinpoet:2.2.0")
implementation("org.apache.commons:commons-text:1.15.0")
}

tasks.compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs = listOf("-opt-in=kotlin.ExperimentalStdlibApi")
kotlin {
jvmToolchain(11)

compilerOptions {
freeCompilerArgs.set(listOf("-opt-in=kotlin.ExperimentalStdlibApi"))
}
}
34 changes: 9 additions & 25 deletions buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
@@ -1,41 +1,25 @@
object Versions {
const val kotlin = "1.7.10"
const val kotlin = "2.3.10"
const val kordRange = "[0.8,)"
}

/**
* Whether the process has been invoked by JitPack
*/
val isJitPack get() = "true" == System.getenv("JITPACK")

object Library {
const val name = "emoji"
const val group = "dev.kord.x"
const val description = "Discord Emoji constants for Kord"
const val projectUrl = "https://github.com/kordlib/kordx.emoji"

val version: String
get() = if (isJitPack) System.getenv("RELEASE_TAG")
else {
get() {
val tag = System.getenv("GITHUB_TAG_NAME")
val branch = System.getenv("GITHUB_BRANCH_NAME")
when {

return when {
!tag.isNullOrBlank() -> tag
!branch.isNullOrBlank() && branch.startsWith("refs/heads/") ->
branch.substringAfter("refs/heads/").replace("/", "-") + "-SNAPSHOT"

else -> "undefined"
}

}
val isSnapshot: Boolean get() = version.endsWith("-SNAPSHOT")
const val description = "Discord Emoji constants for Kord"
const val projectUrl = "https://github.com/kordlib/kordx.emoji"
/**
* Whether the current API is considered stable, and should be compared to the 'golden' API dump.
*/
val isRelease: Boolean get() = !isSnapshot && !isUndefined

val isUndefined get() = version == "undefined"
}

object Repo {
const val releasesUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
const val snapshotsUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
5 changes: 3 additions & 2 deletions buildSrc/src/main/kotlin/dev/kord/x/emoji/Generator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ data class EmojiItem(
val names: List<String>,
val surrogates: String,
val unicodeVersion: Double,
val spriteIndex: Int? = 0,
val hasDiversity: Boolean = false,
val hasMultiDiversity: Boolean = false,
val diversityChildren: List<EmojiItem> = emptyList(),
val diversityChildren: List<Int> = emptyList(),
val diversity: List<String> = emptyList(),
val hasDiversityParent: Boolean = false,
val hasMultiDiversityParent: Boolean = false
Expand Down Expand Up @@ -146,7 +147,7 @@ class EmojiPlugin : Plugin<Project> {
}
}

fun String.toCamelCase() = snakeCase.replace(decapitalize()) { result -> result.value.drop(1).toUpperCase() }
fun String.toCamelCase() = snakeCase.replace(replaceFirstChar { it.lowercase() }) { result -> result.value.drop(1).uppercase() }

inline fun buildProperty(name: String, type: TypeName, builder: PropertySpec.Builder.() -> Unit) = with(PropertySpec.builder(name, type)) {
builder()
Expand Down
41,310 changes: 41,309 additions & 1 deletion buildSrc/src/main/resources/emojis.json

Large diffs are not rendered by default.

Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 4 additions & 3 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Wed Feb 05 15:19:42 CET 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading
Loading