Metadata-Version: 2.1
Name: aws-org-tree
Version: 0.5.0
Summary: 
Home-page: https://github.com/iainelder/aws-org-tree
Author: Iain Samuel McLean Elder
Author-email: iain@isme.es
Requires-Python: >=3.12,<4.0
Classifier: Programming Language :: Python :: 3
Requires-Dist: anytree (>=2.12.0,<3.0.0)
Requires-Dist: boto3 (>=1.18.50,<2.0.0)
Requires-Dist: boto3-stubs[organizations] (>=1.21.42,<2.0.0)
Requires-Dist: logdecorator (>=2.2,<3.0)
Requires-Dist: mypy-boto3-organizations (>=1.26.83,<2.0.0)
Requires-Dist: orgtreepubsub (>=0.1.0,<0.2.0)
Requires-Dist: urllib3 (<2)
Project-URL: Repository, https://github.com/iainelder/aws-org-tree
Description-Content-Type: text/markdown

# aws-org-tree

Prints a text tree representation of an AWS organization.

```bash
aws-org-tree
```

```text
Root (r-p74l)
├── isme-root-zcskbx (039444814027)
├── Sandbox (ou-p74l-a2llanp8)
└── Security (ou-p74l-094nw8v7)
    ├── Log Archive (386884128156)
    └── Audit (466721047587)
```

Use the `--node-name-format` option to print different properties of the resources. This part doesn't work well yet because different resources have different properties. If the property is missing the property name is used as a placeholder.

```bash
aws-org-tree --node-name-format "{Type} {Email}"
```

```text
ROOT Email
├── ACCOUNT iain+awsroot+zcskbx@isme.es
├── ORGANIZATIONAL_UNIT Email
└── ORGANIZATIONAL_UNIT Email
    ├── ACCOUNT iain+awsroot+zcskbx+log-archive@isme.es
    └── ACCOUNT iain+awsroot+zcskbx+audit@isme.es
```

## Installation


Prerequisite: Python 3.12 at least.

Recommended: [pipx](https://pipxproject.github.io/pipx/), which installs the tool in an isolated virtualenv while linking the script you need.

Install using [pipx](https://pipxproject.github.io/pipx/) (recommended because it uses an isolated virtualenv to avoid dependency conflicts with other Python things you may have).

```bash
pipx install aws-org-tree
```

Or install using pip.

```bash
pip install --user aws-org-tree
```

Learn to use it.

```bash
aws-org-tree --help
```

## Development

Install Python 3.12.

Install [Poetry](https://python-poetry.org/) via [Pipx](https://pypa.github.io/pipx/).

Clone the repo.

Run `poetry install`.

Hack away.

Run quality checks with `poetry run pre-commit run --all-files`.

Install quality checks as [pre-commit checks](https://pre-commit.com/) with `poetry run pre-commit install`.

Read the [testing README](/tests/README.md).

## Continuous integration and deployment

Push to any branch to run the tests on every commit via GitHub Actions.

Push an annotated tag of the form `x.y.z` (semantic version) to publish a GitHub release and publish the package distributions to PyPI if the tests pass. It may work on any branch but please only do it on the main branch.

