# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: 'Setup environment action'
description: 'Setup environment to run jobs'
inputs:
  python-version:
    required: false
    description: 'Install Python version'
    default: ''
  java-version:
    required: false
    description: 'Install Java version'
    default: ''
  go-version:
    required: false
    description: 'Install Go version'
    default: ''
  disable-cache:
    required: false
    description: 'Whether to disable the gradle cache'
    default: false
  python-cache:
    required: false
    description: 'Whether to enable Python pip caching'
    default: true
  tox-cache:
    required: false
    description: 'Whether to enable tox environment caching'
    default: true

runs:
  using: "composite"
  steps:
    - name: Install Python
      if: ${{ inputs.python-version != '' }}
      uses: actions/setup-python@v6
      with:
        python-version: ${{ inputs.python-version == 'default' && '3.10' || inputs.python-version }}
        cache: ${{ inputs.python-cache && 'pip' || 'none' }}
        cache-dependency-path: |
          sdks/python/setup.py
          sdks/python/tox.ini

    - name: Cache tox environments
      if: ${{ inputs.python-version != '' && inputs.tox-cache == 'true' }}
      uses: actions/cache@v3
      with:
        path: |
          sdks/python/target/.tox
          !sdks/python/target/.tox/**/log
          !sdks/python/target/.tox/.package_cache
        key: tox-${{ runner.os }}-py${{ inputs.python-version == 'default' && '310' || inputs.python-version }}-${{ hashFiles('sdks/python/tox.ini') }}-${{ hashFiles('sdks/python/setup.py') }}
        restore-keys: |
          tox-${{ runner.os }}-py${{ inputs.python-version == 'default' && '310' || inputs.python-version }}-${{ hashFiles('sdks/python/tox.ini') }}-
          tox-${{ runner.os }}-py${{ inputs.python-version == 'default' && '310' || inputs.python-version }}-

    - name: Install Java
      if: ${{ inputs.java-version != '' }}
      uses: actions/setup-java@v4
      with:
        distribution: 'temurin'
        java-version: ${{ inputs.java-version == 'default' && '11' || inputs.java-version }}
    - name: Setup Gradle
      uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
      with:
        cache-disabled: ${{ inputs.disable-cache }}
        validate-wrappers: false
    - name: Install Go
      if: ${{ inputs.go-version != '' }}
      uses: actions/setup-go@v6
      with:
        go-version: ${{ inputs.go-version == 'default' && '1.26' || inputs.go-version }} # never set patch, to get latest patch releases.
        cache-dependency-path: $${{ inputs.disable-cache && '' || 'sdks/go.sum' }}
