camt053 0.4.2

CAMT.053 (ISO 20022) bank statement parser and MT940 converter
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
  workflow_call:

jobs:
  version-check:
    name: Version Consistency Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Check version consistency
        run: |
          # Extract version from Cargo.toml (drop patch version)
          cargo_version=$(sed -nE '/^\s*version\s*=/ {s/.*"([0-9]+)\.([0-9]+)\..*/\1.\2/p; q}' Cargo.toml)

          # Extract version from README.md
          readme_version=$(grep -E 'camt053\s*=\s*"[^"]*"' README.md | head -1 | sed -E 's/.*"([^"]+)".*/\1/')

          echo "Cargo.toml version: $cargo_version"
          echo "README.md version:  $readme_version"

          if [[ "$cargo_version" != "$readme_version" ]]; then
            echo "::error::Version mismatch detected!"
            echo "::error::Cargo.toml has version $cargo_version but README.md has version $readme_version"
            echo "::error::Please update the camt053 version in README.md to match Cargo.toml"
            exit 1
          fi

          echo "✓ Versions match!"

  formatting:
    name: Code Formatting
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt

      - name: Check code formatting
        run: cargo fmt --check

  clippy:
    name: Clippy Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy

      - name: Run clippy
        run: cargo clippy --all-targets --all-features -- -D warnings

  test:
    name: Tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Run tests
        run: cargo test --all-targets --all-features

  docs:
    name: Documentation
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Check documentation
        run: cargo doc --all-features --no-deps
        env:
          RUSTDOCFLAGS: -D warnings