subtile 0.4.1

A crate of utils to operate traitements on subtitles
Documentation
name: "Individual Commits Check"
on:
  pull_request:
    types:
      - opened
      - edited
      - reopened
      - synchronize
  pull_request_target:
    types:
      - opened
      - edited
      - reopened
      - synchronize
  push:
    branches-ignore:
      - "wip*"

env:
  RUSTFLAGS: -D warnings
  RUSTDOCFLAGS: -D warnings

jobs:
  check-conventional-commits:
    name: Check Conventional Commits
    runs-on: ubuntu-latest
    concurrency:
      # For a given workflow, if we push to the same branch, cancel all previous builds on that branch.
      # Particularly useful for workflow triggered on release-plz sync.
      # release-plz workflow update de pending pr twice (with cargo readme update)
      group: ${{ github.workflow }}-${{ github.ref }}
      cancel-in-progress: true
    steps:
      - uses: actions/checkout@v4
      - uses: webiny/action-conventional-commits@v1.3.0

  check-push-commits:
    if: ${{ github.event_name == 'push' }}
    strategy:
      fail-fast: false
      matrix:
        commit: ${{ github.event.commits }}

    name: "Check: ${{ matrix.commit.message }}"
    runs-on: ubuntu-latest
    concurrency:
      # For a given workflow, if we push to the same branch, cancel all previous builds on that branch.
      # Particularly useful for workflow triggered on release-plz sync.
      # release-plz workflow update de pending pr twice (with cargo readme update)
      # Note: Include commit message to not cancel job of commit not updated in push
      group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.commit.id }}
      cancel-in-progress: true
    steps:
      - name: "Install rust-toolchain stable"
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          components: clippy, rustfmt

      - name: "Show environment"
        run: |
          rustc -vV
          cargo -vV

      - name: "Checkout"
        uses: actions/checkout@v4
        with:
          ref: "${{ matrix.commit.id }}"

      - uses: Swatinem/rust-cache@v2
        with:
          cache-on-failure: true # useful for don't rebuild cargo-readme and dependencies on fix after failure

      - name: Install cargo-readme
        run: cargo install cargo-readme

      - name: Check spelling of entire workspace
        id: typos_check
        if: $${{ always() }}
        uses: crate-ci/typos@master

      - name: "Taplo check format toml files"
        id: toml_fmt
        if: $${{ always() }}
        uses: gwen-lg/taplo-action@v1
        with:
          format: true
          lint: false

      - name: "Taplo lint toml files"
        id: toml_lint
        if: $${{ always() }}
        uses: gwen-lg/taplo-action@v1
        with:
          format: false
          lint: true

      - name: Check if readme is up to date
        id: cargo_readme
        if: $${{ always() }}
        run: diff README.md <(cargo readme)

      - name: "Cargo formatting"
        id: cargo_fmt
        if: $${{ always() }}
        run: |
          cargo fmt --all -- --check

      - name: "Cargo doc"
        id: cargo_doc
        env:
          RUSTDOCFLAGS: "-D warnings"
        if: $${{ always() }}
        run: cargo doc --locked

      - name: "Cargo clippy"
        id: cargo_clippy
        if: $${{ always() }}
        run: cargo clippy --profile=test --locked

      - name: "Cargo test"
        id: cargo_test
        if: $${{ always() }}
        run: cargo test --locked

      - name: "Some checks failed"
        if: ${{ failure() }}
        run: |
          echo "### :x: Checks Failed!" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "|Job|Status|" >> $GITHUB_STEP_SUMMARY
          echo "|---|------|" >> $GITHUB_STEP_SUMMARY
          echo "|typos|${{ steps.typos_check.outcome}}|" >> $GITHUB_STEP_SUMMARY
          echo "|Cargo fmt|${{ steps.cargo_fmt.outcome }}|" >> $GITHUB_STEP_SUMMARY
          echo "|Taplo fmt|${{ steps.toml_fmt.outcome}}|" >> $GITHUB_STEP_SUMMARY
          echo "|Taplo lint|${{ steps.toml_lint.outcome}}|" >> $GITHUB_STEP_SUMMARY
          echo "|Cargo readme|${{ steps.cargo_readme.outcome }}|" >> $GITHUB_STEP_SUMMARY
          echo "|Cargo doc|${{ steps.cargo_doc.outcome }}|" >> $GITHUB_STEP_SUMMARY
          echo "|Cargo clippy|${{ steps.cargo_clippy.outcome }}|" >> $GITHUB_STEP_SUMMARY
          echo "|Cargo test|${{ steps.cargo_test.outcome }}|" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "Please check the failed jobs and fix where needed." >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          exit 1

      - name: "All checks passed"
        if: ${{ success() }}
        run: |
          echo "### :white_check_mark: Checks Passed!" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY