name: Build micro-service Manual

on:
  workflow_dispatch:
    inputs:
      microService:
        description: 'Name of the micro-service image to build'
        type: choice
        options:
          - 'access-manager'
          - 'join-service'
          - 'kmsserver'
          - 'verification-service'
        required: true
        default: 'access-manager'
      imageTag:
        description: 'Container image tag'
        required: true
        default: 'manual-build'
      version:
        description: 'Version of the image to build'
        required: true
        default: '0.0.0'

jobs:
  build-micro-service:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - name: Check out repository
        id: checkout
        uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b

      # choose the correct Dockerfile depending on what micro-service is being build
      - name: Set Dockerfile variable
        id: set-variable
        run: |
          case "${{ inputs.microService }}" in
            "access-manager" )
              echo "microServiceDockerfile=access_manager/Dockerfile" >> $GITHUB_ENV ;;
            "join-service" )
              echo "microServiceDockerfile=joinservice/Dockerfile" >> $GITHUB_ENV ;;
            "kmsserver" )
              echo "microServiceDockerfile=kms/Dockerfile" >> $GITHUB_ENV ;;
            "verification-service" )
              echo "microServiceDockerfile=verify/Dockerfile" >> $GITHUB_ENV ;;
          esac

      - name: Build and upload container image
        id: build-and-upload
        uses: ./.github/actions/build_micro_service
        with:
          name: ${{ inputs.microService }}
          projectVersion: ${{ inputs.version }}
          dockerfile: ${{ env.microServiceDockerfile }}
          pushTag: ${{ inputs.imageTag }}
          githubToken: ${{ secrets.GITHUB_TOKEN }}
