A Python-based CLI utility with a plugin architecture for AWS, Kubernetes, Git, and more
Project description
toast-cli
_ _ _ _
| |_ ___ __ _ ___| |_ ___| (_)
| __/ _ \ / _` / __| __|__ / __| | |
| || (_) | (_| \__ \ ||___| (__| | |
\__\___/ \__,_|___/\__| \___|_|_|
Python-based CLI utility with plugin architecture for AWS, Kubernetes, and Git operations.
Features
- Plugin Architecture: Modular design with dynamic command discovery
- AWS Integration: Identity checking, profile management, region selection, SSM integration
- Kubernetes: Context switching, EKS integration
- Git: Repository management, branch creation, pull operations
- Workspace: Directory navigation, environment file management
- Interface: FZF-powered menus, formatted output with Rich
Architecture
- Commands implemented as plugins extending BasePlugin
- Automatic plugin discovery and loading
- Click integration for CLI behavior
- See ARCHITECTURE.md for details
Installation
Requirements
- Python 3.6+
- External tools: fzf, aws-cli, kubectl
- Python packages: click, rich
Install
# From PyPI
pip install toast-cli
# From GitHub
pip install git+https://github.com/opspresso/toast-cli.git
# Development mode
git clone https://github.com/opspresso/toast-cli.git
cd toast-cli
pip install -e .
Usage
toast --help # View available commands
toast am # Show AWS identity
toast cdw # Navigate workspace directories
toast ctx # Manage Kubernetes contexts
toast dot # Manage .env.local files
toast env # Manage AWS profiles
toast git # Manage Git repositories
toast region # Manage AWS region
toast version # Display version
Examples
# AWS
toast am # Show identity
toast env # Switch profiles
toast region # Switch regions
# Kubernetes
toast ctx # Switch contexts
# Environment Files
toast dot up # Upload to SSM
toast dot down # Download from SSM
toast dot ls # List in SSM
# Git
toast git repo-name clone # Clone repository
toast git repo-name branch -b branch-name # Create branch
toast git repo-name pull -r # Pull with rebase
Creating Plugins
- Create a file in
toast/plugins/ - Extend
BasePlugin - Implement required methods
- Set name and help variables
from toast.plugins.base_plugin import BasePlugin
import click
class MyPlugin(BasePlugin):
name = "mycommand"
help = "Command description"
@classmethod
def get_arguments(cls, func):
func = click.option("--option", "-o", help="Option description")(func)
return func
@classmethod
def execute(cls, **kwargs):
option = kwargs.get("option")
click.echo(f"Executing with option: {option}")
Aliases
alias t='toast'
c() { cd "$(toast cdw)" }
alias m='toast am' # AWS identity
alias x='toast ctx' # Kubernetes contexts
alias d='toast dot' # Environment files
alias e='toast env' # AWS profiles
alias g='toast git' # Git repositories
alias r='toast region' # AWS region
Resources
- Development: See CLAUDE.md for guidelines
- License: GNU GPL v3.0
- Contributing: Via GitHub repository
- Documentation: ARCHITECTURE.md and toast.sh
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
toast_cli-3.2.9.tar.gz
(27.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
toast_cli-3.2.9-py3-none-any.whl
(27.2 kB
view details)
File details
Details for the file toast_cli-3.2.9.tar.gz.
File metadata
- Download URL: toast_cli-3.2.9.tar.gz
- Upload date:
- Size: 27.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5129f10c78e00429d08794252b38d8e05bb5fe96de4709c705725afef5671c4b
|
|
| MD5 |
4a55e6722225272855be834a6bb07839
|
|
| BLAKE2b-256 |
8b3a758b7875d4b339af6245998c285013f6da3a933d4cacbb10d9e5a50c3c56
|
File details
Details for the file toast_cli-3.2.9-py3-none-any.whl.
File metadata
- Download URL: toast_cli-3.2.9-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e39c39055f5d6881784c7284fc5742e9892a68d13756f27293d33a7371912066
|
|
| MD5 |
2f80ffa9c432927f55f6f0dbf0204806
|
|
| BLAKE2b-256 |
2255ee21291f067fe3b6566f15a21aa8ec3bf61df3289a75c4978ebe4e12feb1
|