name: Prepare new release

on:
  workflow_dispatch:
    inputs:
      serverBump:
        description: "Bump server version"
        required: true
        default: "false"
        type: choice
        options:
          - "false"
          - minor
          - patch
      mobileBump:
        description: "Bump mobile build number"
        required: false
        type: boolean

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-root
  cancel-in-progress: true

jobs:
  bump_version:
    runs-on: ubuntu-latest

    outputs:
      ref: ${{ steps.push-tag.outputs.commit_long_sha }}

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.ORG_RELEASE_TOKEN }}

      - name: Install Poetry
        run: pipx install poetry

      - name: Bump version
        run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"

      - name: Commit and tag
        id: push-tag
        uses: EndBug/add-and-commit@v9
        with:
          author_name: Alex The Bot
          author_email: alex.tran1502@gmail.com
          default_author: user_info 
          message: "Version ${{ env.IMMICH_VERSION }}"
          tag: ${{ env.IMMICH_VERSION }}
          push: true

  build_mobile:
    uses: ./.github/workflows/build-mobile.yml
    needs: bump_version
    secrets: inherit
    with:
      ref: ${{ needs.bump_version.outputs.ref }}

  prepare_release:
    runs-on: ubuntu-latest
    needs: build_mobile

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.ORG_RELEASE_TOKEN }}

      - name: Download APK
        uses: actions/download-artifact@v3
        with:
          name: release-apk-signed

      - name: Create draft release
        uses: softprops/action-gh-release@v1
        with:
          draft: true
          tag_name: ${{ env.IMMICH_VERSION }}
          generate_release_notes: true
          body_path: misc/release/notes.tmpl
          files: |
            docker/docker-compose.yml
            docker/example.env
            *.apk