From fd3067047c4e22b0ef8ffa1fdf1374d9c5021c3e Mon Sep 17 00:00:00 2001 From: HgO Date: Sat, 13 Aug 2022 14:00:40 +0200 Subject: [PATCH] cleanup and add more linting in gitlab ci --- .github/workflows/lint.yml | 38 --------------------- .github/workflows/test.yml | 57 ------------------------------- .gitignore | 2 ++ .gitlab-ci.yml | 42 +++++++++++++++++++++-- docker/start-dev.sh | 49 --------------------------- scripts-dev/rename_project.sh | 64 ----------------------------------- 6 files changed, 42 insertions(+), 210 deletions(-) delete mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/test.yml delete mode 100755 docker/start-dev.sh delete mode 100755 scripts-dev/rename_project.sh diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 8a7823a..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,38 +0,0 @@ -# This workflow will install Python dependencies, then run various linting programs on a single Python version -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Lint - -on: - push: - branches: [master] - pull_request: - branches: [master] - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.9 - uses: actions/setup-python@v2 - with: - python-version: 3.9 - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U isort==5.6.4 flake8==3.8.4 flake8-comprehensions==3.3.1 black==20.8b1 - - - name: Check import statement sorting - run: | - isort -c --df matrix_alertbot/ matrix-alertbot tests - - - name: Python syntax errors, undefined names, etc. - run: | - flake8 . --count --show-source --statistics - - - name: PEP8 formatting - run: | - black --check --diff matrix_alertbot/ matrix-alertbot tests diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index a731ab5..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,57 +0,0 @@ -# This workflow will install Python dependencies, then run unit testing across the earliest and latest supported Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Run unit tests - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - python_36: - - # We need to use 20.04 to get access to the libolm3 package - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.6 - uses: actions/setup-python@v2 - with: - python-version: 3.6 - - - name: Install project dependencies - run: | - # Install libolm, required for end-to-end encryption functionality - sudo apt install -y libolm-dev libolm3 - # Install python dependencies - python setup.py install - - - name: Run unit tests - run: | - python -m unittest - - python_39: - - # We need to use 20.04 to get access to the libolm3 package - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.9 - uses: actions/setup-python@v2 - with: - python-version: 3.9 - - - name: Install project dependencies - run: | - # Install libolm, required for end-to-end encryption functionality - sudo apt install -y libolm-dev libolm3 - # Install python dependencies - python setup.py install - - - name: Run unit tests - run: | - python -m unittest diff --git a/.gitignore b/.gitignore index 72178af..88e053d 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,8 @@ __pycache__/ *.egg-info/ build/ dist/ +.pytest_cache/ +.mypy_cache/ # Config file config.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 357de73..a848c77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,16 +39,47 @@ install: cache: policy: pull-push interruptible: true + needs: [] -linting: +isort linting: extends: .pip cache template image: python:3.10-alpine stage: quality script: - - flake8 . + - isort -c --df . cache: policy: pull interruptible: true + needs: + - job: install + artifacts: false + +flake8 linting: + extends: .pip cache template + image: python:3.10-alpine + stage: quality + script: + - flake8 --count --show-source --statistics . + - black --check --diff . + cache: + policy: pull + interruptible: true + needs: + - job: install + artifacts: false + +black linting: + extends: .pip cache template + image: python:3.10-alpine + stage: quality + script: + - black --check --diff . + cache: + policy: pull + interruptible: true + needs: + - job: install + artifacts: false tests: extends: .pip cache template @@ -69,3 +100,10 @@ tests: junit: report.xml coverage: '/^TOTAL\s+\d+\s+\d+\s+(\d+\.\d+\%)$/' interruptible: true + needs: + - job: isort linting + artifacts: false + - job: flake8 linting + artifacts: false + - job: black linting + artifacts: false diff --git a/docker/start-dev.sh b/docker/start-dev.sh deleted file mode 100755 index 4fa45e0..0000000 --- a/docker/start-dev.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# A script to quickly setup a running development environment -# -# It's primary purpose is to set up docker networking correctly so that -# the bot can connect to remote services as well as those hosted on -# the host machine. -# - -# Change directory to where this script is located. We'd like to run -# `docker-compose` in the same directory to use the adjacent -# docker-compose.yml and .env files -cd `dirname "$0"` - -function on_exit { - cd - -} - -# Ensure we change back to the old directory on script exit -trap on_exit EXIT - -# To allow the docker container to connect to services running on the host, -# we need to use the host's internal ip address. Attempt to retrieve this. -# -# Check whether the ip address has been defined in the environment already -if [ -z "$HOST_IP_ADDRESS" ]; then - # It's not defined. Try to guess what it is - - # First we try the `ip` command, available primarily on Linux - export HOST_IP_ADDRESS="`ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p'`" - - if [ $? -ne 0 ]; then - # That didn't work. `ip` isn't available on old Linux systems, or MacOS. - # Try `ifconfig` instead - export HOST_IP_ADDRESS="`ifconfig $(netstat -rn | grep -E "^default|^0.0.0.0" | head -1 | awk '{print $NF}') | grep 'inet ' | awk '{print $2}' | grep -Eo '([0-9]*\.){3}[0-9]*'`" - - if [ $? -ne 0 ]; then - # That didn't work either, give up - echo " -Unable to determine host machine's internal IP address. -Please set HOST_IP_ADDRESS environment variable manually and re-run this script. -If you do not have a need to connect to a homeserver running on the host machine, -set HOST_IP_ADDRESS=127.0.0.1" - exit 1 - fi - fi -fi - -# Build and run latest code -docker-compose up --build local-checkout-dev diff --git a/scripts-dev/rename_project.sh b/scripts-dev/rename_project.sh deleted file mode 100755 index 885da57..0000000 --- a/scripts-dev/rename_project.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -e - -# Check that regex-rename is installed -if ! command -v regex-rename &> /dev/null -then - echo "regex-rename python module not found. Please run 'python -m pip install regex-rename'" - exit 1 -fi - -# GNU sed and BSD(Mac) sed handle -i differently :( -function is_gnu_sed(){ - sed --version >/dev/null 2>&1 -} - -# Allow specifying either: -# * One argument, which is the new project name, assuming the old project name is "my project name" -# * Or two arguments, where one can specify 1. the old project name and 2. the new project name -if [ $# -eq 1 ]; then - PLACEHOLDER="my project name" - REPLACEMENT=$1 -elif [ $# -eq 2 ]; then - PLACEHOLDER=$1 - REPLACEMENT=$2 -else - echo "Usage:" - echo "./"$(basename "$0") "\"new name\"" - echo "./"$(basename "$0") "\"old name\" \"new name\"" - exit 1 -fi - -PLACEHOLDER_DASHES="${PLACEHOLDER// /-}" -PLACEHOLDER_UNDERSCORES="${PLACEHOLDER// /_}" - -REPLACEMENT_DASHES="${REPLACEMENT// /-}" -REPLACEMENT_UNDERSCORES="${REPLACEMENT// /_}" - -echo "Updating file and folder names..." - -# Iterate over all directories (besides venv's and .git) and rename files/folders -# Yes this looks like some crazy voodoo, but it's necessary as regex-rename does -# not provide any sort of recursive functionality... -find . -type d -not -path "./env*" -not -path "./.git" -not -path "./.git*" \ - -exec sh -c "cd {} && \ - regex-rename --rename \"(.*)$PLACEHOLDER_DASHES(.*)\" \"\1$REPLACEMENT_DASHES\2\" && \ - regex-rename --rename \"(.*)$PLACEHOLDER_UNDERSCORES(.*)\" \"\1$REPLACEMENT_UNDERSCORES\2\"" \; > /dev/null - -echo "Updating references within files..." - -# Iterate through each file and replace strings within files -for file in $(grep --exclude-dir=env --exclude-dir=venv --exclude-dir=.git --exclude *.pyc -lEw "$PLACEHOLDER_DASHES|$PLACEHOLDER_UNDERSCORES" -R * .[^.]*); do - echo "Checking $file" - if [[ $file != $(basename "$0") ]]; then - if is_gnu_sed; then - sed -i "s/$PLACEHOLDER_DASHES/$REPLACEMENT_DASHES/g" $file - sed -i "s/$PLACEHOLDER_UNDERSCORES/$REPLACEMENT_UNDERSCORES/g" $file - else - sed -i "" "s/$PLACEHOLDER_DASHES/$REPLACEMENT_DASHES/g" $file - sed -i "" "s/$PLACEHOLDER_UNDERSCORES/$REPLACEMENT_UNDERSCORES/g" $file - fi - echo " - $file" - fi -done - -echo "Done!"