diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..b35456d --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,24 @@ +name: Publish +on: + release: + types: [released, prereleased] +jobs: + publish: + name: Release build and publish + runs-on: macOS-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 21 + - name: Publish to MavenCentral + run: ./gradlew publishToMavenCentral --no-configuration-cache + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9956913..50a3681 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ out/ .settings .springBeans .sts4-cache +.kotlin bin/ !**/src/main/**/bin/ !**/src/test/**/bin/ diff --git a/README.md b/README.md index 36ae198..437c58f 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ repositories { Then add as a module dependency: ```kotlin dependencies { - implementation("com.github.iamcalledrob:smooth-rounded-corner-shape:1.0.4") + implementation("io.github.iamcalledrob:smooth-rounded-corner-shape:1.0.5") } ``` @@ -57,5 +57,4 @@ Path.smoothRoundedRectangle(smoothing = 0.6f, size = Size(100f, 50f), topLeft = ## Notes -Currently only builds desktop (jvm) and android targets, since androidx.graphics.shapes only supports those targets. -Feel free to make a PR for other platforms if they become supported. +All multiplatform targets are supported. diff --git a/build.gradle.kts b/build.gradle.kts index 8dfdf7b..261a365 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,18 +1,18 @@ import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinMultiplatform -import com.vanniktech.maven.publish.SonatypeHost +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl plugins { - kotlin("multiplatform") version "1.9.23" - id("org.jetbrains.compose") version "1.6.11" - id("com.android.library") version "8.2.0" + kotlin("multiplatform") version "2.2.10" + id("org.jetbrains.kotlin.plugin.compose") version "2.2.10" + id("org.jetbrains.compose") version "1.8.2" + id("com.android.library") version "8.11.1" - id("signing") - id("com.vanniktech.maven.publish") version "0.29.0" + id("com.vanniktech.maven.publish") version "0.34.0" } group = "io.github.iamcalledrob" -version = "1.0.4" +version = "1.0.5" repositories { mavenCentral() @@ -24,44 +24,41 @@ kotlin { jvm() androidTarget() + iosArm64() + iosX64() + iosSimulatorArm64() + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser() + binaries.executable() + } applyDefaultHierarchyTemplate() sourceSets { commonMain { dependencies { - implementation("androidx.graphics:graphics-shapes:1.0.1") + implementation("androidx.graphics:graphics-shapes:1.1.0-beta01") implementation(compose.foundation) } } - // Leaving some hope that androidx.graphics:graphics-shape may eventually support - // non-desktop multiplatform targets too. val nonAndroidMain by creating { dependsOn(commonMain.get()) } + jvmMain.get().dependsOn(nonAndroidMain) + iosMain.get().dependsOn(nonAndroidMain) + wasmJsMain.get().dependsOn(nonAndroidMain) } } android { namespace = "io.github.iamcalledrob.smoothRoundedCornerShape" - compileSdk = 34 + compileSdk = 36 } - - -// --- Signing + Publishing --- -// -// Make sure the following are accessible via gradle.properties. -// If they are missing or invalid, expect cryptic and misleading errors. -// Ideally in ~/.gradle/gradle.properties so it's not checked in to source control: -// - signing.gnupg.keyId, -// - signing.gnupg.password -// - signing.gnupg.secretKeyRingFile -// - mavenCentralUsername -// - mavenCentralPassword - val githubAccount = "iamcalledrob" val githubRepository = "smooth-rounded-corner-shape" val githubUrl = "https://github.com/$githubAccount/$githubRepository" @@ -69,6 +66,10 @@ val email = "me@iamcalledrob.com" val projectDescription = "SmoothRoundedCornerShape" mavenPublishing { + publishToMavenCentral() + + signAllPublications() + coordinates(groupId = group.toString(), artifactId = githubRepository, version = version.toString()) configure( @@ -101,13 +102,4 @@ mavenPublishing { developerConnection.set("scm:git:ssh://git@github.com/$githubAccount/$githubRepository.git") } } - - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - signAllPublications() -} - -signing { - println("Signing...") - useGpgCmd() - sign(publishing.publications) } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 80fdc2c..e870cc2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Sep 05 13:18:42 BST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/commonMain/kotlin/io/github/iamcalledrob/smoothRoundedCornerShape/SmoothCircleShape.kt b/src/commonMain/kotlin/io/github/iamcalledrob/smoothRoundedCornerShape/SmoothCircleShape.kt new file mode 100644 index 0000000..f784436 --- /dev/null +++ b/src/commonMain/kotlin/io/github/iamcalledrob/smoothRoundedCornerShape/SmoothCircleShape.kt @@ -0,0 +1,3 @@ +package io.github.iamcalledrob.smoothRoundedCornerShape + +val SmoothCircleShape = SmoothRoundedCornerShape(percent = 50) \ No newline at end of file