sh_cpl/src/cpl_cli/main.py

53 lines
1.4 KiB
Python
Raw Normal View History

from typing import Type
import pkg_resources
2021-03-03 18:37:54 +01:00
from cpl_cli.cli import CLI
from cpl_cli.startup import Startup
from cpl_cli.startup_argument_extension import StartupArgumentExtension
from cpl_core.application.application_builder import ApplicationBuilder
from cpl_core.application.startup_extension_abc import StartupExtensionABC
def get_startup_extensions() -> list[Type[StartupExtensionABC]]:
blacklisted_packages = ['cpl-cli']
startup_extensions = []
installed_packages = pkg_resources.working_set
for p in installed_packages:
package = str(p).split(' ')[0]
if not package.startswith('cpl-') or package in blacklisted_packages:
continue
package = package.replace('-', '_')
loaded_package = __import__(package)
if '__cli_startup_extension__' not in dir(loaded_package):
continue
startup_extensions.append(loaded_package.__cli_startup_extension__)
return startup_extensions
2021-03-03 18:37:54 +01:00
2021-03-08 20:29:08 +01:00
def main():
2021-03-19 14:15:53 +01:00
app_builder = ApplicationBuilder(CLI)
app_builder.use_startup(Startup)
2022-05-19 18:09:25 +02:00
app_builder.use_extension(StartupArgumentExtension)
for extension in get_startup_extensions():
app_builder.use_extension(extension)
2021-03-19 14:15:53 +01:00
app_builder.build().run()
2021-03-09 22:29:14 +01:00
if __name__ == '__main__':
main()
# ((
# ( `)
# ; / ,
# / \/
# / |
# / ~/
# / ) ) ~ edraft
# ___// | /
# `--' \_~-,