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 nuget add source --username ${{ github.repository_owner }} --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name jellyfin-pre "https://nuget.pkg.github.com/jellyfin/index.json"
        dotnet tool install --global dotnet-outdated-tool
        dotnet outdated -pre Always -u -inc Jellyfin

    - 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.1
      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: Create archive
      uses: vimtor/action-zip@v1.2
      if: github.event_name != 'pull_request'
      with:
        files: |
          ConfusedPolarBear.Plugin.IntroSkipper/bin/Debug/net8.0/ConfusedPolarBear.Plugin.IntroSkipper.dll
        dest:  intro-skipper-${{ env.GIT_HASH }}.zip

    - name: Generate md5
      if: github.event_name != 'pull_request'
      run: |
        md5sum intro-skipper-${{ env.GIT_HASH }}.zip > intro-skipper-${{ env.GIT_HASH }}.md5
        checksum="$(awk '{print $1}' intro-skipper-${{ env.GIT_HASH }}.md5)"
        echo "CHECKSUM=$checksum" >> $GITHUB_ENV

    - name: Publish prerelease
      uses: 8bitDream/action-github-releases@v1.0.0
      if: github.event_name != 'pull_request'
      with:
        repo_token: "${{ secrets.GITHUB_TOKEN }}"
        automatic_release_tag: 10.9/preview
        prerelease: true
        title: intro-skipper-${{ env.GIT_HASH }}
        files: |
          intro-skipper-${{ env.GIT_HASH }}.zip

    - name: Publish prerelease notes
      uses: softprops/action-gh-release@v2.0.4
      if: github.event_name != 'pull_request'
      with:
        tag_name: 10.9/preview
        name: intro-skipper-${{ env.GIT_HASH }}
        append_body: true
        body: |
          ---
          checksum:  ${{ env.CHECKSUM }}
        draft: false
        prerelease: true
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}