Skip to main content

A terminal GUI for managing Warden Docker environments

Project description

WardenGUI

A terminal-based GUI for managing Warden Docker development environments.

Python License

Features

  • ๐Ÿณ Interactive Menu - Navigate and manage multiple Warden environments
  • ๐Ÿ”„ Environment Switching - Stop current and start new environments with one command
  • ๐Ÿ“Š Docker Stats - View disk usage for images and volumes
  • ๐Ÿ”Œ SSH Access - Quick shell access to running containers
  • ๐Ÿ“‹ Log Streaming - Follow container logs in real-time
  • ๐Ÿ  Hosts File Check - Windows hosts file validation
  • โŒจ๏ธ Terminal Commands - Run warden commands directly from the GUI

Installation

From PyPI

pip install wardengui

From Source

git clone https://github.com/Genaker/WardenGUI.git
cd WardenGUI
pip install -e .

Upgrade to Latest Version

pip install --upgrade wardengui

Or force reinstall:

pip install --upgrade --force-reinstall wardengui

Check Installed Version

pip show wardengui

WSL Installation

pip3 install --break-system-packages wardengui

Troubleshooting: Command Not Found

If you see wardengui: command not found after installation, the scripts are installed in ~/.local/bin which is not in your PATH.

Fix 1: Add to PATH (permanent)

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
wardengui

Fix 2: Run directly

~/.local/bin/wardengui

Fix 3: Use Python module

python3 -m wardengui

Usage

# Run with default settings (scans ~/ for projects)
wardengui
# or
warden-gui

# Specify projects directory
wardengui -p /path/to/projects

# Use 'down/up' instead of 'stop/start' (removes containers)
wardengui --down

Commands

Navigation

Command Description
โ†‘/โ†“ or u/d Navigate menu
0-9 Select environment by number
Enter or start Start selected environment
q or quit Exit

Environment Commands

Command Description
ssh or s SSH into running environment
log Follow all container logs
log nginx Follow specific service logs
ls List running containers
run <cmd> Run one-off command
port <svc> Show port bindings
help or ? Show available commands

Requirements

  • Python 3.8+
  • Warden installed at /opt/warden/bin/warden
  • Docker running
  • WSL2 (on Windows)

Building & Publishing

Step 1: Install Build Tools

pip install build twine

Step 2: Clean Previous Builds

rm -rf build/ dist/ *.egg-info/

Step 3: Build the Package

cd C:\Users\Yshytikov\WardenGUI
python -m build

This creates:

dist/
โ”œโ”€โ”€ wardengui-1.0.0-py3-none-any.whl    # Wheel (binary)
โ””โ”€โ”€ wardengui-1.0.0.tar.gz              # Source distribution

Step 4: Test Locally

# Install locally in editable mode
pip install -e .

# Test the command works
wardengui --help

Step 5: Create PyPI Account

  1. Go to https://pypi.org/account/register/
  2. Create an account
  3. Go to Account Settings โ†’ API tokens
  4. Create a new API token (scope: entire account or project-specific)
  5. Save the token (starts with pypi-)

Step 6: Configure Twine

Create ~/.pypirc (or C:\Users\YourName\.pypirc on Windows):

[pypi]
username = __token__
password = pypi-YOUR_API_TOKEN_HERE

Or use environment variable:

export TWINE_PASSWORD=pypi-YOUR_API_TOKEN_HERE

Step 7: Upload to TestPyPI (Optional - Recommended First)

# Upload to TestPyPI for testing
twine upload --repository testpypi dist/*

# Test install from TestPyPI
pip install --index-url https://test.pypi.org/simple/ wardengui

Step 8: Upload to PyPI

twine upload dist/*

Step 9: Verify Installation

# Install from PyPI
pip install wardengui

# Run
wardengui

Quick Build & Push Script

Use the included build_and_push.sh script:

chmod +x build_and_push.sh
./build_and_push.sh

This script will:

  1. Clean previous builds
  2. Build the package
  3. Check for errors
  4. Ask for confirmation before uploading to PyPI

Version Bump

Before publishing a new version, update version in pyproject.toml:

[project]
version = "1.0.1"  # Increment this

Project Structure

wardengui/
โ”œโ”€โ”€ pyproject.toml          # Package configuration
โ”œโ”€โ”€ README.md               # This file
โ”œโ”€โ”€ LICENSE                 # MIT License
โ”œโ”€โ”€ .gitignore
โ””โ”€โ”€ src/
    โ””โ”€โ”€ wardengui/
        โ”œโ”€โ”€ __init__.py     # Package init, exports
        โ”œโ”€โ”€ manager.py      # WardenManager class (core logic)
        โ””โ”€โ”€ cli.py          # CLI entry point (GUI)

Configuration

Option Default Description
-p, --projects-root ~ Root directory to scan for projects
-d, --down false Use env down/up instead of env stop/start

Screenshot

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘               ๐Ÿณ WARDEN ENVIRONMENT MANAGER                  โ•‘
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  Commands: 0-9=select โ”‚ ssh โ”‚ start โ”‚ up/down โ”‚ quit โ”‚ help  โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
  ๐Ÿ“Š Environments: 3 โ”‚ ๐Ÿ’พ Images: 38.18GB โ”‚ Volumes: 17.9GB

  0. [lccoins] โ—‹ STOPPED - app.lc.test
  1. [api] โ—‹ STOPPED - app.apitire.test
โ–ถ 2. [pei] โ— RUNNING - app.peigenesis.test

  q. [Exit]

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  ๐Ÿ“‹ PEI DETAILS
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  ๐Ÿ“ Path:        /home/user/pei-project
  ๐ŸŒ URL:         https://app.peigenesis.test/
  ๐Ÿ  Hosts:       โœ… 127.0.0.1 โ†’ app.peigenesis.test
  ๐Ÿ’ฟ Volumes: 6                    ๐Ÿณ Containers: 8/8 running
    โ””โ”€ applogs: 3.528GB            ๐ŸŸข php-fpm
    โ””โ”€ appcode: 1.088GB            ๐ŸŸข nginx
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

>

License

MIT License - see LICENSE file for details.

Author

Yehor Shytikov

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wardengui-1.0.4.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wardengui-1.0.4-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file wardengui-1.0.4.tar.gz.

File metadata

  • Download URL: wardengui-1.0.4.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for wardengui-1.0.4.tar.gz
Algorithm Hash digest
SHA256 dd7ef9ea3cbb3a6cf2dcd415be0cf805ec12b2212a3e2e9d64ebeea1e17e9ab3
MD5 b057e8bc0207779697c59c1b80e54084
BLAKE2b-256 232d71a071c0999166ad062091d180caa03b6fea11a5fad6db19bcd36307089d

See more details on using hashes here.

File details

Details for the file wardengui-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: wardengui-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for wardengui-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 33fa2ffa6119d3e9cf07acefd38beb81efcb8411ccd708b78d4cdc34fd6e2618
MD5 1e38f2ef92cd7e5624feb5fac8bc58af
BLAKE2b-256 3dbe43ee8b344a07bdfa23b9934396f712cbabfeff7c6e89793c90c7adfd11c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page