# 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 Python Env"
description: Setup Common RC Variables and dependencies
inputs:
  PYTHON_RC_DOWNLOAD_URL:
    description: Python RC package URL
    required: true
    default: https://dist.apache.org/repos/dist/dev/beam
  RELEASE_VER:
    description: Release Version
    required: true

runs:
  using: composite
  steps:
    - name: install-wheel
      shell: bash
      run: pip install --upgrade pip setuptools wheel
    - name: Downloading Python Staging RC
      shell: bash
      run: |
          echo "---------------------Downloading Python Staging RC----------------------------"
          wget ${PYTHON_RC_DOWNLOAD_URL}/${RELEASE_VER}/python/apache_beam-${RELEASE_VER}.tar.gz
          wget ${PYTHON_RC_DOWNLOAD_URL}/${RELEASE_VER}/python/apache_beam-${RELEASE_VER}.tar.gz.sha512
          if [[ ! -f apache_beam-$RELEASE_VER.tar.gz ]]; then
            { echo "Fail to download Python Staging RC files." ;exit 1; }
          fi

          echo "--------------------------Verifying Hashes------------------------------------"
          sha512sum -c apache_beam-${RELEASE_VER}.tar.gz.sha512

          `which pip` install --upgrade pip
          `which pip` install --upgrade setuptools

    - name: Installing python SDK
      shell: bash
      run: pip install apache_beam-${RELEASE_VER}.tar.gz[gcp]
      
