refactor: Simplify code

This commit is contained in:
oSumAtrIX 2023-11-03 22:37:30 +01:00
parent 16c7ca4668
commit 915d96d79d
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
2 changed files with 40 additions and 65 deletions

View File

@ -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
@ -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:
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(), ReleasesGenerator(),
ContributorsGenerator(), ContributorsGenerator(),
TeamGenerator(), TeamGenerator(),
ConnectionsGenerator(), ConnectionsGenerator(),
DonationsGenerator() DonationsGenerator(),
]
)
class AnnouncementsGeneratorProvider(GeneratorProvider):
def __init__(self):
super().__init__(
[
AnnouncementGenerator(), AnnouncementGenerator(),
RemoveAnnouncementGenerator() RemoveAnnouncementGenerator()
] ]
) }

26
main.py
View File

@ -4,26 +4,25 @@ 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"])
if isdir(path):
shutil.rmtree(path)
elif isfile(path):
os.remove(path)
output = config["output"] generate(config)
generator_provider = DefaultGeneratorProvider()
def generate(config):
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
tasks = [] tasks = []
output = config["output"]
for generator_config in config["configs"]: for generator_config in config["configs"]:
for generator_name in generator_config["generators"]: for generator_name in generator_config["generators"]:
generator = generator_provider.get(generator_name) generator = generators[generator_name] if generator_name in generators else None
tasks.append( tasks.append(
loop.create_task(generator.generate(generator_config, output)) loop.create_task(generator.generate(generator_config, output))
@ -32,6 +31,15 @@ def main():
loop.run_until_complete(asyncio.wait(tasks)) loop.run_until_complete(asyncio.wait(tasks))
loop.close() loop.close()
def purge(paths):
for path in paths:
if isdir(path):
shutil.rmtree(path)
elif isfile(path):
os.remove(path)
if __name__ == "__main__": if __name__ == "__main__":
wire_dependencies() wire_dependencies()
main() main()