@voxgig/sdkgen 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/ReadmeEntity.js +9 -153
  3. package/dist/cmp/ReadmeEntity.js.map +1 -1
  4. package/dist/cmp/ReadmeIntro.js +9 -14
  5. package/dist/cmp/ReadmeIntro.js.map +1 -1
  6. package/dist/cmp/ReadmeModel.js +6 -4
  7. package/dist/cmp/ReadmeModel.js.map +1 -1
  8. package/dist/cmp/ReadmeOptions.js +9 -61
  9. package/dist/cmp/ReadmeOptions.js.map +1 -1
  10. package/dist/cmp/ReadmeRef.js +10 -1328
  11. package/dist/cmp/ReadmeRef.js.map +1 -1
  12. package/dist/sdkgen.d.ts +2 -2
  13. package/dist/sdkgen.js +2 -1
  14. package/dist/sdkgen.js.map +1 -1
  15. package/dist/utility.d.ts +2 -1
  16. package/dist/utility.js +9 -0
  17. package/dist/utility.js.map +1 -1
  18. package/package.json +1 -1
  19. package/project/.sdk/src/cmp/go/Config_go.ts +9 -4
  20. package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +138 -0
  21. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -3
  22. package/project/.sdk/src/cmp/go/ReadmeIntro_go.ts +18 -0
  23. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +6 -3
  24. package/project/.sdk/src/cmp/go/ReadmeOptions_go.ts +58 -0
  25. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +11 -7
  26. package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +354 -0
  27. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +6 -4
  28. package/project/.sdk/src/cmp/go/TestDirect_go.ts +18 -8
  29. package/project/.sdk/src/cmp/go/TestEntity_go.ts +105 -54
  30. package/project/.sdk/src/cmp/js/Config_js.ts +18 -0
  31. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +138 -0
  32. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +11 -6
  33. package/project/.sdk/src/cmp/js/ReadmeIntro_js.ts +18 -0
  34. package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +6 -3
  35. package/project/.sdk/src/cmp/js/ReadmeOptions_js.ts +58 -0
  36. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +6 -4
  37. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +384 -0
  38. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +6 -4
  39. package/project/.sdk/src/cmp/js/TestDirect_js.ts +23 -12
  40. package/project/.sdk/src/cmp/js/TestEntity_js.ts +107 -74
  41. package/project/.sdk/src/cmp/js/fragment/Config.fragment.js +1 -5
  42. package/project/.sdk/src/cmp/lua/Config_lua.ts +9 -4
  43. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +138 -0
  44. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -3
  45. package/project/.sdk/src/cmp/lua/ReadmeIntro_lua.ts +18 -0
  46. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +6 -3
  47. package/project/.sdk/src/cmp/lua/ReadmeOptions_lua.ts +58 -0
  48. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +6 -4
  49. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +360 -0
  50. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +6 -4
  51. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +18 -8
  52. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +95 -51
  53. package/project/.sdk/src/cmp/php/Config_php.ts +10 -8
  54. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +138 -0
  55. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -3
  56. package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +18 -0
  57. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +6 -3
  58. package/project/.sdk/src/cmp/php/ReadmeOptions_php.ts +58 -0
  59. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +6 -4
  60. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +358 -0
  61. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +6 -4
  62. package/project/.sdk/src/cmp/php/TestDirect_php.ts +18 -8
  63. package/project/.sdk/src/cmp/php/TestEntity_php.ts +101 -54
  64. package/project/.sdk/src/cmp/py/Config_py.ts +9 -4
  65. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +138 -0
  66. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +6 -3
  67. package/project/.sdk/src/cmp/py/ReadmeIntro_py.ts +18 -0
  68. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +6 -3
  69. package/project/.sdk/src/cmp/py/ReadmeOptions_py.ts +58 -0
  70. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +9 -6
  71. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +356 -0
  72. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +9 -6
  73. package/project/.sdk/src/cmp/py/TestDirect_py.ts +18 -8
  74. package/project/.sdk/src/cmp/py/TestEntity_py.ts +100 -50
  75. package/project/.sdk/src/cmp/rb/Config_rb.ts +9 -4
  76. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +138 -0
  77. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +6 -3
  78. package/project/.sdk/src/cmp/rb/ReadmeIntro_rb.ts +18 -0
  79. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +6 -3
  80. package/project/.sdk/src/cmp/rb/ReadmeOptions_rb.ts +58 -0
  81. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +6 -4
  82. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +361 -0
  83. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +6 -4
  84. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +18 -8
  85. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +95 -51
  86. package/project/.sdk/src/cmp/ts/Config_ts.ts +18 -0
  87. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +138 -0
  88. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +11 -6
  89. package/project/.sdk/src/cmp/ts/ReadmeIntro_ts.ts +18 -0
  90. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +9 -5
  91. package/project/.sdk/src/cmp/ts/ReadmeOptions_ts.ts +58 -0
  92. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +6 -4
  93. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +384 -0
  94. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +6 -4
  95. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +68 -20
  96. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +109 -74
  97. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +1 -5
  98. package/project/.sdk/tm/go/utility/prepare_auth.go +15 -1
  99. package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +7 -1
  100. package/project/.sdk/tm/lua/utility/prepare_auth.lua +9 -1
  101. package/project/.sdk/tm/php/utility/PrepareAuth.php +11 -1
  102. package/project/.sdk/tm/py/utility/prepare_auth.py +10 -1
  103. package/project/.sdk/tm/rb/utility/prepare_auth.rb +8 -1
  104. package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +7 -8
  105. package/project/.sdk/tm/ts/src/utility/PrepareAuthUtility.ts +7 -1
  106. package/src/cmp/ReadmeEntity.ts +11 -178
  107. package/src/cmp/ReadmeIntro.ts +11 -25
  108. package/src/cmp/ReadmeModel.ts +7 -5
  109. package/src/cmp/ReadmeOptions.ts +12 -74
  110. package/src/cmp/ReadmeRef.ts +11 -1372
  111. package/src/sdkgen.ts +2 -1
  112. package/src/utility.ts +12 -0
  113. /package/project/.sdk/tm/go/utility/{make_target.go → make_point.go} +0 -0
