logmv 0.7.0

Logged atomic file move and trash with an append-only JSON-Lines audit trail
Documentation
name: Release

on:
  push:
    tags: ['*']
  workflow_dispatch:

permissions:
  contents: read

jobs:
  version_guard:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - name: Verify tag matches Cargo.toml version
        env:
          TAG: ${{ github.ref_name }}
        run: |
          manifest_version="$(awk -F'"' '/^version = /{print $2; exit}' Cargo.toml)"
          if [ "$TAG" != "$manifest_version" ]; then
            echo "Tag \"$TAG\" does not match Cargo.toml version \"$manifest_version\"" >&2
            exit 1
          fi
          echo "Tag matches Cargo.toml version: $manifest_version"

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 # stable branch tip @ 2026-06-30
        with:
          toolchain: stable
          components: rustfmt, clippy

      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Format
        run: cargo fmt --all --check

      - name: Clippy
        run: cargo clippy --all-targets -- -D warnings

      - name: Test
        run: cargo test

  deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - uses: EmbarkStudios/cargo-deny-action@bb137d7af7e4fb67e5f82a49c4fce4fad40782fe # v2.0.20
        with:
          command: check advisories

  publish:
    needs: [version_guard, test, deny]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 # stable branch tip @ 2026-06-30
        with:
          toolchain: stable

      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Publish to crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
        run: cargo publish --locked

  create_release:
    needs: [publish]
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1