From ed128ecb9df097113c7f2353cc6699846eca4e3f Mon Sep 17 00:00:00 2001 From: Xiaonan Shen Date: Thu, 7 Jan 2021 16:47:59 +0800 Subject: [PATCH] Add update check for build --- .github/workflows/update-check.yaml | 6 +-- update-check.py | 64 +++++++++++++++++++++++++++++ update-check.sh | 47 --------------------- 3 files changed, 67 insertions(+), 50 deletions(-) create mode 100644 update-check.py delete mode 100644 update-check.sh diff --git a/.github/workflows/update-check.yaml b/.github/workflows/update-check.yaml index 5e53c66..cb9fe98 100644 --- a/.github/workflows/update-check.yaml +++ b/.github/workflows/update-check.yaml @@ -7,11 +7,11 @@ on: - dev paths: - .github/workflows/update-check.yaml - - update-check.sh + - update-check.py pull_request: paths: - .github/workflows/update-check.yaml - - update-check.sh + - update-check.py schedule: - cron: '0 0 * * *' # runs everyday at midnight @@ -24,4 +24,4 @@ jobs: with: token: ${{ secrets.PERSONAL_TOKEN }} - name: Check Update - run: bash update-check.sh ${{ github.event_name == 'pull_request' }} + run: python3 update-check.py ${{ github.event_name == 'pull_request' }} diff --git a/update-check.py b/update-check.py new file mode 100644 index 0000000..48ce7a3 --- /dev/null +++ b/update-check.py @@ -0,0 +1,64 @@ +import sys +import os +import requests +import json +import re + +is_pull_request = sys.argv[1] == "true" +print(f"is_pull_request={is_pull_request}") + + +def check_version(directory, new_version): + print(f"Checking version for {directory}") + + if not new_version: + print("Failed to get new version. Exiting.") + exit(1) + + with open(f"{directory}/VERSION", "r") as f: + old_version = f.read().rstrip() + + print(f"Up-to-date version {new_version}") + print(f"Current version: {old_version}") + + if old_version != new_version: + print(f"New release found: {new_version}") + + # bump up to new release + with open(f"{directory}/VERSION", "w") as f: + f.write(new_version) + # commit + result = os.system(f"git config --local user.email 'actions@github.com' \ + && git config --local user.name 'Github Action' \ + && git add {directory}/VERSION \ + && git commit -m 'Bump {directory} version to {new_version}'") + if result != 0: + print("Failed to commit the bump. Exiting") + exit(1) + if is_pull_request: + print("Action triggered by pull request. Do not push.") + else: + result = os.system("git push") + if result != 0: + print("Failed to push. Exiting") + exit(1) + else: + print(f"Already newest version {old_version}") + + +# check deb version +response = requests.get("https://protonmail.com/download/current_version_linux.json") +content = json.loads(response.content) +version = re.match(".*_([0-9.-]+)_amd64\.deb", content["DebFile"]).group(1) +check_version("deb", version) + + +# check build version +response = requests.get( + "https://api.github.com/repos/ProtonMail/proton-bridge/tags", + headers={"Accept": "application/vnd.github.v3+json"}, + ) +tags = json.loads(response.content) +version_re = re.compile("v(\d+)\.(\d+)\.(\d+)") +releases = [tag["name"] for tag in tags if version_re.match(tag["name"])] +check_version("build", releases[0]) diff --git a/update-check.sh b/update-check.sh deleted file mode 100644 index 11622d7..0000000 --- a/update-check.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -ex - -IS_PULL_REQUEST=$1 - - -check_version() { - DIR=$1 - CURR_VERSION=$2 - - echo "Checking version for ${DIR}" - - VERSION=`cat ${DIR}/VERSION` - - if [[ -z $CURR_VERSION ]]; then - echo "Failed to get new version. Existing." - exit 1 - fi - - if [[ $VERSION != $CURR_VERSION ]]; then - echo "New release found: ${CURR_VERSION}" - - if [[ $IS_PULL_REQUEST == "true" ]]; then - echo "Action triggered by pull request. Do not bump version." - else - # bump up to new release - echo ${CURR_VERSION} > ${DIR}/VERSION - - # commit - git config --local user.email "actions@github.com" - git config --local user.name "Github Action" - git add ${DIR}/VERSION - git commit -m "Bump ${DIR} version to ${CURR_VERSION}" --author="Xiaonan Shen " - git push - fi - else - echo "Already newest version ${VERSION}" - fi - -} - - -JSON_CONTENT=$(curl -q https://protonmail.com/download/current_version_linux.json) -URL=$(echo ${JSON_CONTENT} | sed -n "s/^.*\"DebFile\":\"\([a-z0-9:/._-]*\)\".*$/\1/p") -CURR_VERSION=$(echo $URL | sed -n "s/https:\/\/protonmail.com\/.*_\([0-9.-]*\)_.*.deb/\1/p") -check_version deb $CURR_VERSION