From 5583d8b3a59c903867e7fa434ccacdd88d159ea4 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Thu, 4 Aug 2022 19:51:17 +0200 Subject: [PATCH] use python script for updates --- .github/get_stats.py | 47 +++++++++++++++++++++++++++++++++ .github/workflows/get_stats.yml | 33 ++++------------------- 2 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 .github/get_stats.py diff --git a/.github/get_stats.py b/.github/get_stats.py new file mode 100644 index 00000000..8d33aad7 --- /dev/null +++ b/.github/get_stats.py @@ -0,0 +1,47 @@ +from enum import Enum +import json +from pathlib import Path +from urllib.request import urlopen, Request + +file_name = Path('_data/general/stats.yml') + +class ReturnMode(Enum): + data = 0 + header = 1 + +def get_data(url, key=None, default=0, mode: ReturnMode=ReturnMode.data): + """Fetches data from remote endpoint""" + httprequest = Request(url, headers={"Accept": "application/json"}) + + with urlopen(httprequest) as response: + if mode == ReturnMode.data: + data = response.read().decode() + data = json.loads(data) + + elif mode == ReturnMode.header: + data = dict(response.headers.items()) + + if key: + data = data.get(key, default) + + return data + +docker = get_data('https://hub.docker.com/v2/repositories/inventree/inventree', 'pull_count') +gh_data = get_data('https://api.github.com/repos/inventree/inventree') +stars = gh_data.get('stargazers_count', 0) +forks = gh_data.get('forks_count', 0) +# See https://stackoverflow.com/a/60458265/17860466 # to enabble anon add `&anon=true` +link = get_data('https://api.github.com/repos/inventree/inventree/contributors?per_page=1', mode=ReturnMode.header).get('Link') +contributors = link.split('page=')[-1].split('>')[0] + +# Write data +file_name.write_text( +f"""stats: + - name: Docker pulls + number: {docker} + - name: GitHub Stars + number: {stars} + - name: Forks + number: {forks} + - name: Contributors + number: {contributors}""") diff --git a/.github/workflows/get_stats.yml b/.github/workflows/get_stats.yml index 98f7b937..211b5ee5 100644 --- a/.github/workflows/get_stats.yml +++ b/.github/workflows/get_stats.yml @@ -2,28 +2,6 @@ name: Get stats on: workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'warning' - type: choice - options: - - info - - warning - - debug - print_tags: - description: 'True to print to STDOUT' - required: true - type: boolean - tags: - description: 'Test scenario tags' - required: true - type: string - environment: - description: 'Environment to run tests against' - type: environment - required: true jobs: build: @@ -33,9 +11,8 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set selected color - run: echo '::set-output name=SELECTED_COLOR::green' - id: random-color-generator - - name: Docker stats - run: | - curl -s https://hub.docker.com/v2/repositories/inventree/inventree/ | jq -r ".pull_count" - id: docker-pulls + run: python .github/get_stats.py + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "[Bot] Updated the stats" + branch: main