Multilanguage badges (#25244)
* Test badge
* fix?
* Test
* debug
* debug
* debug
* debug
* debug
* debug
* debug
* try this
* need to build
* a minute for what
* download and commit test badge
* get dynamically
* fix
* Add to readme
* force push
* should work
* one step
* Update badge
* draft
* clean up
* remove these
* one line is fine
* Adding badges will have to be manual, but that should be fine
* cause error
* continue on error
* hope this doesn't delete the badges
* ugh, allow-failures would be so nice
* whoops
* yep need this
* do this
* now try a push
* clean up
* rm line
* need this
* see if this works
* orange
* does this work?
* ?
* do dis
* needs to be global?
* cool, this works
cool, this works
* run only on master
* add back workflows
* remove that
* sorting
* sorting
* print badge markdown
* it is bytes though?
* run once more
* revert
* looks nicer
* strange
* no decimals
* run again
run once more
* nice workflow_dispatch
* only run on a schedule and remove error handling
* make links absolute
* adjust badge text
old-commit-hash: 9ab1c492dd
taco
parent
178d7fca52
commit
bcbf8463e6
3 changed files with 100 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||||
|
name: badges |
||||||
|
on: |
||||||
|
schedule: |
||||||
|
- cron: '0 * * * *' |
||||||
|
workflow_dispatch: |
||||||
|
|
||||||
|
env: |
||||||
|
BASE_IMAGE: openpilot-base |
||||||
|
DOCKER_REGISTRY: ghcr.io/commaai |
||||||
|
|
||||||
|
BUILD: | |
||||||
|
docker pull $(grep -iohP '(?<=^from)\s+\S+' Dockerfile.openpilot_base) || true |
||||||
|
docker pull $DOCKER_REGISTRY/$BASE_IMAGE:latest || true |
||||||
|
docker build --cache-from $DOCKER_REGISTRY/$BASE_IMAGE:latest -t $DOCKER_REGISTRY/$BASE_IMAGE:latest -t $BASE_IMAGE:latest -f Dockerfile.openpilot_base . |
||||||
|
RUN: docker run --shm-size 1G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v /tmp/scons_cache:/tmp/scons_cache -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/sh -c |
||||||
|
|
||||||
|
jobs: |
||||||
|
badges: |
||||||
|
name: create badges |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v3 |
||||||
|
with: |
||||||
|
submodules: true |
||||||
|
|
||||||
|
- name: Cache scons |
||||||
|
id: scons-cache |
||||||
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged. |
||||||
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b |
||||||
|
env: |
||||||
|
CACHE_SKIP_SAVE: true |
||||||
|
with: |
||||||
|
path: /tmp/scons_cache |
||||||
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}- |
||||||
|
restore-keys: | |
||||||
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}- |
||||||
|
scons- |
||||||
|
|
||||||
|
- name: Build Docker image |
||||||
|
run: eval "$BUILD" |
||||||
|
|
||||||
|
- name: Push badges |
||||||
|
run: | |
||||||
|
${{ env.RUN }} "scons -j$(nproc) && python selfdrive/ui/translations/create_badges.py" |
||||||
|
|
||||||
|
git checkout --orphan badges |
||||||
|
git rm -rf --cached . |
||||||
|
git config user.email "badge-researcher@comma.ai" |
||||||
|
git config user.name "Badge Researcher" |
||||||
|
|
||||||
|
git add translation_badge_*.svg |
||||||
|
git commit -m "Add/Update badges" |
||||||
|
git push -f origin HEAD |
@ -0,0 +1,43 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
import json |
||||||
|
import os |
||||||
|
import requests |
||||||
|
|
||||||
|
from common.basedir import BASEDIR |
||||||
|
from selfdrive.ui.update_translations import LANGUAGES_FILE, TRANSLATIONS_DIR |
||||||
|
|
||||||
|
TRANSLATION_TAG = "<translation" |
||||||
|
UNFINISHED_TRANSLATION_TAG = "<translation type=\"unfinished\"" |
||||||
|
TRANSLATION_BADGE = "translation_badge_{}.svg" |
||||||
|
TRANSLATION_LINK = "https://github.com/commaai/openpilot/blob/master/selfdrive/ui/translations/{}" |
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
with open(LANGUAGES_FILE, "r") as f: |
||||||
|
translation_files = json.load(f) |
||||||
|
|
||||||
|
print("Copy into selfdrive/ui/translations/README.md:\n") |
||||||
|
for name, file in translation_files.items(): |
||||||
|
if not len(file): |
||||||
|
continue |
||||||
|
|
||||||
|
with open(os.path.join(TRANSLATIONS_DIR, f"{file}.ts"), "r") as tr_f: |
||||||
|
tr_file = tr_f.read() |
||||||
|
|
||||||
|
print(f"[})]({TRANSLATION_LINK.format(file)}.ts)") |
||||||
|
|
||||||
|
total_translations = 0 |
||||||
|
unfinished_translations = 0 |
||||||
|
for line in tr_file.splitlines(): |
||||||
|
if TRANSLATION_TAG in line: |
||||||
|
total_translations += 1 |
||||||
|
if UNFINISHED_TRANSLATION_TAG in line: |
||||||
|
unfinished_translations += 1 |
||||||
|
|
||||||
|
percent_finished = int(100 - (unfinished_translations / total_translations * 100.)) |
||||||
|
color = "green" if percent_finished == 100 else "orange" if percent_finished >= 70 else "red" |
||||||
|
|
||||||
|
r = requests.get(f"https://img.shields.io/badge/LANGUAGE {name}-{percent_finished}%25 complete-{color}") |
||||||
|
assert r.status_code == 200, "Error downloading badge" |
||||||
|
|
||||||
|
with open(os.path.join(BASEDIR, TRANSLATION_BADGE.format(file)), "wb") as badge_f: |
||||||
|
badge_f.write(r.content) |
Loading…
Reference in new issue