"""dolby-atmos-packager-alpha.""" import inspect import uuid import config import sentry_sdk import src.exceptions from src.packagers import * # noqa: import all subclasses from src.packagers.base import AbstractPackager async def main(): """App entrypoint.""" sentry_dsn = config.SENTRY_DSN if sentry_dsn: print('Sentry enabled') sentry_sdk.init(sentry_dsn) else: print('Sentry disabled') exit_code = 0 try: packager = select_packager(config.DMS_ID) print(packager) job_id = config.JOB_ID or str(uuid.uuid4()) print(job_id) await packager.package( config.STEREO_UPC, config.SPATIAL_UPC, job_id ) except src.exceptions.AppException as e: print(type(e)) exit_code = e.exit_code print(f'Exit code: {exit_code}') exit(exit_code) def select_packager(dms_id): """Find packager matching dms_id.""" try: return [ x() for x in load_subclasses(AbstractPackager) if x.dms_id == dms_id ][0] except IndexError: raise src.exceptions.DMSPackagerNotFound() def load_subclasses(class_def, subclasses=[]): """Recursive load subclasses.""" for x in class_def.__subclasses__(): if inspect.isabstract(x): subclasses = load_subclasses(x, subclasses) else: subclasses.append(x) return subclasses