xdotter 0.2.2

A simple dotfile manager - single binary, no dependencies
name: Release

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

permissions:
  contents: write

jobs:
  # ============================================================
  # 构建多平台二进制
  # ============================================================

  build-linux:
    name: Build (Linux)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Cache dependencies
        uses: Swatinem/rust-cache@v2
      - run: cargo build --release
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: xd-x86_64-unknown-linux-gnu
          path: target/release/xd
          if-no-files-found: error

  build-macos:
    name: Build (macOS)
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Cache dependencies
        uses: Swatinem/rust-cache@v2
      - run: cargo build --release
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: xd-x86_64-apple-darwin
          path: target/release/xd
          if-no-files-found: error

  build-windows:
    name: Build (Windows)
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Cache dependencies
        uses: Swatinem/rust-cache@v2
      - run: cargo build --release
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: xd-x86_64-pc-windows-msvc
          path: target/release/xd.exe
          if-no-files-found: error

  # ============================================================
  # 发布到 GitHub Releases
  # ============================================================

  release:
    name: Release to GitHub
    needs: [build-linux, build-macos, build-windows]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Cache dependencies
        uses: Swatinem/rust-cache@v2

      # Download all artifacts
      - uses: actions/download-artifact@v4
        with:
          path: artifacts

      # Prepare files for release
      - name: Prepare release files
        run: |
          mkdir -p release
          cp artifacts/xd-x86_64-unknown-linux-gnu/xd release/xd-x86_64-unknown-linux-gnu
          cp artifacts/xd-x86_64-apple-darwin/xd release/xd-x86_64-apple-darwin
          cp artifacts/xd-x86_64-pc-windows-msvc/xd.exe release/xd-x86_64-pc-windows-msvc.exe

          # Generate checksums
          cd release
          sha256sum * > SHA256SUMS

      # Create GitHub Release
      - uses: softprops/action-gh-release@v2
        with:
          files: release/*
          generate_release_notes: true
          draft: false
          prerelease: false