@@ -0,0 +1,356 @@
1
+
2
+ import { cmp, each, Content, File, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+
10
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
11
+ load: {
12
+ sig: 'load(reqmatch, ctrl=None) -> tuple',
13
+ returns: '(result, err)',
14
+ desc: 'Load a single entity matching the given criteria.',
15
+ },
16
+ list: {
17
+ sig: 'list(reqmatch, ctrl=None) -> tuple',
18
+ returns: '(result, err)',
19
+ desc: 'List entities matching the given criteria. Returns an array.',
20
+ },
21
+ create: {
22
+ sig: 'create(reqdata, ctrl=None) -> tuple',
23
+ returns: '(result, err)',
24
+ desc: 'Create a new entity with the given data.',
25
+ },
26
+ update: {
27
+ sig: 'update(reqdata, ctrl=None) -> tuple',
28
+ returns: '(result, err)',
29
+ desc: 'Update an existing entity. The data must include the entity `id`.',
30
+ },
31
+ remove: {
32
+ sig: 'remove(reqmatch, ctrl=None) -> tuple',
33
+ returns: '(result, err)',
34
+ desc: 'Remove the entity matching the given criteria.',
35
+ },
36
+ }
37
+
38
+
39
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
40
+ const { target } = props
41
+ const { model } = props.ctx$
42
+
43
+ const entity = getModelPath(model, `main.${KIT}.entity`)
44
+ const feature = getModelPath(model, `main.${KIT}.feature`)
45
+
46
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
47
+
48
+
49
+ File({ name: 'REFERENCE.md' }, () => {
50
+
51
+ Content(`# ${model.Name} ${target.title} SDK Reference
52
+
53
+ Complete API reference for the ${model.Name} ${target.title} SDK.
54
+
55
+
56
+ ## ${model.Name}SDK
57
+
58
+ ### Constructor
59
+
60
+ `)
61
+
62
+ Content(`\`\`\`python
63
+ from ${model.name}_sdk import ${model.const.Name}SDK
64
+
65
+ client = ${model.const.Name}SDK(options)
66
+ \`\`\`
67
+
68
+ Create a new SDK client instance.
69
+
70
+ **Parameters:**
71
+
72
+ | Name | Type | Description |
73
+ | --- | --- | --- |
74
+ | \`options\` | \`dict\` | SDK configuration options. |
75
+ | \`options["apikey"]\` | \`str\` | API key for authentication. |
76
+ | \`options["base"]\` | \`str\` | Base URL for API requests. |
77
+ | \`options["prefix"]\` | \`str\` | URL prefix appended after base. |
78
+ | \`options["suffix"]\` | \`str\` | URL suffix appended after path. |
79
+ | \`options["headers"]\` | \`dict\` | Custom headers for all requests. |
80
+ | \`options["feature"]\` | \`dict\` | Feature configuration. |
81
+ | \`options["system"]\` | \`dict\` | System overrides (e.g. custom fetch). |
82
+
83
+ `)
84
+
85
+
86
+ Content(`
87
+ ### Static Methods
88
+
89
+ `)
90
+
91
+ Content(`#### \`${model.const.Name}SDK.test(testopts=None, sdkopts=None)\`
92
+
93
+ Create a test client with mock features active. Both arguments may be \`None\`.
94
+
95
+ \`\`\`python
96
+ client = ${model.const.Name}SDK.test()
97
+ \`\`\`
98
+
99
+ `)
100
+
101
+
102
+ Content(`
103
+ ### Instance Methods
104
+
105
+ `)
106
+
107
+
108
+ // Entity factory methods
109
+ publishedEntities.map((ent: any) => {
110
+ Content(`#### \`${ent.Name}(data=None)\`
111
+
112
+ Create a new \`${ent.Name}Entity\` instance. Pass \`None\` for no initial data.
113
+
114
+ `)
115
+ })
116
+
117
+
118
+ Content(`#### \`options_map() -> dict\`
119
+
120
+ Return a deep copy of the current SDK options.
121
+
122
+ #### \`get_utility() -> Utility\`
123
+
124
+ Return a copy of the SDK utility object.
125
+
126
+ #### \`direct(fetchargs=None) -> tuple\`
127
+
128
+ Make a direct HTTP request to any API endpoint. Returns \`(result, err)\`.
129
+
130
+ **Parameters:**
131
+
132
+ | Name | Type | Description |
133
+ | --- | --- | --- |
134
+ | \`fetchargs["path"]\` | \`str\` | URL path with optional \`{param}\` placeholders. |
135
+ | \`fetchargs["method"]\` | \`str\` | HTTP method (default: \`"GET"\`). |
136
+ | \`fetchargs["params"]\` | \`dict\` | Path parameter values. |
137
+ | \`fetchargs["query"]\` | \`dict\` | Query string parameters. |
138
+ | \`fetchargs["headers"]\` | \`dict\` | Request headers (merged with defaults). |
139
+ | \`fetchargs["body"]\` | \`any\` | Request body (dicts are JSON-serialized). |
140
+
141
+ **Returns:** \`(result_dict, err)\`
142
+
143
+ #### \`prepare(fetchargs=None) -> tuple\`
144
+
145
+ Prepare a fetch definition without sending. Returns \`(fetchdef, err)\`.
146
+
147
+ `)
148
+
149
+
150
+ // Entity reference sections
151
+ publishedEntities.map((ent: any) => {
152
+ const opnames = Object.keys(ent.op || {})
153
+ const fields = ent.fields || []
154
+
155
+ Content(`
156
+ ---
157
+
158
+ ## ${ent.Name}Entity
159
+
160
+ `)
161
+
162
+ if (ent.short) {
163
+ Content(`${ent.short}
164
+
165
+ `)
166
+ }
167
+
168
+ Content(`\`\`\`python
169
+ ${ent.name} = client.${ent.Name}()
170
+ \`\`\`
171
+
172
+ `)
173
+
174
+
175
+ // Field schema
176
+ if (fields.length > 0) {
177
+ Content(`### Fields
178
+
179
+ | Field | Type | Required | Description |
180
+ | --- | --- | --- | --- |
181
+ `)
182
+ each(fields, (field: any) => {
183
+ const req = field.req ? 'Yes' : 'No'
184
+ const desc = field.short || ''
185
+ Content(`| \`${field.name}\` | \`${field.type || 'any'}\` | ${req} | ${desc} |
186
+ `)
187
+ })
188
+
189
+ Content(`
190
+ `)
191
+
192
+ // Field operations breakdown
193
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
194
+ if (hasFieldOps) {
195
+ Content(`### Field Usage by Operation
196
+
197
+ | Field | load | list | create | update | remove |
198
+ | --- | --- | --- | --- | --- | --- |
199
+ `)
200
+ each(fields, (field: any) => {
201
+ const fops = field.op || {}
202
+ const cols = ['load', 'list', 'create', 'update', 'remove'].map((op: string) => {
203
+ if (!opnames.includes(op)) return '-'
204
+ const fop = fops[op]
205
+ if (null == fop) return '-'
206
+ if (fop.active === false) return '-'
207
+ return 'Yes'
208
+ })
209
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
210
+ `)
211
+ })
212
+
213
+ Content(`
214
+ `)
215
+ }
216
+ }
217
+
218
+
219
+ // Operation details
220
+ if (opnames.length > 0) {
221
+ Content(`### Operations
222
+
223
+ `)
224
+
225
+ opnames.map((opname: string) => {
226
+ const info = OP_SIGNATURES[opname]
227
+ if (!info) return
228
+
229
+ Content(`#### \`${info.sig}\`
230
+
231
+ ${info.desc}
232
+
233
+ `)
234
+
235
+ // Show example
236
+ if ('load' === opname || 'remove' === opname) {
237
+ Content(`\`\`\`python
238
+ result, err = client.${ent.Name}().${opname}({"id": "${ent.name}_id"})
239
+ \`\`\`
240
+
241
+ `)
242
+ }
243
+ else if ('list' === opname) {
244
+ Content(`\`\`\`python
245
+ results, err = client.${ent.Name}().list({})
246
+ \`\`\`
247
+
248
+ `)
249
+ }
250
+ else if ('create' === opname) {
251
+ Content(`\`\`\`python
252
+ result, err = client.${ent.Name}().create({
253
+ `)
254
+ each(fields, (field: any) => {
255
+ if ('id' !== field.name && field.req) {
256
+ Content(` "${field.name}": # ${field.type || 'value'},
257
+ `)
258
+ }
259
+ })
260
+ Content(`})
261
+ \`\`\`
262
+
263
+ `)
264
+ }
265
+ else if ('update' === opname) {
266
+ Content(`\`\`\`python
267
+ result, err = client.${ent.Name}().update({
268
+ "id": "${ent.name}_id",
269
+ # Fields to update
270
+ })
271
+ \`\`\`
272
+
273
+ `)
274
+ }
275
+ })
276
+ }
277
+
278
+
279
+ // Common methods
280
+ Content(`### Common Methods
281
+
282
+ #### \`data_get() -> dict\`
283
+
284
+ Get the entity data.
285
+
286
+ #### \`data_set(data)\`
287
+
288
+ Set the entity data.
289
+
290
+ #### \`match_get() -> dict\`
291
+
292
+ Get the entity match criteria.
293
+
294
+ #### \`match_set(match)\`
295
+
296
+ Set the entity match criteria.
297
+
298
+ #### \`make() -> Entity\`
299
+
300
+ Create a new \`${ent.Name}Entity\` instance with the same options.
301
+
302
+ #### \`get_name() -> str\`
303
+
304
+ Return the entity name.
305
+
306
+ `)
307
+ })
308
+
309
+
310
+ // Features section
311
+ const activeFeatures = each(feature).filter((f: any) => f.active)
312
+ if (activeFeatures.length > 0) {
313
+ Content(`
314
+ ---
315
+
316
+ ## Features
317
+
318
+ | Feature | Version | Description |
319
+ | --- | --- | --- |
320
+ `)
321
+
322
+ activeFeatures.map((f: any) => {
323
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
324
+ `)
325
+ })
326
+
327
+ Content(`
328
+
329
+ Features are activated via the \`feature\` option:
330
+
331
+ `)
332
+
333
+ Content(`\`\`\`python
334
+ client = ${model.const.Name}SDK({
335
+ "feature": {
336
+ `)
337
+ activeFeatures.map((f: any) => {
338
+ Content(` "${f.name}": {"active": True},
339
+ `)
340
+ })
341
+ Content(` },
342
+ })
343
+ \`\`\`
344
+
345
+ `)
346
+ }
347
+
348
+ })
349
+ })
350
+
351
+
352
+
353
+
354
+ export {
355
+ ReadmeRef
356
+ }
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -15,13 +15,16 @@ const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
15
15
 
