Skip to content
Merged
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
143 changes: 111 additions & 32 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,121 @@
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project uses a **date-based versioning scheme** (`YYYY.MM.DD`).
and this project uses a **date-based versioning scheme** (`YYYY.MM.DD`).

Legend: 🆕 New • ❌ Removed • 🟢 Patch • 🔵 Minor • 🔴 Major

## [Unreleased]

## [2025.10.24]

| Component | Version | Status | Prev.<br>Version |
|:------------------------------------------------|:-------:|:------:|:----------------:|
| **Keypop Dependencies** | | | |
| [keypop-reader-java-api] | `2.0.1` | | |
| [keypop-calypso-card-java-api] | `2.1.2` | | |
| [keypop-calypso-crypto-legacysam-java-api] | `0.7.0` | | |
| [keypop-storagecard-java-api] | `0.3.0` | | |
| | | | |
| **Keyple Core** | | | |
| [keyple-common-java-api] | `2.0.2` | | |
| [keyple-plugin-storagecard-java-api] | `1.0.0` | | |
| [keyple-service-java-lib] | `3.3.6` | 🟢 | `3.3.5` |
| [keyple-service-resource-java-lib] | `3.1.0` | | |
| [keyple-util-java-lib] | `2.4.0` | | |
| | | | |
| **Keyple Distributed** | | | |
| [keyple-distributed-local-java-lib] | `2.5.2` | | |
| [keyple-distributed-network-java-lib] | `2.5.1` | | |
| [keyple-distributed-remote-java-lib] | `2.5.1` | | |
| | | | |
| **Keyple Interop** | | | |
| [keyple-interop-jsonapi-client-kmp-lib] | `0.1.6` | | |
| [keyple-interop-localreader-nfcmobile-kmp-lib] | `0.1.6` | | |
| | | | |
| **Keyple Card Extensions** | | | |
| [keyple-card-calypso-java-lib] | `3.1.9` | | |
| [keyple-card-calypso-crypto-legacysam-java-lib] | `0.9.0` | | |
| [keyple-card-calypso-crypto-pki-java-lib] | `0.2.3` | | |
| [keyple-card-generic-java-lib] | `3.1.2` | | |
| | | | |
| **Keyple Reader Plugins** | | | |
| [keyple-plugin-android-nfc-java-lib] | `3.1.0` | | |
| [keyple-plugin-android-omapi-java-lib] | `2.1.0` | | |
| [keyple-plugin-cardresource-java-lib] | `2.0.1` | | |
| [keyple-plugin-pcsc-java-lib] | `2.5.3` | 🟢 | `2.5.2` |
| [keyple-plugin-stub-java-lib] | `2.2.1` | | |

## [2025.09.12]
First publication of the **Keyple Java BOM**.
This release defines a consistent set of versions for **Keyple** and **Keypop** artifacts.
### Keypop Dependencies
- `org.eclipse.keypop:keypop-reader-java-api:2.0.1`
- `org.eclipse.keypop:keypop-calypso-card-java-api:2.1.2`
- `org.eclipse.keypop:keypop-calypso-crypto-legacysam-java-api:0.7.0`
- `org.eclipse.keypop:keypop-storagecard-java-api:0.3.0`
### Keyple Core
- `org.eclipse.keyple:keyple-common-java-api:2.0.2`
- `org.eclipse.keyple:keyple-plugin-storagecard-java-api:1.0.0`
- `org.eclipse.keyple:keyple-service-java-lib:3.3.5`
- `org.eclipse.keyple:keyple-service-resource-java-lib:3.1.0`
- `org.eclipse.keyple:keyple-util-java-lib:2.4.0`
### Keyple Distributed
- `org.eclipse.keyple:keyple-distributed-local-java-lib:2.5.2`
- `org.eclipse.keyple:keyple-distributed-network-java-lib:2.5.1`
- `org.eclipse.keyple:keyple-distributed-remote-java-lib:2.5.1`
### Keyple Interop
- `org.eclipse.keyple:keyple-interop-jsonapi-client-kmp-lib:0.1.6` (+ JVM, Android, iOS variants)
- `org.eclipse.keyple:keyple-interop-localreader-nfcmobile-kmp-lib:0.1.6` (+ JVM, Android, iOS variants)
### Keyple Card Extensions
- `org.eclipse.keyple:keyple-card-calypso-java-lib:3.1.9`
- `org.eclipse.keyple:keyple-card-calypso-crypto-legacysam-java-lib:0.9.0`
- `org.eclipse.keyple:keyple-card-calypso-crypto-pki-java-lib:0.2.3`
- `org.eclipse.keyple:keyple-card-generic-java-lib:3.1.2`
### Keyple Reader Plugins
- `org.eclipse.keyple:keyple-plugin-android-nfc-java-lib:3.1.0`
- `org.eclipse.keyple:keyple-plugin-android-omapi-java-lib:2.1.0`
- `org.eclipse.keyple:keyple-plugin-cardresource-java-lib:2.0.1`
- `org.eclipse.keyple:keyple-plugin-pcsc-java-lib:2.5.2`
- `org.eclipse.keyple:keyple-plugin-stub-java-lib:2.2.1`

