1515from rpdk .core .init import input_with_validation
1616from rpdk .core .jsonutils .resolver import ContainerType , resolve_models
1717from rpdk .core .plugin_base import LanguagePlugin
18+ from rpdk .core .project import ARTIFACT_TYPE_HOOK
1819
1920from . import __version__
2021from .resolver import contains_model , translate_type
@@ -38,7 +39,9 @@ class Python36LanguagePlugin(LanguagePlugin):
3839 MODULE_NAME = __name__
3940 NAME = "python36"
4041 RUNTIME = "python3.6"
41- ENTRY_POINT = "{}.handlers.resource"
42+ HOOK_ENTRY_POINT = "{}.handlers.hook"
43+ RESOURCE_ENTRY_POINT = "{}.handlers.resource"
44+ TEST_ENTRY_POINT = "{}.handlers.test_entrypoint"
4245 CODE_URI = "build/"
4346
4447 def __init__ (self ):
@@ -63,6 +66,18 @@ def _init_from_project(self, project):
6366 def _init_settings (self , project ):
6467 LOG .debug ("Writing settings" )
6568
69+ project .runtime = self .RUNTIME
70+ if project .artifact_type == ARTIFACT_TYPE_HOOK :
71+ project .entrypoint = self .HOOK_ENTRY_POINT .format (self .package_name )
72+ project .test_entrypoint = project .entrypoint .replace (
73+ ".hook" , ".test_entrypoint"
74+ )
75+ else :
76+ project .entrypoint = self .RESOURCE_ENTRY_POINT .format (self .package_name )
77+ project .test_entrypoint = project .entrypoint .replace (
78+ ".resource" , ".test_entrypoint"
79+ )
80+
6681 self ._use_docker = self ._use_docker or input_with_validation (
6782 "Use docker for platform-independent packaging (Y/n)?\n " ,
6883 validate_no ,
@@ -79,12 +94,6 @@ def init(self, project):
7994 self ._init_from_project (project )
8095 self ._init_settings (project )
8196
82- project .runtime = self .RUNTIME
83- project .entrypoint = self .ENTRY_POINT .format (self .package_name )
84- project .test_entrypoint = project .entrypoint .replace (
85- ".resource" , ".test_entrypoint"
86- )
87-
8897 def _render_template (path , ** kwargs ):
8998 LOG .debug ("Writing '%s'" , path )
9099 template = self .env .get_template (path .name )
@@ -103,11 +112,7 @@ def _copy_resource(path, resource_name=None):
103112 LOG .debug ("Making folder '%s'" , handler_package_path )
104113 handler_package_path .mkdir (parents = True , exist_ok = True )
105114 _copy_resource (handler_package_path / "__init__.py" )
106- _render_template (
107- handler_package_path / "handlers.py" ,
108- support_lib_pkg = SUPPORT_LIB_PKG ,
109- type_name = project .type_name ,
110- )
115+ self .init_handlers (project , handler_package_path )
111116 # models.py produced by generate
112117
113118 # project support files
@@ -144,12 +149,25 @@ def _copy_resource(path, resource_name=None):
144149
145150 LOG .debug ("Init complete" )
146151
152+ def init_handlers (self , project , handler_package_path ):
153+ path = handler_package_path / "handlers.py"
154+ if project .artifact_type == ARTIFACT_TYPE_HOOK :
155+ template = self .env .get_template ("hook_handlers.py" )
156+ else :
157+ template = self .env .get_template ("handlers.py" )
158+ contents = template .render (
159+ support_lib_pkg = SUPPORT_LIB_PKG , type_name = project .type_name
160+ )
161+ project .safewrite (path , contents )
162+
147163 def generate (self , project ):
148164 LOG .debug ("Generate started" )
149165
150166 self ._init_from_project (project )
151-
152- models = resolve_models (project .schema )
167+ if project .artifact_type == ARTIFACT_TYPE_HOOK :
168+ models = resolve_models (project .schema , "HookInputModel" )
169+ else :
170+ models = resolve_models (project .schema )
153171
154172 if project .configuration_schema :
155173 configuration_schema_path = (
@@ -165,7 +183,11 @@ def generate(self, project):
165183
166184 path = self .package_root / self .package_name / "models.py"
167185 LOG .debug ("Writing file: %s" , path )
168- template = self .env .get_template ("models.py" )
186+ if project .artifact_type == ARTIFACT_TYPE_HOOK :
187+ template = self .env .get_template ("hook_models.py" )
188+ else :
189+ template = self .env .get_template ("models.py" )
190+
169191 contents = template .render (support_lib_pkg = SUPPORT_LIB_PKG , models = models )
170192 project .overwrite (path , contents )
171193
0 commit comments