name: Prepare release

on:
  push:
    tags:        
      - release*

permissions:
  contents: write

env:
  THIRD_PARTY_BASE_DIR: 'third-party'

jobs:
  emu-win-all:
    name: Emu win all
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/emu-build-all-win.yml

  emu-win-prep:
    needs: [ emu-win-all ]
    runs-on: windows-2022
    steps:
      # on Windows Git will auto change line ending to CRLF, not preferable
      - name: Ensure LF line ending
        shell: cmd
        working-directory: ${{ github.workspace }}
        run: |
          git config --local core.autocrlf false
          git config --system core.autocrlf false
          git config --global core.autocrlf false

      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

      - name: Clone third-party deps (deps/win)
        uses: actions/checkout@v4
        with:
          ref: 'third-party/deps/win'
          path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win"

## donwload artifacts
      - name: Download emu build artifacts (Win)
        uses: actions/download-artifact@v4
        with:
          path: build/win
          pattern: emu-win-*-${{ github.sha }}
          merge-multiple: true

### package (release mode)
      - name: Package build (release)
        shell: cmd
        working-directory: ${{ github.workspace }}
        run: package_win.bat release

### package (debug mode)
      - name: Package build (debug)
        shell: cmd
        working-directory: ${{ github.workspace }}
        run: package_win.bat debug

### release (debug + release modes) if this is a tag push
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "build/package/win/**/*"



  emu-linux-all:
    name: Emu linux all
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/emu-build-all-linux.yml

  emu-linux-prep:
    needs: [ emu-linux-all ]
    runs-on: ubuntu-22.04
    steps:
      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

      - name: Clone third-party deps (deps/linux)
        uses: actions/checkout@v4
        with:
          ref: 'third-party/deps/linux'
          path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/linux"

## donwload artifacts
      - name: Download emu build artifacts (linux)
        uses: actions/download-artifact@v4
        with:
          path: build/linux
          pattern: emu-linux-*-${{ github.sha }}
          merge-multiple: true

### fix folder permissions! not sure why this fails
      # nested subdirs "build/linux/release" cause permission problems
      - name: Give all permissions to repo folder
        shell: bash
        working-directory: ${{ github.workspace }}
        run: sudo chmod -R 777 "${{ github.workspace }}" && sudo chmod 777 package_linux.sh

### package (release mode)
      - name: Package build (release)
        shell: bash
        working-directory: ${{ github.workspace }}
        run: sudo ./package_linux.sh release

### package (debug mode)
      - name: Package build (debug)
        shell: bash
        working-directory: ${{ github.workspace }}
        run: sudo ./package_linux.sh debug

### release (debug + release modes) if this is a tag push
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "build/package/linux/**/*"



  gen_emu_script-win:
    name: Gen emu config win
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/gen_emu_config-build-win.yml

  gen_emu_script-win-prep:
    needs: [ gen_emu_script-win ]
    runs-on: windows-2022
    steps:
      # on Windows Git will auto change line ending to CRLF, not preferable
      - name: Ensure LF line ending
        shell: cmd
        working-directory: ${{ github.workspace }}
        run: |
          git config --local core.autocrlf false
          git config --system core.autocrlf false
          git config --global core.autocrlf false

      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

      - name: Clone third-party deps (deps/win)
        uses: actions/checkout@v4
        with:
          ref: 'third-party/deps/win'
          path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win"

## donwload artifacts
      - name: Download script build artifacts (Win)
        uses: actions/download-artifact@v4
        with:
          path: tools/generate_emu_config/bin/win
          pattern: generate_emu_config-win-*
          merge-multiple: true

### package
      - name: Package script
        shell: cmd
        working-directory: "tools/generate_emu_config"
        run: package_win.bat

# release tag
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "tools/generate_emu_config/bin/package/win/**/*"



  gen_emu_script-linux:
    name: Gen emu config linux
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/gen_emu_config-build-linux.yml

  gen_emu_script-linux-prep:
    needs: [ gen_emu_script-linux ]
    runs-on: ubuntu-22.04
    steps:
      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

## donwload artifacts
      - name: Download script build artifacts (linux)
        uses: actions/download-artifact@v4
        with:
          path: tools/generate_emu_config/bin/linux
          pattern: generate_emu_config-linux-*
          merge-multiple: true

### fix folder permissions! not sure why this fails
      # nested subdirs "build/linux/release" cause permission problems
      - name: Give all permissions to repo folder
        shell: bash
        working-directory: ${{ github.workspace }}
        run:  sudo chmod -R 777 "${{ github.workspace }}"

### package
      - name: Package script
        shell: bash
        working-directory: "tools/generate_emu_config"
        run: sudo chmod 777 package_linux.sh && sudo ./package_linux.sh

# release tag
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "tools/generate_emu_config/bin/package/linux/**/*"



  migrate_gse_script-win:
    name: Migrate GSE win
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/migrate_gse-build-win.yml

  migrate_gse_script-win-prep:
    needs: [ migrate_gse_script-win ]
    runs-on: windows-2022
    steps:
      # on Windows Git will auto change line ending to CRLF, not preferable
      - name: Ensure LF line ending
        shell: cmd
        working-directory: ${{ github.workspace }}
        run: |
          git config --local core.autocrlf false
          git config --system core.autocrlf false
          git config --global core.autocrlf false

      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

      - name: Clone third-party deps (deps/win)
        uses: actions/checkout@v4
        with:
          ref: 'third-party/deps/win'
          path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win"

## donwload artifacts
      - name: Download script build artifacts (Win)
        uses: actions/download-artifact@v4
        with:
          path: tools/migrate_gse/bin/win
          pattern: migrate_gse-win-*
          merge-multiple: true

### package
      - name: Package script
        shell: cmd
        working-directory: "tools/migrate_gse"
        run: package_win.bat

# release tag
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "tools/migrate_gse/bin/package/win/**/*"



  migrate_gse_script-linux:
    name: Migrate GSE linux
    if: ${{ !cancelled() }}
    uses: ./.github/workflows/migrate_gse-build-linux.yml

  migrate_gse_script-linux-prep:
    needs: [ migrate_gse_script-linux ]
    runs-on: ubuntu-22.04
    steps:
      # we need branch because it has package scripts
      - name: Checkout branch
        uses: actions/checkout@v4

## donwload artifacts
      - name: Download script build artifacts (linux)
        uses: actions/download-artifact@v4
        with:
          path: tools/migrate_gse/bin/linux
          pattern: migrate_gse-linux-*
          merge-multiple: true

### fix folder permissions! not sure why this fails
      # nested subdirs "build/linux/release" cause permission problems
      - name: Give all permissions to repo folder
        shell: bash
        working-directory: ${{ github.workspace }}
        run:  sudo chmod -R 777 "${{ github.workspace }}"

### package
      - name: Package script
        shell: bash
        working-directory: "tools/migrate_gse"
        run: sudo chmod 777 package_linux.sh && sudo ./package_linux.sh

# release tag
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          files: "tools/migrate_gse/bin/package/linux/**/*"



