name: 'Build Plugin'

on:
  push:
    branches: [ "master" ]
    paths-ignore:
      - '**/README.md'
      - '.github/ISSUE_TEMPLATE/**'
      - 'docs/**'
      - 'images/**'
      - 'manifest.json'
  pull_request:
    branches: [ "master" ]
    paths-ignore:
      - '**/README.md'
      - '.github/ISSUE_TEMPLATE/**'
      - 'docs/**'
      - 'images/**'
      - 'manifest.json'

permissions:
  contents: write
  packages: write

jobs:
  build:
    if: ${{ ! startsWith(github.event.head_commit.message, 'v0.') }}

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4

    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: 8.0.x

    - name: Restore dependencies
      run: dotnet restore

    - name: Embed version info
      run: echo "${{ github.sha }}" > ConfusedPolarBear.Plugin.IntroSkipper/Configuration/version.txt

    - name: Retrieve commit identification
      run: |
        GIT_HASH=$(git rev-parse --short HEAD)
        echo "GIT_HASH=${GIT_HASH}" >> $GITHUB_ENV

    - name: Build
      run: dotnet build --no-restore

    - name: Upload artifact
      uses: actions/upload-artifact@v4.3.6
      if: github.event_name != 'pull_request'
      with:
        name: ConfusedPolarBear.Plugin.IntroSkipper-${{ env.GIT_HASH }}.dll
        path: ConfusedPolarBear.Plugin.IntroSkipper/bin/Debug/net8.0/ConfusedPolarBear.Plugin.IntroSkipper.dll
        if-no-files-found: error

    - name: Upload artifact
      uses: actions/upload-artifact@v4.3.6
      if: github.event_name == 'pull_request'
      with:
        name: ConfusedPolarBear.Plugin.IntroSkipper-${{ github.head_ref }}.dll
        path: ConfusedPolarBear.Plugin.IntroSkipper/bin/Debug/net8.0/ConfusedPolarBear.Plugin.IntroSkipper.dll
        retention-days: 7
        if-no-files-found: error

    - name: Create archive
      if: github.event_name != 'pull_request'
      run: zip -j "intro-skipper-${{ env.GIT_HASH }}.zip" ConfusedPolarBear.Plugin.IntroSkipper/bin/Debug/net8.0/ConfusedPolarBear.Plugin.IntroSkipper.dll

    - name: Create/replace the preview release and upload artifacts
      if: github.event_name != 'pull_request'
      run: |
         gh release delete '10.9/preview' --cleanup-tag --yes || true
         gh release create '10.9/preview' "intro-skipper-${{ env.GIT_HASH }}.zip" --prerelease --title "intro-skipper-${{ env.GIT_HASH }}" --notes "This is a prerelease version."
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}