testing-language-server 0.1.12

LSP server for testing
Documentation
name: Auto Release

on:
  push:
    branches:
      - main
    paths:
      - Cargo.toml

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  check-version:
    runs-on: ubuntu-latest
    outputs:
      version_changed: ${{ steps.check_version.outputs.version_changed }}
      new_version: ${{ steps.check_version.outputs.new_version }}
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 2
      - name: Check if version changed
        id: check_version
        run: |
          PACKAGE_NAME=$(grep '^name' Cargo.toml | sed 's/name = "\(.*\)"/\1/')
          RELEASED_VERSION=$(cargo search $PACKAGE_NAME --limit 1 | grep -oP '(?<=").*(?=")')
          if [ $? -ne 0 ]; then
            echo "Failed to fetch released version"
            exit 1
          fi
          NEW_VERSION=$(grep '^version' Cargo.toml | sed 's/version = "\(.*\)"/\1/')
          
          if [ "$RELEASED_VERSION" != "$NEW_VERSION" ]; then
            echo "Version changed from $RELEASED_VERSION to $NEW_VERSION"
            echo "version_changed=true" >> $GITHUB_OUTPUT
            echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
          else
            echo "No version change"
          fi

  create-release:
    needs: check-version
    if: needs.check-version.outputs.version_changed == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Create Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh release create v${{ needs.check-version.outputs.new_version }} \
            --title "Release ${{ needs.check-version.outputs.new_version }}" \
            --generate-notes

  publish:
    needs: [check-version, create-release]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - name: Publish to crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: cargo publish --token $CARGO_REGISTRY_TOKEN