[Unreleased]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.09.12...HEAD

| Component | Version | Status |
|:------------------------------------------------|:-------:|:------:|
| **Keypop Dependencies** | | |
| [keypop-reader-java-api] | `2.0.1` | 🆕 |
| [keypop-calypso-card-java-api] | `2.1.2` | 🆕 |
| [keypop-calypso-crypto-legacysam-java-api] | `0.7.0` | 🆕 |
| [keypop-storagecard-java-api] | `0.3.0` | 🆕 |
| | | |
| **Keyple Core** | | |
| [keyple-common-java-api] | `2.0.2` | 🆕 |
| [keyple-plugin-storagecard-java-api] | `1.0.0` | 🆕 |
| [keyple-service-java-lib] | `3.3.5` | 🆕 |
| [keyple-service-resource-java-lib] | `3.1.0` | 🆕 |
| [keyple-util-java-lib] | `2.4.0` | 🆕 |
| | | |
| **Keyple Distributed** | | |
| [keyple-distributed-local-java-lib] | `2.5.2` | 🆕 |
| [keyple-distributed-network-java-lib] | `2.5.1` | 🆕 |
| [keyple-distributed-remote-java-lib] | `2.5.1` | 🆕 |
| | | |
| **Keyple Interop** | | |
| [keyple-interop-jsonapi-client-kmp-lib] | `0.1.6` | 🆕 |
| [keyple-interop-localreader-nfcmobile-kmp-lib] | `0.1.6` | 🆕 |
| | | |
| **Keyple Card Extensions** | | |
| [keyple-card-calypso-java-lib] | `3.1.9` | 🆕 |
| [keyple-card-calypso-crypto-legacysam-java-lib] | `0.9.0` | 🆕 |
| [keyple-card-calypso-crypto-pki-java-lib] | `0.2.3` | 🆕 |
| [keyple-card-generic-java-lib] | `3.1.2` | 🆕 |
| | | |
| **Keyple Reader Plugins** | | |
| [keyple-plugin-android-nfc-java-lib] | `3.1.0` | 🆕 |
| [keyple-plugin-android-omapi-java-lib] | `2.1.0` | 🆕 |
| [keyple-plugin-cardresource-java-lib] | `2.0.1` | 🆕 |
| [keyple-plugin-pcsc-java-lib] | `2.5.2` | 🆕 |
| [keyple-plugin-stub-java-lib] | `2.2.1` | 🆕 |

[Unreleased]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.10.24...HEAD
[2025.10.24]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.09.12...2025.10.24
[2025.09.12]: https://github.com/eclipse-keyple/keyple-java-bom/releases/tag/2025.09.12

[keypop-reader-java-api]: https://github.com/eclipse-keypop/keypop-reader-java-api/releases
[keypop-calypso-card-java-api]: https://github.com/eclipse-keypop/keypop-calypso-card-java-api/releases
[keypop-calypso-crypto-legacysam-java-api]: https://github.com/eclipse-keypop/keypop-calypso-crypto-legacysam-java-api/releases
[keypop-storagecard-java-api]: https://github.com/eclipse-keypop/keypop-storagecard-java-api/releases

[keyple-common-java-api]: https://github.com/eclipse-keyple/keyple-common-java-api/releases
[keyple-plugin-storagecard-java-api]: https://github.com/eclipse-keyple/keyple-plugin-storagecard-java-api/releases
[keyple-service-java-lib]: https://github.com/eclipse-keyple/keyple-service-java-lib/releases
[keyple-service-resource-java-lib]: https://github.com/eclipse-keyple/keyple-service-resource-java-lib/releases
[keyple-util-java-lib]: https://github.com/eclipse-keyple/keyple-util-java-lib/releases

[keyple-distributed-local-java-lib]: https://github.com/eclipse-keyple/keyple-distributed-local-java-lib/releases
[keyple-distributed-network-java-lib]: https://github.com/eclipse-keyple/keyple-distributed-network-java-lib/releases
[keyple-distributed-remote-java-lib]: https://github.com/eclipse-keyple/keyple-distributed-remote-java-lib/releases

