Ryujinx-Mako/ryujinx_mako/commands/_subcommand.py

66 lines
1.5 KiB
Python
Raw Normal View History

Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
import logging
from abc import ABC, abstractmethod
from argparse import ArgumentParser, Namespace
from typing import Any
Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
from github import Github
from github.Auth import AppAuth
from ryujinx_mako._const import (
APP_ID,
PRIVATE_KEY,
INSTALLATION_ID,
SCRIPT_NAME,
IS_DRY_RUN,
)
Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
class Subcommand(ABC):
_subcommands: dict[str, Any] = {}
Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
@abstractmethod
def __init__(self, parser: ArgumentParser):
parser.set_defaults(func=self.run)
@property
def logger(self):
return logging.getLogger(SCRIPT_NAME).getChild(
type(self).name().replace("-", "_")
)
@abstractmethod
def run(self, args: Namespace):
raise NotImplementedError()
@staticmethod
@abstractmethod
def name() -> str:
raise NotImplementedError()
@staticmethod
@abstractmethod
def description() -> str:
raise NotImplementedError()
@classmethod
def get_subcommand(cls, name: str):
return cls._subcommands[name]
@classmethod
def add_subcommand(cls, name: str, subcommand):
if name in cls._subcommands.keys():
raise ValueError(f"Key '{name}' already exists in {cls}._subcommands")
cls._subcommands[name] = subcommand
Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
class GithubSubcommand(Subcommand, ABC):
_github = (
Github(auth=AppAuth(APP_ID, PRIVATE_KEY).get_installation_auth(INSTALLATION_ID))
if not IS_DRY_RUN
else None
Create a new python package for the current scripts (#1) * infra: Add PR triage action (#5293) This is a bare minimal triage action that handle big categories. In the future we could also label all services correctly but I didn't felt this was required for a first iteration. * infra: Fix PR triage workflow glob patterns (#5297) * Use glob patterns to match file paths * Update ignored paths for releases * Adjust build.yml as well * Add names to auto-assign steps * Fix developer team name * Allow build workflows to run if workflows changed * Fix action version (#5299) * infra: Sync paths-ignore with release job and attempt to fix review assign * infra: Fix PR triage once and for all (#5442) Switch to a custom made python script that query GitHub API to grab latest state of the PR after label assign. * infra: Fix team name in reviewer.yml * infra: do not assign developers team for now Hopefully fix PR triage for real... * Introduce Mako to fix pr_triage workflow (#5574) * pr_triage: Fix invalid workflow * Don't assign reviewers to draft PRs * Add team review request for developers team * Introduce Mako to make team reviewers work * Convert app and installation ids to int (#5587) * infra: add missing quotes around @ developers in reviewers.yml * Adjust README.md and LICENSE * Remove unneeded workflow files * Add basic .editorconfig * Add basic requirements.txt * Add dependabot.yml * Add formatting workflow * Move update_reviewers.py into a new python module * Add reviewers.yml template * Replace requirements.txt with poetry * Fix typo * Add setup-mako action * Add constants to private module * Migrate update_reviewers to subcommand * Add NullHandler for root logger * Add setup-git subcommand * Group all subcommands * Add main script for ryujinx_mako * Create ryujinx-mako command * Add more information to README.md * Apply black formatting * Make PR author check case-insensitive --------- Co-authored-by: Mary <mary@mary.zone> Co-authored-by: ryujinx-mako[bot] <142357924+ryujinx-mako[bot]@users.noreply.github.com>
2023-08-30 17:00:29 +00:00
)
@property
def github(self):
return type(self)._github