16
16
  const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
17
17
 
18
+ const authActive = isAuthActive(model)
19
+ const apikeyImport = authActive ? `import os\n` : ''
20
+ const apikeyArg = authActive
21
+ ? `\n "apikey": os.environ.get("${model.NAME}_APIKEY"),\n`
22
+ : ''
23
+
18
24
  Content(`\`\`\`python
19
- import os
20
- from ${model.const.Name.toLowerCase()}_sdk import ${model.const.Name}SDK
25
+ ${apikeyImport}from ${model.const.Name.toLowerCase()}_sdk import ${model.const.Name}SDK
21
26
 
22
- client = ${model.const.Name}SDK({
23
- "apikey": os.environ.get("${model.NAME}_APIKEY"),
24
- })
27
+ client = ${model.const.Name}SDK({${apikeyArg}})
25
28
 
26
29
  `)
27
30
 
@@ -1,5 +1,8 @@
1
1
 
2
2
  import {
3
+ Model,
4
+ ModelEntity,
5
+ nom,
3
6
  depluralize,
4
7
  } from '@voxgig/apidef'
5
8
 
@@ -8,6 +11,7 @@ import {
8
11
  File,
9
12
  cmp,
10
13
  snakify,
14
+ isAuthActive,
11
15
  } from '@voxgig/sdkgen'
