diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2419ce4..9042030 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,17 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + version: 2 updates: - package-ecosystem: gradle diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..d32ed96 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,57 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Publish + +on: + release: + types: [published] + +jobs: + publish: + name: Release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + + - uses: gradle/actions/setup-gradle@v3 + + - name: Create .gpg key + run: | + echo $GPG_KEY_ARMOR | base64 --decode > ./release.asc + gpg --quiet --output $GITHUB_WORKSPACE/release.gpg --dearmor ./release.asc + + echo "Build and publish" + sed -i -e "s,mavenCentralUsername=,mavenCentralUsername=$SONATYPE_USERNAME,g" gradle.properties + SONATYPE_PASSWORD_ESCAPED=$(printf '%s\n' "$SONATYPE_PASSWORD" | sed -e 's/[\/&]/\\&/g') + sed -i -e "s,mavenCentralPassword=,mavenCentralPassword=$SONATYPE_PASSWORD_ESCAPED,g" gradle.properties + sed -i -e "s,signing.keyId=,signing.keyId=$GPG_KEY_ID,g" gradle.properties + sed -i -e "s,signing.password=,signing.password=$GPG_PASSWORD,g" gradle.properties + sed -i -e "s,signing.secretKeyRingFile=,signing.secretKeyRingFile=$GITHUB_WORKSPACE/release.gpg,g" gradle.properties + env: + GPG_KEY_ARMOR: "${{ secrets.SYNCED_GPG_KEY_ARMOR }}" + GPG_KEY_ID: ${{ secrets.SYNCED_GPG_KEY_ID }} + GPG_PASSWORD: ${{ secrets.SYNCED_GPG_KEY_PASSWORD }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_TOKEN_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_TOKEN }} + + - name: Publish to Maven Central + run: ./gradlew publishToMavenCentral + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_TOKEN }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_TOKEN_PASSWORD }} diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..681a4f0 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,35 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Release Please + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v4 + id: release + with: + token: ${{ secrets.SYNCED_GITHUB_TOKEN_REPO }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index debecb2..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Release -on: - push: - branches: [ main ] - workflow_dispatch: - -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - token: ${{ secrets.SYNCED_GITHUB_TOKEN_REPO }} - - uses: gradle/actions/wrapper-validation@v3 - - name: Create .gpg key - run: | - echo $GPG_KEY_ARMOR | base64 --decode > ./release.asc - gpg --quiet --output $GITHUB_WORKSPACE/release.gpg --dearmor ./release.asc - - echo "Build and publish" - sed -i -e "s,mavenCentralUsername=,mavenCentralUsername=$SONATYPE_USERNAME,g" gradle.properties - SONATYPE_PASSWORD_ESCAPED=$(printf '%s\n' "$SONATYPE_PASSWORD" | sed -e 's/[\/&]/\\&/g') - sed -i -e "s,mavenCentralPassword=,mavenCentralPassword=$SONATYPE_PASSWORD_ESCAPED,g" gradle.properties - sed -i -e "s,signing.keyId=,signing.keyId=$GPG_KEY_ID,g" gradle.properties - sed -i -e "s,signing.password=,signing.password=$GPG_PASSWORD,g" gradle.properties - sed -i -e "s,signing.secretKeyRingFile=,signing.secretKeyRingFile=$GITHUB_WORKSPACE/release.gpg,g" gradle.properties - env: - GPG_KEY_ARMOR: "${{ secrets.SYNCED_GPG_KEY_ARMOR }}" - GPG_KEY_ID: ${{ secrets.SYNCED_GPG_KEY_ID }} - GPG_PASSWORD: ${{ secrets.SYNCED_GPG_KEY_PASSWORD }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_TOKEN_PASSWORD }} - SONATYPE_USERNAME: ${{ secrets.SONATYPE_TOKEN }} - - name: Semantic Release - uses: cycjimmy/semantic-release-action@v3 - with: - extra_plugins: | - "@semantic-release/commit-analyzer" - "@semantic-release/release-notes-generator" - "@google/semantic-release-replace-plugin" - "@semantic-release/exec" - "@semantic-release/git - "@semantic-release/github - env: - GH_TOKEN: ${{ secrets.SYNCED_GITHUB_TOKEN_REPO }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..c04b615 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.0.0" +} \ No newline at end of file diff --git a/.releaserc b/.releaserc deleted file mode 100644 index 8649904..0000000 --- a/.releaserc +++ /dev/null @@ -1,25 +0,0 @@ -branches: - - main -plugins: - - "@semantic-release/commit-analyzer" - - "@semantic-release/release-notes-generator" - - - "@google/semantic-release-replace-plugin" - - replacements: - - files: - - "build.gradle.kts" - from: "\\bversion = '.*'" - to: "version = '${nextRelease.version}'" - - files: - - "README.md" - from: ":[0-9].[0-9].[0-9]" - to: ":${nextRelease.version}" - - - "@semantic-release/exec" - - prepareCmd: "./gradlew build --warn --stacktrace" - publishCmd: "./gradlew publishToMavenCentral --warn --stacktrace" - - - "@semantic-release/git" - - assets: - - "build.gradle.kts" - - "*.md" - - "@semantic-release/github" -options: - debug: true diff --git a/README.md b/README.md index b42e98d..63381e2 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,10 @@ This repository contains RxJava bindings for the [Maps SDK for Android](maps-sdk ```groovy dependencies { // RxJava bindings for the Maps SDK - implementation 'com.google.maps.android:maps-rx:1.0.0' + implementation 'com.google.maps.android:maps-rx:1.0.0' // {x-release-please-version} // RxJava bindings for the Places SDK - implementation 'com.google.maps.android:places-rx:1.0.0' + implementation 'com.google.maps.android:places-rx:1.0.0' // {x-release-please-version} // It is recommended to also include the latest Maps SDK, Places SDK and RxJava so you // have the latest features and bug fixes. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index da4c3c5..ef66262 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + plugins { id("com.android.application") id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") diff --git a/build.gradle.kts b/build.gradle.kts index b7cefb3..b3dabb6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -42,7 +42,10 @@ plugins { // Shared configs allprojects { group = "com.google.maps.android" + // {x-release-please-start-version} version = "1.0.0" + // {x-release-please-end} + repositories { google() diff --git a/docs/build.gradle.kts b/docs/build.gradle.kts index 4b28c90..7da3ddd 100644 --- a/docs/build.gradle.kts +++ b/docs/build.gradle.kts @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + plugins { kotlin("jvm") apply false id("org.jetbrains.dokka") diff --git a/gradle.properties b/gradle.properties index a761531..fc6f193 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,6 +20,7 @@ android.enableJetifier=false # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official + # variables required to allow build.gradle to parse, # override in ~/.gradle/gradle.properties signing.keyId= diff --git a/maps-rx/build.gradle.kts b/maps-rx/build.gradle.kts index ddcb142..dc5a76a 100644 --- a/maps-rx/build.gradle.kts +++ b/maps-rx/build.gradle.kts @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + android { lint { sarifOutput = file("$buildDir/reports/lint-results.sarif") diff --git a/places-rx/build.gradle.kts b/places-rx/build.gradle.kts index 1d92ca0..d9179b2 100644 --- a/places-rx/build.gradle.kts +++ b/places-rx/build.gradle.kts @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + android { lint { sarifOutput = file("$buildDir/reports/lint-results.sarif") diff --git a/places-rx/src/main/AndroidManifest.xml b/places-rx/src/main/AndroidManifest.xml index 44008a4..9b8e936 100644 --- a/places-rx/src/main/AndroidManifest.xml +++ b/places-rx/src/main/AndroidManifest.xml @@ -1,4 +1,20 @@ + + \ No newline at end of file diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPhotoSingle.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPhotoSingle.kt index ae8525f..95b5059 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPhotoSingle.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPhotoSingle.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places import com.google.android.libraries.places.api.model.PhotoMetadata diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPlaceSingle.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPlaceSingle.kt index 66929ad..0c33a48 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPlaceSingle.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFetchPlaceSingle.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places import com.google.android.libraries.places.api.model.Place diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindAutocompletePredictionsSingle.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindAutocompletePredictionsSingle.kt index 3280ddc..522f819 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindAutocompletePredictionsSingle.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindAutocompletePredictionsSingle.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places import com.google.android.libraries.places.api.net.FindAutocompletePredictionsRequest diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindCurrentPlaceSingle.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindCurrentPlaceSingle.kt index 790eb4e..ebb3035 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindCurrentPlaceSingle.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/PlacesClientFindCurrentPlaceSingle.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places import androidx.annotation.RequiresPermission diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/internal/MainThreadTaskSingle.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/internal/MainThreadTaskSingle.kt index 2becc6d..84b733e 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/internal/MainThreadTaskSingle.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/internal/MainThreadTaskSingle.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places.internal import com.google.android.gms.tasks.CancellationTokenSource diff --git a/places-rx/src/main/java/com/google/maps/android/rx/places/internal/TaskCompletionListener.kt b/places-rx/src/main/java/com/google/maps/android/rx/places/internal/TaskCompletionListener.kt index 78b1aef..55ab276 100644 --- a/places-rx/src/main/java/com/google/maps/android/rx/places/internal/TaskCompletionListener.kt +++ b/places-rx/src/main/java/com/google/maps/android/rx/places/internal/TaskCompletionListener.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.maps.android.rx.places.internal import com.google.android.gms.tasks.CancellationTokenSource diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..faa4ba9 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,12 @@ +{ + "release-type": "simple", + "packages": { + ".": { + "release-type": "simple", + "extra-files": [ + "build.gradle.kts", + "README.md" + ] + } + } +} diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 974a102..2ba8ff6 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + plugins { id("com.android.library") id("kotlin-android") diff --git a/shared/src/main/AndroidManifest.xml b/shared/src/main/AndroidManifest.xml index 44008a4..9b8e936 100644 --- a/shared/src/main/AndroidManifest.xml +++ b/shared/src/main/AndroidManifest.xml @@ -1,4 +1,20 @@ + + \ No newline at end of file