mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-09-21 20:40:47 +02:00
A deckbuilder for the commander format of Magic: The Gathering
.github/workflows | ||
code | ||
config | ||
.dockerignore | ||
.env.example | ||
.gitignore | ||
docker-compose.yml | ||
DOCKER.md | ||
Dockerfile | ||
LICENSE | ||
mypy.ini | ||
pyproject.toml | ||
README.md | ||
RELEASE_NOTES.md | ||
RELEASE_NOTES_TEMPLATE.md | ||
requirements.txt | ||
run-from-dockerhub.bat | ||
run-from-dockerhub.sh | ||
WINDOWS_DOCKER_GUIDE.md |
# 🃏 MTG Python Deckbuilder
A fast, menu-driven CLI to build MTG Commander/EDH decks. Supports interactive and headless runs, CSV/TXT exports, and Docker.
🔹 Features
- Commander search with smart theme tagging (primary/secondary/tertiary)
- Power bracket selection and ideal count prompts
- CSV and TXT exports with stable filenames
- Headless mode (non-interactive) and a headless submenu in the main menu
- Config precedence: CLI > env > JSON > defaults
✨ Highlights
- Smart tagging and suggestions for commander + themes
- Exports CSV and TXT decklists to
deck_files/
- Interactive menu with a headless submenu
- Works locally or in Docker (Windows PowerShell friendly)
🚀 Quick start
Docker Hub (PowerShell)
docker run -it --rm `
-v "${PWD}/deck_files:/app/deck_files" `
-v "${PWD}/logs:/app/logs" `
-v "${PWD}/csv_files:/app/csv_files" `
mwisnowski/mtg-python-deckbuilder:latest
From source
pip install -r requirements.txt
python code/main.py
From this repo with Docker Compose (PowerShell)
docker compose build
docker compose run --rm mtg-deckbuilder
🤖 Headless mode (no prompts)
- Auto-headless: set
DECK_MODE=headless
- Example (PowerShell):
docker compose run --rm -e DECK_MODE=headless mtg-deckbuilder
- Example (PowerShell):
- Use a JSON config: mount
./config
to/app/config
and setDECK_CONFIG=/app/config/deck.json
- Example (PowerShell):
docker compose run --rm ` -e DECK_MODE=headless ` -e DECK_CONFIG=/app/config/deck.json ` mtg-deckbuilder
- Example (PowerShell):
- Override via env vars (subset):
DECK_COMMANDER
,DECK_PRIMARY_CHOICE
,DECK_ADD_LANDS
,DECK_FETCH_COUNT
,DECK_USE_MULTI_THEME
- Precedence: CLI > env > JSON > defaults
Headless submenu notes:
- If one JSON exists in
config/
, it auto-runs it - If multiple exist, they’re listed as "Commander - Theme1, Theme2, Theme3";
deck.json
shows as "Default" - CSV/TXT are exported as usual; JSON run-config is exported only in interactive runs
Example JSON (config/deck.json
):
{
"commander": "Pantlaza",
"use_multi_theme": true,
"primary_choice": 2,
"secondary_choice": 2,
"tertiary_choice": 2,
"add_lands": true,
"fetch_count": 3,
"ideal_counts": { "ramp": 10, "lands": 36, "basic_lands": 16, "creatures": 28, "removal": 8, "wipes": 3, "card_advantage": 8, "protection": 3 }
}
Notes: headless honors ideal_counts
(leave prompts blank to accept). Only fetch_count
is tracked/exported for lands.
🕹️ Usage (interactive)
- Start the app (Docker or from source)
- Pick Build a New Deck
- Search/confirm commander
- Pick primary/secondary/tertiary themes (or stop at primary)
- Choose power bracket and review ideal counts
- Deck builds; CSV/TXT export to
deck_files/
⚙️ Environment variables (common)
- DECK_MODE=headless
- DECK_CONFIG=/app/config/deck.json
- DECK_COMMANDER, DECK_PRIMARY_CHOICE, DECK_SECONDARY_CHOICE, DECK_TERTIARY_CHOICE
- DECK_ADD_LANDS, DECK_FETCH_COUNT
- DECK_ADD_CREATURES, DECK_ADD_NON_CREATURE_SPELLS, DECK_ADD_RAMP, DECK_ADD_REMOVAL, DECK_ADD_WIPES, DECK_ADD_CARD_ADVANTAGE, DECK_ADD_PROTECTION
- DECK_USE_MULTI_THEME
<EFBFBD> Folders
deck_files/
— CSV/TXT exportscsv_files/
— card datalogs/
— logsconfig/
— JSON configs (optional)
🧰 Troubleshooting
- Use
docker compose run --rm
(notup
) for interactive sessions - Ensure volumes are mounted so files persist (
deck_files
,logs
,csv_files
) - For headless with config, mount
./config:/app/config
and setDECK_CONFIG
<EFBFBD> License & help
- License: MIT (see
LICENSE
) - Issues/Requests: GitHub Issues/Discussions
- Docker details: see
DOCKER.md