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: 9ab1c492dd051276a422fbac38f754c4e6633f32
This commit is contained in:
53
.github/workflows/badges.yaml
vendored
Normal file
53
.github/workflows/badges.yaml
vendored
Normal file
@@ -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
|
||||
@@ -1,5 +1,9 @@
|
||||
# Multilanguage
|
||||
|
||||
[](https://github.com/commaai/openpilot/blob/master/selfdrive/ui/translations/main_zh-CHT.ts)
|
||||
[](https://github.com/commaai/openpilot/blob/master/selfdrive/ui/translations/main_zh-CHS.ts)
|
||||
[](https://github.com/commaai/openpilot/blob/master/selfdrive/ui/translations/main_ko.ts)
|
||||
|
||||
## Contributing
|
||||
|
||||
Before getting started, make sure you have set up the openpilot Ubuntu development environment by reading the [tools README.md](/tools/README.md).
|
||||
|
||||
43
selfdrive/ui/translations/create_badges.py
Executable file
43
selfdrive/ui/translations/create_badges.py
Executable file
@@ -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)
|
||||
Reference in New Issue
Block a user