180 lines
4.5 KiB
Python
180 lines
4.5 KiB
Python
import os.path
|
|
import textwrap
|
|
|
|
from cpl.utils.string import String
|
|
from cpl_cli.templates.template_file_abc import TemplateFileABC
|
|
|
|
|
|
class MainWithApplicationHostAndStartupTemplate(TemplateFileABC):
|
|
|
|
def __init__(self, name: str, path: str):
|
|
TemplateFileABC.__init__(self)
|
|
|
|
name = String.convert_to_snake_case(name)
|
|
self._name = 'main.py'
|
|
self._path = os.path.join(path, name)
|
|
|
|
import_pkg = f'{name}.'
|
|
if name == '':
|
|
import_pkg = ''
|
|
|
|
self._value = textwrap.dedent(f"""\
|
|
from cpl.application import ApplicationBuilder
|
|
|
|
from {import_pkg}application import Application
|
|
from {import_pkg}startup import Startup
|
|
|
|
|
|
def main():
|
|
app_builder = ApplicationBuilder(Application)
|
|
app_builder.use_startup(Startup)
|
|
app_builder.build().run()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
""")
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return self._name
|
|
|
|
@property
|
|
def path(self) -> str:
|
|
return self._path
|
|
|
|
@property
|
|
def value(self) -> str:
|
|
return self._value
|
|
|
|
|
|
class MainWithApplicationBaseTemplate(TemplateFileABC):
|
|
|
|
def __init__(self, name: str, path: str):
|
|
TemplateFileABC.__init__(self)
|
|
|
|
name = String.convert_to_snake_case(name)
|
|
self._name = 'main.py'
|
|
self._path = os.path.join(path, name)
|
|
|
|
import_pkg = f'{name}.'
|
|
if name == '':
|
|
import_pkg = ''
|
|
|
|
self._value = textwrap.dedent(f"""\
|
|
from cpl.application import ApplicationBuilder
|
|
|
|
from {import_pkg}application import Application
|
|
|
|
|
|
def main():
|
|
app_builder = ApplicationBuilder(Application)
|
|
app_builder.build().run()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
""")
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return self._name
|
|
|
|
@property
|
|
def path(self) -> str:
|
|
return self._path
|
|
|
|
@property
|
|
def value(self) -> str:
|
|
return self._value
|
|
|
|
|
|
class MainWithoutApplicationBaseTemplate(TemplateFileABC):
|
|
|
|
def __init__(self, name: str, path: str):
|
|
TemplateFileABC.__init__(self)
|
|
|
|
name = String.convert_to_snake_case(name)
|
|
self._name = 'main.py'
|
|
self._path = os.path.join(path, name)
|
|
|
|
import_pkg = f'{name}.'
|
|
if name == '':
|
|
import_pkg = ''
|
|
|
|
self._value = textwrap.dedent("""\
|
|
from cpl.console import Console
|
|
|
|
|
|
def main():
|
|
Console.write_line('Hello World')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
""")
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return self._name
|
|
|
|
@property
|
|
def path(self) -> str:
|
|
return self._path
|
|
|
|
@property
|
|
def value(self) -> str:
|
|
return self._value
|
|
|
|
|
|
class MainWithDependencyInjection(TemplateFileABC):
|
|
|
|
def __init__(self, name: str, path: str):
|
|
TemplateFileABC.__init__(self)
|
|
|
|
name = String.convert_to_snake_case(name)
|
|
self._name = 'main.py'
|
|
self._path = os.path.join(path, name)
|
|
|
|
import_pkg = f'{name}.'
|
|
if name == '':
|
|
import_pkg = ''
|
|
|
|
self._value = textwrap.dedent("""\
|
|
from cpl.configuration import Configuration, ConfigurationABC
|
|
from cpl.console import Console
|
|
from cpl.dependency_injection import ServiceCollection, ServiceProviderABC
|
|
|
|
|
|
def configure_configuration() -> ConfigurationABC:
|
|
config = Configuration()
|
|
return config
|
|
|
|
|
|
def configure_services(config: ConfigurationABC) -> ServiceProviderABC:
|
|
services = ServiceCollection(config)
|
|
return services.build_service_provider()
|
|
|
|
|
|
def main():
|
|
config = configure_configuration()
|
|
provider = configure_services(config)
|
|
Console.write_line('Hello World')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
""")
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return self._name
|
|
|
|
@property
|
|
def path(self) -> str:
|
|
return self._path
|
|
|
|
@property
|
|
def value(self) -> str:
|
|
return self._value
|