paneship 1.0.0

A blazingly fast, high-performance shell prompt optimized for tmux and large Git repositories
name: CI

on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry
        uses: Swatinem/rust-cache@v2

      - name: Run tests
        run: cargo test

      - name: Run clippy
        run: cargo clippy -- -D warnings

      - name: Check formatting
        run: cargo fmt -- --check

  build:
    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry
        uses: Swatinem/rust-cache@v2

      - name: Build
        run: cargo build --release

      - name: Upload release artifact
        uses: actions/upload-artifact@v4
        with:
          name: paneship-${{ runner.os }}
          path: target/release/paneship

  release:
    name: Release
    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
    needs: build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Build
        run: cargo build --release

      - name: Rename artifact
        shell: bash
        run: |
          EXTENSION=""
          if [ "${{ runner.os }}" = "Windows" ]; then EXTENSION=".exe"; fi
          mv target/release/paneship${EXTENSION} paneship${EXTENSION}

      - name: Create Release
        uses: softprops/action-gh-release@v2
        with:
          files: paneship*
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}