Metadata-Version: 2.4
Name: infra-cli
Version: 0.1.6
Summary: Pluggable Infrastructure CLI as a wrapper around DevOps tools.
Author-email: Youqing Han <ihanyouqing@gmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/hanyouqing/infra-cli
Project-URL: Repository, https://github.com/hanyouqing/infra-cli
Project-URL: Bug Tracker, https://github.com/hanyouqing/infra-cli/issues
Project-URL: Changelog, https://github.com/hanyouqing/infra-cli/blob/main/CHANGELOG.md
Project-URL: Author, https://github.com/hanyouqing
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typer>=0.9.0
Requires-Dist: typing-extensions>=4.0.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: boto3>=1.20.0
Requires-Dist: rich>=10.0.0
Requires-Dist: questionary>=2.0.0
Requires-Dist: prompt_toolkit>=3.0.0
Requires-Dist: requests>=2.28.0
Provides-Extra: aws
Requires-Dist: zxcvbn>=4.4.28; extra == "aws"
Requires-Dist: openpyxl>=3.1.0; extra == "aws"
Provides-Extra: server
Requires-Dist: fastapi>=0.100.0; extra == "server"
Requires-Dist: uvicorn>=0.20.0; extra == "server"
Requires-Dist: markdown>=3.4.0; extra == "server"
Provides-Extra: server-mysql
Requires-Dist: fastapi>=0.100.0; extra == "server-mysql"
Requires-Dist: uvicorn>=0.20.0; extra == "server-mysql"
Requires-Dist: markdown>=3.4.0; extra == "server-mysql"
Requires-Dist: PyMySQL>=1.1.0; extra == "server-mysql"
Provides-Extra: server-redis
Requires-Dist: fastapi>=0.100.0; extra == "server-redis"
Requires-Dist: uvicorn>=0.20.0; extra == "server-redis"
Requires-Dist: markdown>=3.4.0; extra == "server-redis"
Requires-Dist: redis>=5.0.0; extra == "server-redis"
Requires-Dist: certifi>=2023.0.0; extra == "server-redis"
Provides-Extra: server-mongo
Requires-Dist: fastapi>=0.100.0; extra == "server-mongo"
Requires-Dist: uvicorn>=0.20.0; extra == "server-mongo"
Requires-Dist: markdown>=3.4.0; extra == "server-mongo"
Requires-Dist: pymongo>=4.6.0; extra == "server-mongo"
Provides-Extra: test
Requires-Dist: pytest>=7.0.0; extra == "test"
Requires-Dist: pytest-mock>=3.6.1; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Requires-Dist: httpx>=0.27.0; extra == "test"
Provides-Extra: dev
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-setuptools; extra == "dev"
Requires-Dist: boto3-stubs[essential]; extra == "dev"
Requires-Dist: ansible-core>=2.16.0; extra == "dev"
Requires-Dist: ansible-lint>=24.0.0; extra == "dev"
Requires-Dist: build>=1.0.0; extra == "dev"
Requires-Dist: twine>=5.0.0; extra == "dev"
Dynamic: license-file

# infra-cli

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

![infra-cli](docs/assets/logo/logo-infra.svg)

Pluggable DevOps CLI wrapping Ansible, Terragrunt, Terraform, AWS SSO, Alibaba / Tencent CloudSSO, OCI session login, and related tools.

## Features

- Unified `infra` surface for setup, cloud SSO, inventory, and IaC wrappers
- Interactive REPL: `infra shell` (Tab completion, history, pipes, prod guard)
- Agent work mode: `infra work` (skills, connectors, MCP)
- Local HTML command reference: `infra server start` (optional MySQL/Redis/Mongo DB tools)

## Install

```bash
pipx install infra-cli
pipx inject infra-cli '.[aws]'      # optional
source ~/.infra/env.sh              # after first run, or: pipx ensurepath
infra doctor
```

From checkout: `pipx install .` · Upgrade: `infra setup upgrade-cli --pypi`  
Full macOS/Linux bootstrap: [INSTALL.md](INSTALL.md) · [docs/installation.md](docs/installation.md)  
Docker (host network): [docs/docker.md](docs/docker.md) · `docker compose up`

## Quick start

### setup

```bash
infra setup doctor
infra setup aws
infra setup terraform
```

### aws

```bash
infra aws login
infra aws select
infra aws profiles --account
```

### naming

```bash
infra naming payments --org acme --domain acme.io
```

### terraform / terragrunt

```bash
infra terraform -e stg -s platform/example
infra terragrunt plan -e stg -s platform/example
```

### shell

```bash
infra shell
```

### server

```bash
infra server start                  # needs: pipx inject infra-cli '.[server]'
infra server start --enable-mysql --enable-redis   # + '.[server-mysql]' / '.[server-redis]'
```

DB tools open at `/tools`; connect forms keep credentials in process memory only.
Mutations need `--enable-writes`. Non-loopback bind with DB tools requires `--allow-remote`.

### work

```bash
infra work plan "find AWS cost waste"
```

### doctor

```bash
infra doctor
```

Every command accepts `-h` / `--help`.

## Documentation

| Guide | Contents |
| --- | --- |
| [docs/](docs/README.md) | Index of all user guides |
| [commands.md](docs/commands.md) | Common workflows |
| [docker.md](docs/docker.md) | Dockerfile / Compose (host network) |
| [aws.md](docs/aws.md) | SSO, inventory, ECR, SSM |
| [setup.md](docs/setup.md) | Workstation bootstrap |
| [alibaba-cloud.md](docs/alibaba-cloud.md) | `aliyun` / `alicloud` |
| [oci.md](docs/oci.md) | `infra setup oci` / `infra oci login` |
| [terraform-terragrunt.md](docs/terraform-terragrunt.md) | Layout, scaffold, plan/apply |
| [work.md](docs/work.md) | Agent work mode |
| [configuration.md](docs/configuration.md) | `~/.infra/config.yaml` |
| [release.md](docs/release.md) | PyPI tags & Trusted Publishing |
| [development.md](docs/development.md) | Local tests & lint |
| [CHANGELOG.md](CHANGELOG.md) | Release history |
| [Logo](docs/assets/logo/README.md) | Brand marks (SVG) |

## Development

```bash
make install-dev
make test
make check
```

See [CONTRIBUTING.md](CONTRIBUTING.md).

## Author & Contact

Youqing Han — [GitHub](https://github.com/hanyouqing) · Issues for public bugs; email for private / CoC / partnership contact (see `pyproject.toml`).

## License

Apache License 2.0 — see [LICENSE](LICENSE).
