update_requirements.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env bash
  2. set -e
  3. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
  4. cd $DIR
  5. RC_FILE="${HOME}/.$(basename ${SHELL})rc"
  6. if [ "$(uname)" == "Darwin" ] && [ $SHELL == "/bin/bash" ]; then
  7. RC_FILE="$HOME/.bash_profile"
  8. fi
  9. if ! command -v "pyenv" > /dev/null 2>&1; then
  10. echo "pyenv install ..."
  11. curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  12. echo -e "\n. ~/.pyenvrc" >> $RC_FILE
  13. cat <<EOF > "${HOME}/.pyenvrc"
  14. if [ -z "\$PYENV_ROOT" ]; then
  15. export PATH=\$HOME/.pyenv/bin:\$HOME/.pyenv/shims:\$PATH
  16. export PYENV_ROOT="\$HOME/.pyenv"
  17. eval "\$(pyenv init -)"
  18. eval "\$(pyenv virtualenv-init -)"
  19. fi
  20. EOF
  21. # setup now without restarting shell
  22. export PATH=$HOME/.pyenv/bin:$HOME/.pyenv/shims:$PATH
  23. export PYENV_ROOT="$HOME/.pyenv"
  24. eval "$(pyenv init -)"
  25. eval "$(pyenv virtualenv-init -)"
  26. fi
  27. export MAKEFLAGS="-j$(nproc)"
  28. PYENV_PYTHON_VERSION=$(cat .python-version)
  29. if ! pyenv prefix ${PYENV_PYTHON_VERSION} &> /dev/null; then
  30. # no pyenv update on mac
  31. if [ "$(uname)" == "Linux" ]; then
  32. echo "pyenv update ..."
  33. pyenv update
  34. fi
  35. echo "python ${PYENV_PYTHON_VERSION} install ..."
  36. CONFIGURE_OPTS="--enable-shared" pyenv install -f ${PYENV_PYTHON_VERSION}
  37. fi
  38. eval "$(pyenv init --path)"
  39. echo "update pip"
  40. pip install pip==22.3.1
  41. pip install poetry==1.2.2
  42. poetry config virtualenvs.prefer-active-python true --local
  43. POETRY_INSTALL_ARGS=""
  44. if [ -d "./xx" ] || [ -n "$XX" ]; then
  45. echo "WARNING: using xx dependency group, installing globally"
  46. poetry config virtualenvs.create false --local
  47. POETRY_INSTALL_ARGS="--with xx --sync"
  48. fi
  49. echo "pip packages install..."
  50. poetry install --no-cache --no-root $POETRY_INSTALL_ARGS
  51. pyenv rehash
  52. if [ -d "./xx" ] || [ -n "$POETRY_VIRTUALENVS_CREATE" ]; then
  53. RUN=""
  54. else
  55. echo "PYTHONPATH=${PWD}" > .env
  56. poetry self add poetry-dotenv-plugin@^0.1.0
  57. RUN="poetry run"
  58. fi
  59. echo "pre-commit hooks install..."
  60. shopt -s nullglob
  61. for f in .pre-commit-config.yaml */.pre-commit-config.yaml; do
  62. cd $DIR/$(dirname $f)
  63. if [ -e ".git" ]; then
  64. $RUN pre-commit install
  65. fi
  66. done