forked from OCA/oca-github-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain_branch_bot.py
More file actions
90 lines (75 loc) · 3.02 KB
/
Copy pathmain_branch_bot.py
File metadata and controls
90 lines (75 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Copyright (c) ACSONE SA/NV 2018
# Distributed under the MIT License (http://opensource.org/licenses/MIT).
import subprocess
from .. import github, manifest
from ..github import git_push_if_needed, temporary_clone
from ..queue import getLogger, task
from ..version_branch import is_main_branch_bot_branch
_logger = getLogger(__name__)
def _gen_addons_table(org, repo, branch, dry_run):
_logger.info("oca-gen-addons-table in %s/%s@%s", org, repo, branch)
gen_addons_table_cmd = ["oca-gen-addons-table"]
if not dry_run:
gen_addons_table_cmd.append("--commit")
subprocess.check_output(gen_addons_table_cmd, stderr=subprocess.STDOUT)
def _gen_addons_readme(org, repo, branch, dry_run):
_logger.info("oca-gen-addon-readme in %s/%s@%s", org, repo, branch)
gen_addon_readme_cmd = [
"oca-gen-addon-readme",
"--repo-name",
repo,
"--branch",
branch,
"--addons-dir",
".",
]
if not dry_run:
gen_addon_readme_cmd.append("--commit")
subprocess.check_output(gen_addon_readme_cmd, stderr=subprocess.STDOUT)
def _gen_addons_icon(org, repo, branch, dry_run):
_logger.info("oca-gen-addon-icon in %s/%s@%s", org, repo, branch)
gen_addon_icon_cmd = ["oca-gen-addon-icon", "--addons-dir", "."]
if not dry_run:
gen_addon_icon_cmd.append("--commit")
subprocess.check_output(gen_addon_icon_cmd, stderr=subprocess.STDOUT)
def _setuptools_odoo_make_default(org, repo, branch, dry_run):
_logger.info("setuptools-odoo-make-default in %s/%s@%s\n", org, repo, branch)
make_default_setup_cmd = [
"setuptools-odoo-make-default",
"--addons-dir",
".",
"--metapackage",
"oca-" + repo,
"--clean",
]
if not dry_run:
make_default_setup_cmd.append("--commit")
subprocess.check_output(make_default_setup_cmd, stderr=subprocess.STDOUT)
@task()
def main_branch_bot(org, repo, branch, dry_run=False):
if not is_main_branch_bot_branch(branch):
return
with temporary_clone(org, repo, branch):
if not manifest.is_addons_dir("."):
return
_logger.info(f"main_branch_bot {org}/{repo}@{branch}")
# update addons table in README.md
_gen_addons_table(org, repo, branch, dry_run)
# generate README.rst
_gen_addons_readme(org, repo, branch, dry_run)
# generate icon
_gen_addons_icon(org, repo, branch, dry_run)
# generate/clean default setup.py
_setuptools_odoo_make_default(org, repo, branch, dry_run)
# push changes to git, if any
if dry_run:
_logger.info(f"DRY-RUN git push in {org}/{repo}@{branch}")
else:
_logger.info(f"git push in {org}/{repo}@{branch}")
git_push_if_needed("origin", branch)
@task()
def main_branch_bot_all_repos(org, dry_run=False):
with github.login() as gh:
for repo in gh.repositories_by(org):
for branch in repo.branches():
main_branch_bot.delay(org, repo.name, branch.name, dry_run)