[keyple-interop-jsonapi-client-kmp-lib]: https://github.com/eclipse-keyple/keyple-interop-jsonapi-client-kmp-lib/releases
[keyple-interop-localreader-nfcmobile-kmp-lib]: https://github.com/eclipse-keyple/keyple-interop-localreader-nfcmobile-kmp-lib/releases

[keyple-card-calypso-java-lib]: https://github.com/eclipse-keyple/keyple-card-calypso-java-lib/releases
[keyple-card-calypso-crypto-legacysam-java-lib]: https://github.com/eclipse-keyple/keyple-card-calypso-crypto-legacysam-java-lib/releases
[keyple-card-calypso-crypto-pki-java-lib]: https://github.com/eclipse-keyple/keyple-card-calypso-crypto-pki-java-lib/releases
[keyple-card-generic-java-lib]: https://github.com/eclipse-keyple/keyple-card-generic-java-lib/releases

[keyple-plugin-android-nfc-java-lib]: https://github.com/eclipse-keyple/keyple-plugin-android-nfc-java-lib/releases
[keyple-plugin-android-omapi-java-lib]: https://github.com/eclipse-keyple/keyple-plugin-android-omapi-java-lib/releases
[keyple-plugin-cardresource-java-lib]: https://github.com/eclipse-keyple/keyple-plugin-cardresource-java-lib/releases
[keyple-plugin-pcsc-java-lib]: https://github.com/eclipse-keyple/keyple-plugin-pcsc-java-lib/releases
[keyple-plugin-stub-java-lib]: https://github.com/eclipse-keyple/keyple-plugin-stub-java-lib/releases
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dependencies {
// Keyple core
api("org.eclipse.keyple:keyple-common-java-api:2.0.2")
api("org.eclipse.keyple:keyple-plugin-storagecard-java-api:1.0.0")
api("org.eclipse.keyple:keyple-service-java-lib:3.3.5")
api("org.eclipse.keyple:keyple-service-java-lib:3.3.6")
api("org.eclipse.keyple:keyple-service-resource-java-lib:3.1.0")
api("org.eclipse.keyple:keyple-util-java-lib:2.4.0")
// Keyple distributed
Expand Down Expand Up @@ -61,7 +61,7 @@ dependencies {
api("org.eclipse.keyple:keyple-plugin-android-nfc-java-lib:3.1.0")
api("org.eclipse.keyple:keyple-plugin-android-omapi-java-lib:2.1.0")
api("org.eclipse.keyple:keyple-plugin-cardresource-java-lib:2.0.1")
api("org.eclipse.keyple:keyple-plugin-pcsc-java-lib:2.5.2")
api("org.eclipse.keyple:keyple-plugin-pcsc-java-lib:2.5.3")
api("org.eclipse.keyple:keyple-plugin-stub-java-lib:2.2.1")
}
}
Expand Down
169 changes: 169 additions & 0 deletions tools/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Automatic CHANGELOG Update Script

## Description

`update_changelog.py` is a Python script that **automates the update** of the `CHANGELOG.md` file based on version changes detected in `build.gradle.kts`.

## Features

- **Automatic change detection** between `build.gradle.kts` and the latest version in `CHANGELOG.md`:
- 🆕 **New dependencies**: automatically detected
- ❌ **Removed dependencies**: displayed in their original category with their last version
- 🟢 **Patch**: x.y.z → x.y.(z+n)
- 🔵 **Minor**: x.y.z → x.(y+n).z
- 🔴 **Major**: x.y.z → (x+n).y.z
- Grouping of KMP libraries (a single line for the base library)
- Preservation of the dependencies' order as defined in `build.gradle.kts`
- **Automatic update of reference links**:
- Version links `[Unreleased]` and `[version]`
- Automatic addition of links for new dependencies (from organization eclipse-keypop or eclipse-keyple)
- Automatic removal of links for dependencies that have been dropped
- Compliance with the "Keep a Changelog" format

-----

## Prerequisites

- Python 3.7 or higher
- The `build.gradle.kts` and `CHANGELOG.md` files must be located at the project root

-----

## Usage

**Important**: The script must be executed from the project root directory.

### Basic Usage (Current Date)

```bash
# On Windows
.\tools\update_changelog.bat

# On Linux/Mac
./tools/update_changelog.sh

# With Python directly (all systems)
python tools/update_changelog.py
```

