Metadata-Version: 2.4
Name: cloudvm
Version: 0.1.16.20260606005632
Summary: Manage cloud development instances. Currently AWS EC2 is supported.
Project-URL: Homepage, https://github.com/findepi/cloudvm
Project-URL: Issues, https://github.com/findepi/cloudvm/issues
Author: Piotr Findeisen
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Requires-Dist: argcomplete>=3.0
Requires-Dist: boto3>=1.34
Description-Content-Type: text/markdown

# cloudvm

A command-line tool for managing cloud development instances. AWS EC2 is currently supported.

`cloudvm` streamlines the daily routine of working with a development EC2
instance: it refreshes the AWS SSO token only when expired, starts the
instance, waits for its public IP to be assigned, and reports it. A `list`
subcommand surveys instances across regions to see what is still running.

## Install

```bash
pipx install cloudvm
```

Or, if `pipx` is not available:

```bash
pip install cloudvm
```

Requires Python 3.9 or newer and a configured `aws` CLI (SSO or static
credentials).

## Usage

```bash
# Start an instance by its Name tag
cloudvm up --name my-dev-box

# Stop an instance — returns once the stop has been triggered
cloudvm down --name my-dev-box

# List instances across regions
cloudvm list --region 'eu-central-*,us-*' --name 'my-*'
```

All subcommands accept `--region` / `-r` and `--name` / `-n`, and honor the
usual AWS environment variables (`AWS_REGION`, `AWS_PROFILE`, ...).

Pass `--update-ssh` to `up` to point the matching `~/.ssh/config` host
alias at the new IP.

## Shell completion

To enable tab-completion, add this to your `~/.bashrc` (or `~/.zshrc`,
after `compinit`):

```bash
# This spawns cloudvm once for every new shell. See below for optimized
# alternative.
eval "$(cloudvm --print-completion bash)"   # or: zsh / tcsh / fish
```

Then open a new shell, or `source` the rc file. `cloudvm <TAB>` will now
complete subcommands and flags.

To skip the per-shell `cloudvm` spawn, use a lazy stub instead — it
loads the real completion on first use.

bash (`~/.bashrc`):

```bash
_cloudvm_lazy_complete() {
    eval "$(cloudvm --print-completion bash)"
    return 124
}
complete -F _cloudvm_lazy_complete cloudvm
```

zsh (`~/.zshrc`, after `compinit`):

```zsh
_cloudvm_lazy_complete() {
    unfunction _cloudvm_lazy_complete
    eval "$(cloudvm --print-completion zsh)"
    "${_comps[cloudvm]}" "$@"
}
compdef _cloudvm_lazy_complete cloudvm
```

## License

Apache License 2.0
