From 4b2db748ce74724e2812de8bd4b05bd9d8eedf54 Mon Sep 17 00:00:00 2001 From: Lucas Frossard Date: Tue, 31 Oct 2023 16:41:24 -0700 Subject: [PATCH] adding release script --- sdk/build.gradle | 21 +------ sdk/gradle.properties | 16 +++++ sdk/release.gradle | 132 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 19 deletions(-) create mode 100644 sdk/gradle.properties create mode 100644 sdk/release.gradle diff --git a/sdk/build.gradle b/sdk/build.gradle index eee5a7a..9414f5f 100644 --- a/sdk/build.gradle +++ b/sdk/build.gradle @@ -10,6 +10,8 @@ plugins { id 'maven-publish' } +apply from: 'release.gradle' + android { namespace 'com.whatsapp.otp.android.sdk' compileSdk 33 @@ -44,22 +46,3 @@ dependencies { testImplementation 'androidx.test:core:1.5.0' androidTestImplementation 'junit:junit:4.13.2' } - -publishing { - publications { - mavenJava(MavenPublication) { - groupId = "com.whatsapp.otp" - artifactId = "whatsapp-otp-android-sdk" - version = "0.1.0" - - afterEvaluate { - from(components["release"]) - } - } - } - repositories { - maven { - mavenLocal() - } - } -} diff --git a/sdk/gradle.properties b/sdk/gradle.properties new file mode 100644 index 0000000..14e4508 --- /dev/null +++ b/sdk/gradle.properties @@ -0,0 +1,16 @@ +GROUP=com.whatsapp.otp +LIBRARY_VERSION_NAME=0.1.0 + +POM_ARTIFACT_ID=whatsapp-otp-android-sdk +POM_NAME=OtpSdk +POM_PACKAGING=aar +POM_DESCRIPTION=WhatsApp Otp SDK for Android Apps +POM_URL=https://github.com/WhatsApp/WhatsApp-Android-OTP-SDK +POM_SCM_URL=https://github.com/WhatsApp/WhatsApp-Android-OTP-SDK.git +POM_SCM_CONNECTION=scm:git:https://github.com/WhatsApp/WhatsApp-Android-OTP-SDK.git +POM_SCM_DEV_CONNECTION=scm:git:git@github.com:WhatsApp/WhatsApp-Android-OTP-SDK.git +POM_LICENSE_NAME=MIT license +POM_LICENSE_URL=https://github.com/WhatsApp/WhatsApp-Android-OTP-SDK/blob/main/LICENSE +POM_LICENSE_DIST=repo +POM_DEVELOPER_ID=whatsapp +POM_DEVELOPER_NAME=WhatsApp \ No newline at end of file diff --git a/sdk/release.gradle b/sdk/release.gradle new file mode 100644 index 0000000..e269433 --- /dev/null +++ b/sdk/release.gradle @@ -0,0 +1,132 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +apply plugin: 'maven-publish' +apply plugin: 'signing' + +version = LIBRARY_VERSION_NAME +group = GROUP + +def isReleaseBuild() { + return LIBRARY_VERSION_NAME.contains("SNAPSHOT") == false +} + +def getMavenRepositoryUrl() { + return hasProperty('repositoryUrl') ? property('repositoryUrl') : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} + +def getMavenRepositoryUsername() { + return hasProperty('repositoryUsername') ? property('repositoryUsername') : "" +} + +def getMavenRepositoryPassword() { + return hasProperty('repositoryPassword') ? property('repositoryPassword') : "" +} + +afterEvaluate { project -> + task androidJavadoc(type: Javadoc) { + source = android.sourceSets.main.java.source + classpath += files(android.getBootClasspath().join(File.pathSeparator)) + if (JavaVersion.current().isJava8Compatible()) { + options.addStringOption('Xdoclint:none', '-quiet') + } + if (JavaVersion.current().isJava9Compatible()) { + options.addBooleanOption('html5', true) + } + } + + task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) { + archiveClassifier = 'javadoc' + from androidJavadoc.destinationDir + } + + task androidSourcesJar(type: Jar) { + archiveClassifier = 'sources' + from android.sourceSets.main.java.source + } + + artifacts { + archives androidSourcesJar + archives androidJavadocJar + } + + android.libraryVariants.all { variant -> + tasks.androidJavadoc.doFirst { + classpath += files(variant.javaCompileProvider.get().classpath.files.join(File.pathSeparator)) + } + def name = variant.name.capitalize() + task "jar${name}"(type: Jar, dependsOn: variant.javaCompileProvider) { + from variant.javaCompileProvider.get().destinationDir + } + } + + def releaseVariant + android.libraryVariants.all { variant -> + if (variant.buildType.name == 'release') { + releaseVariant = variant.name + } + } + + publishing { + publications { + mavenRelease(MavenPublication) { + groupId GROUP + artifactId POM_ARTIFACT_ID + version LIBRARY_VERSION_NAME + + from components[releaseVariant] + + artifact androidJavadocJar + artifact androidSourcesJar + + pom { + name = POM_NAME + description = POM_DESCRIPTION + url = POM_URL + + scm { + url = POM_SCM_URL + connection = POM_SCM_CONNECTION + developerConnection = POM_SCM_DEV_CONNECTION + } + + licenses { + license { + name = POM_LICENSE_NAME + url = POM_LICENSE_URL + distribution = POM_LICENSE_DIST + } + } + + developers { + developer { + id = POM_DEVELOPER_ID + name = POM_DEVELOPER_NAME + } + } + } + } + } + + repositories { + mavenLocal() + maven { + url getMavenRepositoryUrl() + credentials(PasswordCredentials) { + username = getMavenRepositoryUsername() + password = getMavenRepositoryPassword() + } + } + } + } + + signing { + required { isReleaseBuild() } + publishing.publications.all { publication -> + sign publication + } + } +} \ No newline at end of file