12
16
 
13
17
 
@@ -51,12 +55,20 @@ function normalizePathParams(
51
55
 
52
56
  const TestDirect = cmp(function TestDirect(props: any) {
53
57
  const ctx$ = props.ctx$
54
- const model = ctx$.model
58
+ const model: Model = ctx$.model
55
59
 
56
60
  const target = props.target
57
- const entity = props.entity
61
+ const entity: ModelEntity = props.entity
58
62
 
59
- const PROJECTNAME = model.Name.toUpperCase().replace(/[^A-Z_]/g, '_')
63
+ const PROJECTNAME = nom(model, 'Name').toUpperCase().replace(/[^A-Z_]/g, '_')
64
+
65
+ const authActive = isAuthActive(model)
66
+ const apikeyEnvEntry = authActive
67
+ ? `\n "${PROJECTNAME}_APIKEY": "NONE",`
68
+ : ''
69
+ const apikeyLiveField = authActive
70
+ ? `\n "apikey": env.get("${PROJECTNAME}_APIKEY"),`
71
+ : ''
60
72
 
61
73
  const opnames = Object.keys(entity.op)
62
74
  const hasLoad = opnames.includes('load')
@@ -77,7 +89,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
77
89
  const listPath = listPoint ? normalizePathParams(listPoint.parts || [], listPoint?.args?.params || [], listPoint?.rename?.param) : ''
78
90
  const listParams = listPoint?.args?.params || []
79
91
 
80
- const entidEnvVar = `${PROJECTNAME}_TEST_${entity.Name.toUpperCase().replace(/[^A-Z_]/g, '_')}_ENTID`
92
+ const entidEnvVar = `${PROJECTNAME}_TEST_${nom(entity, 'NAME').replace(/[^A-Z_]/g, '_')}_ENTID`
81
93
 
82
94
  File({ name: 'test_' + entity.name + '_direct.' + target.ext }, () => {
83
95
 
@@ -200,15 +212,13 @@ def _${entity.name}_direct_setup(mockres):
200
212
 
201
213
  env = runner.env_override({
202
214
  "${entidEnvVar}": {},
203
- "${PROJECTNAME}_TEST_LIVE": "FALSE",
204
- "${PROJECTNAME}_APIKEY": "NONE",
215
+ "${PROJECTNAME}_TEST_LIVE": "FALSE",${apikeyEnvEntry}
205
216
  })
206
217
 
207
218
  live = env.get("${PROJECTNAME}_TEST_LIVE") == "TRUE"
208
219
 
209
220
  if live:
210
- merged_opts = {
211
- "apikey": env.get("${PROJECTNAME}_APIKEY"),
221
+ merged_opts = {${apikeyLiveField}
212
222
  }
213
223
  client = ${model.const.Name}SDK(merged_opts)
214
224
  return {