Skip to content

Commit cf87a0f

Browse files
authored
feat: add layer parameters to app create and friends (#49)
1 parent d48e8be commit cf87a0f

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/deno_sandbox/apps.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,19 +224,23 @@ async def create(
224224
self,
225225
*,
226226
slug: Optional[str] = None,
227+
layers: Optional[List[str]] = None,
227228
env_vars: Optional[List[EnvVarInput]] = None,
228229
config: Optional[Config] = None,
229230
) -> App:
230231
"""Create a new app.
231232
232233
Args:
233234
slug: Human readable identifier for the app.
235+
layers: Layer IDs or slugs to reference.
234236
env_vars: App-specific environment variables.
235237
config: Default build and runtime configuration.
236238
"""
237239
options: dict[str, Any] = {}
238240
if slug is not None:
239241
options["slug"] = slug
242+
if layers is not None:
243+
options["layers"] = layers
240244
if env_vars is not None:
241245
options["env_vars"] = env_vars
242246
if config is not None:
@@ -250,6 +254,7 @@ async def update(
250254
app: str,
251255
*,
252256
slug: Optional[str] = None,
257+
layers: Optional[List[str]] = None,
253258
env_vars: Optional[List[EnvVarUpdate]] = None,
254259
config: Optional[Config] = None,
255260
) -> App:
@@ -258,12 +263,15 @@ async def update(
258263
Args:
259264
app: The app ID or slug to update.
260265
slug: Human readable identifier for the app.
266+
layers: Replace all layer references.
261267
env_vars: Deep merge with existing environment variables.
262268
config: Replace the entire deploy config.
263269
"""
264270
update: dict[str, Any] = {}
265271
if slug is not None:
266272
update["slug"] = slug
273+
if layers is not None:
274+
update["layers"] = layers
267275
if env_vars is not None:
268276
update["env_vars"] = env_vars
269277
if config is not None:
@@ -346,25 +354,30 @@ def create(
346354
self,
347355
*,
348356
slug: Optional[str] = None,
357+
layers: Optional[List[str]] = None,
349358
env_vars: Optional[List[EnvVarInput]] = None,
350359
config: Optional[Config] = None,
351360
) -> App:
352361
"""Create a new app.
353362
354363
Args:
355364
slug: Human readable identifier for the app.
365+
layers: Layer IDs or slugs to reference.
356366
env_vars: App-specific environment variables.
357367
config: Default build and runtime configuration.
358368
"""
359369
return self._bridge.run(
360-
self._async.create(slug=slug, env_vars=env_vars, config=config)
370+
self._async.create(
371+
slug=slug, layers=layers, env_vars=env_vars, config=config
372+
)
361373
)
362374

363375
def update(
364376
self,
365377
app: str,
366378
*,
367379
slug: Optional[str] = None,
380+
layers: Optional[List[str]] = None,
368381
env_vars: Optional[List[EnvVarUpdate]] = None,
369382
config: Optional[Config] = None,
370383
) -> App:
@@ -373,11 +386,14 @@ def update(
373386
Args:
374387
app: The app ID or slug to update.
375388
slug: Human readable identifier for the app.
389+
layers: Replace all layer references.
376390
env_vars: Deep merge with existing environment variables.
377391
config: Replace the entire deploy config.
378392
"""
379393
return self._bridge.run(
380-
self._async.update(app, slug=slug, env_vars=env_vars, config=config)
394+
self._async.update(
395+
app, slug=slug, layers=layers, env_vars=env_vars, config=config
396+
)
381397
)
382398

383399
def delete(self, app: str) -> None:

src/deno_sandbox/revisions.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ async def deploy(
179179
assets: Dict[str, Asset],
180180
*,
181181
config: Optional[Config] = None,
182+
layers: Optional[List[str]] = None,
182183
env_vars: Optional[List[EnvVarInputForDeploy]] = None,
183184
labels: Optional[Dict[str, str]] = None,
184185
) -> Revision:
@@ -188,6 +189,7 @@ async def deploy(
188189
app: The app ID or slug.
189190
assets: Dict mapping file paths to Asset objects.
190191
config: Optional build/runtime configuration.
192+
layers: Layer IDs or slugs to reference for this revision.
191193
env_vars: Optional environment variables for this revision.
192194
labels: Optional labels (e.g., git metadata).
193195
@@ -197,6 +199,8 @@ async def deploy(
197199
body: Dict[str, Any] = {"assets": assets}
198200
if config is not None:
199201
body["config"] = config
202+
if layers is not None:
203+
body["layers"] = layers
200204
if env_vars is not None:
201205
body["env_vars"] = env_vars
202206
if labels is not None:
@@ -260,6 +264,7 @@ def deploy(
260264
assets: Dict[str, Asset],
261265
*,
262266
config: Optional[Config] = None,
267+
layers: Optional[List[str]] = None,
263268
env_vars: Optional[List[EnvVarInputForDeploy]] = None,
264269
labels: Optional[Dict[str, str]] = None,
265270
) -> Revision:
@@ -269,6 +274,7 @@ def deploy(
269274
app: The app ID or slug.
270275
assets: Dict mapping file paths to Asset objects.
271276
config: Optional build/runtime configuration.
277+
layers: Layer IDs or slugs to reference for this revision.
272278
env_vars: Optional environment variables for this revision.
273279
labels: Optional labels (e.g., git metadata).
274280
@@ -277,6 +283,11 @@ def deploy(
277283
"""
278284
return self._bridge.run(
279285
self._async.deploy(
280-
app, assets, config=config, env_vars=env_vars, labels=labels
286+
app,
287+
assets,
288+
config=config,
289+
layers=layers,
290+
env_vars=env_vars,
291+
labels=labels,
281292
)
282293
)

0 commit comments

Comments
 (0)