15
15
from rpdk .core .init import input_with_validation
16
16
from rpdk .core .jsonutils .resolver import ContainerType , resolve_models
17
17
from rpdk .core .plugin_base import LanguagePlugin
18
+ from rpdk .core .project import ARTIFACT_TYPE_HOOK
18
19
19
20
from . import __version__
20
21
from .resolver import contains_model , translate_type
@@ -38,7 +39,9 @@ class Python36LanguagePlugin(LanguagePlugin):
38
39
MODULE_NAME = __name__
39
40
NAME = "python36"
40
41
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"
42
45
CODE_URI = "build/"
43
46
44
47
def __init__ (self ):
@@ -63,6 +66,18 @@ def _init_from_project(self, project):
63
66
def _init_settings (self , project ):
64
67
LOG .debug ("Writing settings" )
65
68
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
+
66
81
self ._use_docker = self ._use_docker or input_with_validation (
67
82
"Use docker for platform-independent packaging (Y/n)?\n " ,
68
83
validate_no ,
@@ -79,12 +94,6 @@ def init(self, project):
79
94
self ._init_from_project (project )
80
95
self ._init_settings (project )
81
96
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
-
88
97
def _render_template (path , ** kwargs ):
89
98
LOG .debug ("Writing '%s'" , path )
90
99
template = self .env .get_template (path .name )
@@ -103,11 +112,7 @@ def _copy_resource(path, resource_name=None):
103
112
LOG .debug ("Making folder '%s'" , handler_package_path )
104
113
handler_package_path .mkdir (parents = True , exist_ok = True )
105
114
_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 )
111
116
# models.py produced by generate
112
117
113
118
# project support files
@@ -144,12 +149,25 @@ def _copy_resource(path, resource_name=None):
144
149
145
150
LOG .debug ("Init complete" )
146
151
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
+
147
163
def generate (self , project ):
148
164
LOG .debug ("Generate started" )
149
165
150
166
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 )
153
171
154
172
if project .configuration_schema :
155
173
configuration_schema_path = (
@@ -165,7 +183,11 @@ def generate(self, project):
165
183
166
184
path = self .package_root / self .package_name / "models.py"
167
185
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
+
169
191
contents = template .render (support_lib_pkg = SUPPORT_LIB_PKG , models = models )
170
192
project .overwrite (path , contents )
171
193
0 commit comments