mirror of
https://github.com/revanced/revanced-static-api.git
synced 2025-04-29 22:24:37 +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 app.dependencies import ApiContainer
|
||||
|
||||
|
||||
class Generator(ABC):
|
||||
_api: api.Api | None
|
||||
|
||||
@ -80,7 +81,7 @@ class ContributorsGenerator(Generator):
|
||||
Generates a contributor file for each repository in the config:
|
||||
- contributors/<repository>.json: Contributors of the repository.
|
||||
"""
|
||||
|
||||
|
||||
_api: api.Api
|
||||
|
||||
@inject
|
||||
@ -124,7 +125,7 @@ class TeamGenerator(Generator):
|
||||
Generates a team file containing the members of the organization:
|
||||
- team.json: Members of the organization.
|
||||
"""
|
||||
|
||||
|
||||
_api: api.Api
|
||||
|
||||
@inject
|
||||
@ -224,49 +225,15 @@ class RemoveAnnouncementGenerator(Generator):
|
||||
# TODO: Implement this
|
||||
pass
|
||||
|
||||
class GeneratorProvider:
|
||||
"""
|
||||
Provides a way to get a generator by name.
|
||||
"""
|
||||
_generators = {}
|
||||
|
||||
def __init__(self, generators: list[Generator]):
|
||||
"""
|
||||
Args:
|
||||
generators (list[Generator]): A list of generators.
|
||||
"""
|
||||
for generator in generators:
|
||||
self._generators[generator.name] = generator
|
||||
|
||||
def get(self, name: str) -> Generator | None:
|
||||
"""
|
||||
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()
|
||||
]
|
||||
)
|
||||
generators = {
|
||||
generator.name: generator for generator in [
|
||||
ReleasesGenerator(),
|
||||
ContributorsGenerator(),
|
||||
TeamGenerator(),
|
||||
ConnectionsGenerator(),
|
||||
DonationsGenerator(),
|
||||
AnnouncementGenerator(),
|
||||
RemoveAnnouncementGenerator()
|
||||
]
|
||||
}
|
||||
|
44
main.py
44
main.py
@ -4,33 +4,41 @@ import os
|
||||
import shutil
|
||||
from app.config import load_config
|
||||
from app.dependencies import wire_dependencies
|
||||
from app.generator import DefaultGeneratorProvider
|
||||
from app.generator import generators
|
||||
|
||||
|
||||
def main():
|
||||
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):
|
||||
shutil.rmtree(path)
|
||||
elif isfile(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__":
|
||||
wire_dependencies()
|
||||
|
Loading…
x
Reference in New Issue
Block a user