#!/usr/bin/env bash ################################################################################ ########################### Install Python Dependancies ######################## ################################################################################ ##################### # Set fail on error # ##################### set -euo pipefail ############################ # Create staging directory # ############################ # shellcheck disable=SC2154 mkdir -p "${working_directory}/venvs" ######################################## # Install basic libs to run installers # ######################################## pip install virtualenv ######################################################### # Itterate through requirments.txt to install bainaries # ######################################################### cd dependencies/python for DEP_FILE in *.txt; do # split the package name from its version PACKAGE_NAME=${DEP_FILE%.txt} echo "-------------------------------------------" mkdir -p "${working_directory}/venvs/${PACKAGE_NAME}" echo "Generating virtualenv for: [${PACKAGE_NAME}]" pushd "${working_directory}/venvs/${PACKAGE_NAME}" # Enable virtualenv virtualenv . # Activate virtualenv # shellcheck disable=SC1091 source bin/activate # Handle the ansibl-lint corner case if [[ $PACKAGE_NAME == "ansible-lint" ]]; then pip install "ansible-lint[core]" else pip install "${PACKAGE_NAME}" fi # Generate an update requirements.txt pip freeze >requirements.txt # deactivate the python virtualenv deactivate # pop the stack popd # Remove old lockfile rm -rf "$DEP_FILE" # Create new lockfile mv "${working_directory}/venvs/${PACKAGE_NAME}/requirements.txt" "${DEP_FILE}" done git status # Setup Git Config echo "Configuring Git..." git config --global user.email "noreply@github.com" git config --global user.name "Super-Linter Automation" if [[ $(git status --porcelain) ]]; then # Push changes to remote echo "Pushing changes to remote..." git add . git commit -a -m "Update Python dependencies" # shellcheck disable=SC2154 git checkout -b "python_deps_${id}" # shellcheck disable=SC2154 git push origin "python_deps_${id}" # Open pull request echo "Opening pull request..." # shellcheck disable=SC2154 echo "${token}" | gh auth login --with-token gh pr create --title "Weekly Python Updates" --body "Updates Python dependencies" --base main --head "python_deps_${id}" else echo "No changes to commit" fi