tapes-v2 0.1.5-beta

Atomic dotfiles switcher for Linux and Ricing.
name: Rust Build and Release

on:
  push:
    tags:
      - "v*"

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
    - uses: actions/checkout@v4

    - name: Update repository values
      run: |
        TAG_VERSION=${GITHUB_REF#refs/tags/v}
        files=$(grep -rl "PLACEHORN_VERSION" . --exclude-dir=.git --exclude-dir=target || true)
        if [ -n "$files" ]; then
          echo "$files" | xargs sed -i "s/PLACEHOLDER_VERSION/$TAG_VERSION/g"
        fi

    - name: Build (Release Mode)
      run: cargo build --release --verbose

    - name: Package and Release
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        RAW_BIN="tapes-v2-x86_64-unknown-linux-gnu"
        ARCHIVE_NAME="${RAW_BIN}-${{ github.ref_name }}"
        
        cp target/release/tapes-v2 "$RAW_BIN"

        mkdir -p "$ARCHIVE_NAME"
        cp target/release/tapes-v2 "$ARCHIVE_NAME/"
        tar -czf "${ARCHIVE_NAME}.tgz" "$ARCHIVE_NAME"

        gh release create ${{ github.ref_name }} "$RAW_BIN" "${ARCHIVE_NAME}.tgz" \
          --title "Release ${{ github.ref_name }}" \
          --generate-notes