Metadata-Version: 2.1
Name: aws-cdk.cli-lib-alpha
Version: 2.136.1a0
Summary: AWS CDK Programmatic CLI library
Home-page: https://github.com/aws/aws-cdk
Author: Amazon Web Services
License: Apache-2.0
Project-URL: Source, https://github.com/aws/aws-cdk.git
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Typing :: Typed
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved
Classifier: Framework :: AWS CDK
Classifier: Framework :: AWS CDK :: 2
Requires-Python: ~=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: jsii <2.0.0,>=1.96.0
Requires-Dist: publication >=0.0.3
Requires-Dist: typeguard ~=2.13.3

# AWS CDK CLI Library

<!--BEGIN STABILITY BANNER-->---


![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)

> The APIs of higher level constructs in this module are experimental and under active development.
> They are subject to non-backward compatible changes or removal in any future version. These are
> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be
> announced in the release notes. This means that while you may use them, you may need to update
> your source code when upgrading to a newer version of this package.

---
<!--END STABILITY BANNER-->

## ⚠️ Experimental module

This package is highly experimental. Expect frequent API changes and incomplete features.
Known issues include:

* **JavaScript/TypeScript only**\
  The jsii packages are currently not in a working state.
* **No useful return values**\
  All output is currently printed to stdout/stderr
* **Missing or Broken options**\
  Some CLI options might not be available in this package or broken

## Overview

Provides a library to interact with the AWS CDK CLI programmatically from jsii supported languages.
Currently the package includes implementations for:

* `cdk deploy`
* `cdk synth`
* `cdk bootstrap`
* `cdk destroy`
* `cdk list`

## Setup

### AWS CDK app directory

Obtain an `AwsCdkCli` class from an AWS CDK app directory (containing a `cdk.json` file):

```python
cli = AwsCdkCli.from_cdk_app_directory("/path/to/cdk/app")
```

### Cloud Assembly Directory Producer

You can also create `AwsCdkCli` from a class implementing `ICloudAssemblyDirectoryProducer`.
AWS CDK apps might need to be synthesized multiple times with additional context values before they are ready.

The `produce()` method of the `ICloudAssemblyDirectoryProducer` interface provides this multi-pass ability.
It is invoked with the context values of the current iteration and should use these values to synthesize a Cloud Assembly.
The return value is the path to the assembly directory.

A basic implementation would look like this:

```python
@jsii.implements(ICloudAssemblyDirectoryProducer)
class MyProducer:
    def produce(self, context):
        app = cdk.App(context=context)
        stack = cdk.Stack(app)
        return app.synth().directory
```

For all features (e.g. lookups) to work correctly, `cdk.App()` must be instantiated with the received `context` values.
Since it is not possible to update the context of an app, it must be created as part of the `produce()` method.

The producer can than be used like this:

```python
cli = AwsCdkCli.from_cloud_assembly_directory_producer(MyProducer())
```

## Commands

### list

```python
# await this asynchronous method call using a language feature
cli.list()
```

### synth

```python
# await this asynchronous method call using a language feature
cli.synth(
    stacks=["MyTestStack"]
)
```

### bootstrap

```python
# await this asynchronous method call using a language feature
cli.bootstrap()
```

### deploy

```python
# await this asynchronous method call using a language feature
cli.deploy(
    stacks=["MyTestStack"]
)
```

### destroy

```python
# await this asynchronous method call using a language feature
cli.destroy(
    stacks=["MyTestStack"]
)
```
