Add CODEOWNERS support

This commit is contained in:
Zach White 2021-09-18 22:51:44 -07:00
parent c4a891d425
commit 65fd33ec0e
4 changed files with 14 additions and 5 deletions

2
CODEOWNERS Normal file
View file

@ -0,0 +1,2 @@
* @qmk/collaborators
/lib/python/* @skullydazed @erovia

View file

@ -17,7 +17,7 @@ def ping_maintainers(cli):
for file in cli.args.files: for file in cli.args.files:
for maintainer in maintainers(file): for maintainer in maintainers(file):
if maintainer != 'qmk/collaborators': if maintainer != 'qmk/collaborators':
github_maintainers.add('@' + maintainer) github_maintainers.add(maintainer)
if github_maintainers: if github_maintainers:
print(f'If you were pinged by this comment you have one or more files being changed by this PR: {" ".join(sorted(github_maintainers))}') print(f'If you were pinged by this comment you have one or more files being changed by this PR: {" ".join(sorted(github_maintainers))}')

View file

@ -1,12 +1,17 @@
from pathlib import Path from pathlib import Path
from codeowners import CodeOwners
from qmk.json_schema import json_load from qmk.json_schema import json_load
codeowners_file = Path('CODEOWNERS')
codeowners = CodeOwners(codeowners_file.read_text())
def maintainers(file): def maintainers(file):
"""Yields maintainers for a file. """Yields maintainers for a file.
""" """
maintainers = 'qmk' maintainers = [owner[1] for owner in codeowners.of(str(file))]
file_dir = file if file.is_dir() else file.parent file_dir = file if file.is_dir() else file.parent
cur_path = Path('.') cur_path = Path('.')
@ -16,7 +21,8 @@ def maintainers(file):
info_file = cur_path / 'info.json' info_file = cur_path / 'info.json'
if info_file.exists(): if info_file.exists():
new_info_data = json_load(info_file) new_info_data = json_load(info_file)
maintainers = new_info_data.get('maintainer', maintainers) maintainers = new_info_data.get('maintainer').replace(',', ' ').split()
maintainers = ['@' + maintainer for maintainer in maintainers]
for maintainer in maintainers.replace(',', ' ').split(): for maintainer in maintainers:
yield 'qmk/collaborators' if maintainer == 'qmk' else maintainer yield '@qmk/collaborators' if maintainer == 'qmk' else maintainer

View file

@ -2,6 +2,7 @@
-r requirements.txt -r requirements.txt
# Python development requirements # Python development requirements
codeowners
nose2 nose2
flake8 flake8
pep8-naming pep8-naming