feat(readme-generator): add Aleks' script to regen README in batch
This commit is contained in:
parent
5bc0a55778
commit
2e500bde08
1 changed files with 71 additions and 0 deletions
71
readme_generator/regen_readme_in_batch.py
Normal file
71
readme_generator/regen_readme_in_batch.py
Normal file
|
@ -0,0 +1,71 @@
|
|||
import time
|
||||
import json
|
||||
import os
|
||||
import hmac
|
||||
import shlex
|
||||
import asyncio
|
||||
import tempfile
|
||||
|
||||
from make_readme import generate_READMEs
|
||||
|
||||
github_webhook_secret = open("github_webhook_secret", "r").read().strip()
|
||||
|
||||
login = open("login").read().strip()
|
||||
token = open("token").read().strip()
|
||||
|
||||
my_env = os.environ.copy()
|
||||
my_env["GIT_TERMINAL_PROMPT"] = "0"
|
||||
my_env["GIT_AUTHOR_NAME"] = "yunohost-bot"
|
||||
my_env["GIT_AUTHOR_EMAIL"] = "yunohost@yunohost.org"
|
||||
my_env["GIT_COMMITTER_NAME"] = "yunohost-bot"
|
||||
my_env["GIT_COMMITTER_EMAIL"] = "yunohost@yunohost.org"
|
||||
|
||||
|
||||
async def git(cmd, in_folder=None):
|
||||
|
||||
if not isinstance(cmd, list):
|
||||
cmd = cmd.split()
|
||||
if in_folder:
|
||||
cmd = ["-C", in_folder] + cmd
|
||||
cmd = ["git"] + cmd
|
||||
cmd = " ".join(map(shlex.quote, cmd))
|
||||
print(cmd)
|
||||
command = await asyncio.create_subprocess_shell(cmd, env=my_env, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT)
|
||||
data = await command.stdout.read()
|
||||
return data.decode().strip()
|
||||
|
||||
|
||||
async def regen_readme(repository, branch):
|
||||
|
||||
print(f"{repository} -> branch '{branch}'")
|
||||
|
||||
with tempfile.TemporaryDirectory() as folder:
|
||||
await git(["clone", f"https://{login}:{token}@github.com/{repository}", "--single-branch", "--branch", branch, folder])
|
||||
generate_READMEs(folder)
|
||||
|
||||
await git(["add", "README*.md"], in_folder=folder)
|
||||
|
||||
diff_not_empty = await asyncio.create_subprocess_shell(" ".join(["git", "diff", "HEAD", "--compact-summary"]), cwd=folder, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT)
|
||||
diff_not_empty = await diff_not_empty.stdout.read()
|
||||
diff_not_empty = diff_not_empty.decode().strip()
|
||||
if not diff_not_empty:
|
||||
print("nothing to do")
|
||||
return
|
||||
|
||||
await git(["commit", "-a", "-m", "Auto-update README", "--author='yunohost-bot <yunohost@yunohost.org>'"], in_folder=folder)
|
||||
await git(["push", "origin", branch, "--quiet"], in_folder=folder)
|
||||
|
||||
print("Updated {repo}")
|
||||
|
||||
skip = True
|
||||
apps = json.load(open("../../builds/default/v3/apps.json"))["apps"]
|
||||
for app, infos in apps.items():
|
||||
if not "github.com" in infos["git"]["url"]:
|
||||
continue
|
||||
if app == "dendrite":
|
||||
skip = False
|
||||
if skip:
|
||||
continue
|
||||
print(app)
|
||||
time.sleep(2)
|
||||
asyncio.run(regen_readme(infos["git"]["url"].replace("https://github.com/", ""), infos["git"]["branch"]))
|
Loading…
Reference in a new issue