mirror of
https://github.com/revanced/revanced-static-api.git
synced 2025-04-30 06:34:30 +02:00
refactor: Simplify code
This commit is contained in:
parent
16c7ca4668
commit
915d96d79d
@ -5,6 +5,7 @@ from abc import ABC, abstractmethod
|
|||||||
from dependency_injector.wiring import Provide, inject
|
from dependency_injector.wiring import Provide, inject
|
||||||
from app.dependencies import ApiContainer
|
from app.dependencies import ApiContainer
|
||||||
|
|
||||||
|
|
||||||
class Generator(ABC):
|
class Generator(ABC):
|
||||||
_api: api.Api | None
|
_api: api.Api | None
|
||||||
|
|
||||||
@ -80,7 +81,7 @@ class ContributorsGenerator(Generator):
|
|||||||
Generates a contributor file for each repository in the config:
|
Generates a contributor file for each repository in the config:
|
||||||
- contributors/<repository>.json: Contributors of the repository.
|
- contributors/<repository>.json: Contributors of the repository.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_api: api.Api
|
_api: api.Api
|
||||||
|
|
||||||
@inject
|
@inject
|
||||||
@ -124,7 +125,7 @@ class TeamGenerator(Generator):
|
|||||||
Generates a team file containing the members of the organization:
|
Generates a team file containing the members of the organization:
|
||||||
- team.json: Members of the organization.
|
- team.json: Members of the organization.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_api: api.Api
|
_api: api.Api
|
||||||
|
|
||||||
@inject
|
@inject
|
||||||
@ -224,49 +225,15 @@ class RemoveAnnouncementGenerator(Generator):
|
|||||||
# TODO: Implement this
|
# TODO: Implement this
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class GeneratorProvider:
|
|
||||||
"""
|
|
||||||
Provides a way to get a generator by name.
|
|
||||||
"""
|
|
||||||
_generators = {}
|
|
||||||
|
|
||||||
def __init__(self, generators: list[Generator]):
|
generators = {
|
||||||
"""
|
generator.name: generator for generator in [
|
||||||
Args:
|
ReleasesGenerator(),
|
||||||
generators (list[Generator]): A list of generators.
|
ContributorsGenerator(),
|
||||||
"""
|
TeamGenerator(),
|
||||||
for generator in generators:
|
ConnectionsGenerator(),
|
||||||
self._generators[generator.name] = generator
|
DonationsGenerator(),
|
||||||
|
AnnouncementGenerator(),
|
||||||
def get(self, name: str) -> Generator | None:
|
RemoveAnnouncementGenerator()
|
||||||
"""
|
]
|
||||||
Gets a generator by name.
|
}
|
||||||
|
|
||||||
Args:
|
|
||||||
name (str): The name of the generator.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Generator | None: The generator if found, otherwise None.
|
|
||||||
"""
|
|
||||||
return self._generators[name] if name in self._generators else None
|
|
||||||
|
|
||||||
class DefaultGeneratorProvider(GeneratorProvider):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(
|
|
||||||
[
|
|
||||||
ReleasesGenerator(),
|
|
||||||
ContributorsGenerator(),
|
|
||||||
TeamGenerator(),
|
|
||||||
ConnectionsGenerator(),
|
|
||||||
DonationsGenerator()
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
class AnnouncementsGeneratorProvider(GeneratorProvider):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(
|
|
||||||
[
|
|
||||||
AnnouncementGenerator(),
|
|
||||||
RemoveAnnouncementGenerator()
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
44
main.py
44
main.py
@ -4,33 +4,41 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
from app.config import load_config
|
from app.config import load_config
|
||||||
from app.dependencies import wire_dependencies
|
from app.dependencies import wire_dependencies
|
||||||
from app.generator import DefaultGeneratorProvider
|
from app.generator import generators
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
config = load_config()
|
config = load_config()
|
||||||
|
|
||||||
for path in config["purge"]:
|
purge(config["purge"])
|
||||||
|
|
||||||
|
generate(config)
|
||||||
|
|
||||||
|
|
||||||
|
def generate(config):
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
tasks = []
|
||||||
|
|
||||||
|
output = config["output"]
|
||||||
|
for generator_config in config["configs"]:
|
||||||
|
for generator_name in generator_config["generators"]:
|
||||||
|
generator = generators[generator_name] if generator_name in generators else None
|
||||||
|
|
||||||
|
tasks.append(
|
||||||
|
loop.create_task(generator.generate(generator_config, output))
|
||||||
|
) if generator is not None else print(f"Generator {generator_name} not found.")
|
||||||
|
|
||||||
|
loop.run_until_complete(asyncio.wait(tasks))
|
||||||
|
loop.close()
|
||||||
|
|
||||||
|
|
||||||
|
def purge(paths):
|
||||||
|
for path in paths:
|
||||||
if isdir(path):
|
if isdir(path):
|
||||||
shutil.rmtree(path)
|
shutil.rmtree(path)
|
||||||
elif isfile(path):
|
elif isfile(path):
|
||||||
os.remove(path)
|
os.remove(path)
|
||||||
|
|
||||||
output = config["output"]
|
|
||||||
generator_provider = DefaultGeneratorProvider()
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
tasks = []
|
|
||||||
|
|
||||||
for generator_config in config["configs"]:
|
|
||||||
for generator_name in generator_config["generators"]:
|
|
||||||
generator = generator_provider.get(generator_name)
|
|
||||||
|
|
||||||
tasks.append(
|
|
||||||
loop.create_task(generator.generate(generator_config, output))
|
|
||||||
) if generator is not None else print(f"Generator {generator_name} not found.")
|
|
||||||
|
|
||||||
loop.run_until_complete(asyncio.wait(tasks))
|
|
||||||
loop.close()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
wire_dependencies()
|
wire_dependencies()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user