This command uses the current date in the format `YYYY.MM.DD` as the version number.

### Specifying a Custom Date

```bash
# On Windows
.\tools\update_changelog.bat 2025.10.30

# On Linux/Mac
./tools/update_changelog.sh 2025.10.30

# With Python directly (all systems)
python tools/update_changelog.py 2025.10.30
```

The date format must be `YYYY.MM.DD`.

-----

## Behavior

1. **Dependency Parsing**: The script analyzes `build.gradle.kts` and extracts all dependencies while preserving their order
2. **Comparison**: It compares these versions with those in the latest section of `CHANGELOG.md`
3. **Change Detection**:
- If no changes are detected: displays a message and makes no modification
- If changes are detected: creates a new section with the appropriate statuses
4. **Update**: Adds the new section after `[Unreleased]` and updates the reference links

-----

## Examples

### Example 1: No Changes

```bash
$ python tools/update_changelog.py
Updating CHANGELOG.md for version 2025.10.23...
Found 23 dependencies in build.gradle.kts
Latest CHANGELOG version: 2025.10.23
No changes detected between build.gradle.kts and the latest CHANGELOG version.
```

### Example 2: With Changes

```bash
$ python tools/update_changelog.py 2025.10.30
Updating CHANGELOG.md for version 2025.10.30...
Found 23 dependencies in build.gradle.kts
Latest CHANGELOG version: 2025.10.23
CHANGELOG.md updated successfully with version 2025.10.30
```

The `CHANGELOG.md` file will be updated with:

- A new section `## [2025.10.30]`
- The statuses 🟢/🔵/🔴 for each modified component
- The "Prev. Version" column showing the old version
- Updated links:
```
[Unreleased]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.10.30...HEAD
[2025.10.30]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.10.23...2025.10.30
```

-----

## Generated Structure

The new section follows this format:

```markdown
## [2025.10.30]

| Component | Version | Status | Prev.<br>Version |
|:-----------------------------------|:-------:|:------:|:----------------:|
| **Keypop Dependencies** | | | |
| [keypop-reader-java-api] | `2.0.1` | | |
| ... | | | |
| | | | |
| **Keyple Core** | | | |
| [keyple-common-java-api] | `2.0.2` | | |
| [keyple-service-java-lib] | `3.4.0` | 🔵 | `3.3.6` |
| [keyple-service-resource-java-lib] | `4.0.0` | 🔴 | `3.1.0` |
| [keyple-test-java-lib] | `1.0.0` | 🆕 | |
| [keyple-util-java-lib] | `2.4.0` | ❌ | |
| ... | | | |
```

In this example:

- `keyple-service-java-lib`: Minor change (3.3.6 → 3.4.0) marked 🔵
- `keyple-service-resource-java-lib`: Major change (3.1.0 → 4.0.0) marked 🔴
- `keyple-test-java-lib`: New dependency marked 🆕
- `keyple-util-java-lib`: Removed dependency marked ❌

### Reference Links Update

The script also automatically updates the links at the bottom of the file:

```markdown
[Unreleased]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.10.30...HEAD
[2025.10.30]: https://github.com/eclipse-keyple/keyple-java-bom/compare/2025.10.23...2025.10.30

[keypop-reader-java-api]: https://github.com/eclipse-keypop/keypop-reader-java-api/releases
...
[keyple-test-java-lib]: https://github.com/eclipse-keyple/keyple-test-java-lib/releases
...
```

- **New dependencies**: the link is automatically added in the appropriate section (eclipse-keypop or eclipse-keyple)
- **Removed dependencies**: the link is automatically removed

-----

## Notes

- The script respects the exact order of dependencies as defined in `build.gradle.kts`
- KMP libraries with variants (-jvm, -android, -iosarm64, etc.) are grouped into a single line
- Only components whose version has changed will have a status and a value in "Prev. Version"
- New dependencies (🆕) and version changes (🟢🔵🔴) appear in the order of the `build.gradle.kts` file
- Removed dependencies (❌) appear after the current dependencies of their original category
- If an entire category is removed, it appears at the end of the table with its dependencies marked ❌
15 changes: 15 additions & 0 deletions tools/update_changelog.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@echo off
REM Script to update CHANGELOG.md
REM Usage: update_changelog.bat [YYYY.MM.DD]

REM Save current directory
set CURRENT_DIR=%CD%

REM Move to project root directory (parent of tools folder)
cd /d "%~dp0.."

REM Execute Python script from tools folder
python "%~dp0update_changelog.py" %*

REM Restore current directory
cd /d "%CURRENT_DIR%"
Loading