name: Release Commit & Deploy

on:
  workflow_dispatch:
    inputs:
      tag:
        description: Tag to Make and Release.
        required: true
        type: string
      release_type:
        description: The Release Type.
        required: true
        type: choice
        default: 'Release'
        options:
          - 'Release'
          - 'Beta Release'
          - 'Alpha Release'
      compare_tag:
        description: Tag(s) to compare against. If specifying multiple, seperate by commas. (Spaces allowed). See CONTRIBUTING.md for more information.
        required: false
        type: string
      deploy_to_gh:
        description: Whether to deploy to GitHub Releases.
        required: true
        type: boolean
        default: true
      deploy_to_cf:
        description: Whether to deploy to CurseForge.
        required: true
        type: boolean
        default: true

jobs:
  releaseCommit:
    name: Create Release Commit (${{ inputs.tag }})
    uses: ./.github/workflows/releasecommit.yml
    with:
      tag: ${{ inputs.tag }}
      release_type: ${{ inputs.release_type }}
    secrets: inherit
    
  build:
    name: Build Pack (${{ inputs.tag }})
    needs: releaseCommit
    uses: ./.github/workflows/buildpack.yml
    with:
      tag: ${{ inputs.tag }}
      release_type: ${{ inputs.release_type }}
      changelog_url: ${{ inputs.changelog_url }}
      changelog_cf_url: ${{ inputs.changelog_cf_url }}
      changelog_branch: ${{ inputs.changelog_branch }}
      compare_tag: ${{ inputs.compare_tag }}
    secrets: inherit

  deployGH:
    name: Deploy to GitHub Releases (${{ inputs.tag }})
    if: ${{ inputs.deploy_to_gh }}
    needs: build
    uses: ./.github/workflows/deploygh.yml
    with:
      tag: ${{ inputs.tag }}
      release_type: ${{ inputs.release_type }}
    secrets: inherit

  deployCF:
    name: Deploy to CurseForge (${{ inputs.tag }})
    if: ${{ inputs.deploy_to_cf }}
    needs: build
    uses: ./.github/workflows/deploycf.yml
    with:
      tag: ${{ inputs.tag }}
      release_type: ${{ inputs.release_type }}
    secrets: inherit
