Version control Claude Code configuration including: - Global instructions (CLAUDE.md) - User settings (settings.json) - Custom agents (architect, designer, engineer, etc.) - Custom skills (create-skill templates and workflows) Excludes session data, secrets, cache, and temporary files per .gitignore. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
116 lines
3.5 KiB
Python
Executable File
116 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Distribute packs to all human-controlled teams in Paper Dynasty
|
|
|
|
Standalone script for pack distribution that can be used from the Paper Dynasty skill.
|
|
Works with both production and development environments.
|
|
|
|
This script uses the Paper Dynasty API client for all operations.
|
|
"""
|
|
import argparse
|
|
import logging
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add parent directory to path to import api_client
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
from api_client import PaperDynastyAPI
|
|
|
|
# Set up logging
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
logger = logging.getLogger('pack_distribution')
|
|
|
|
|
|
def distribute_packs(num_packs: int = 5, exclude_team_abbrev: list[str] = None, pack_type_id: int = 1):
|
|
"""Distribute packs to all human-controlled teams using Paper Dynasty API client
|
|
|
|
Args:
|
|
num_packs: Number of packs to give to each team (default: 5)
|
|
exclude_team_abbrev: List of team abbreviations to exclude (default: None)
|
|
pack_type_id: Pack type ID (default: 1 = Standard packs)
|
|
"""
|
|
if exclude_team_abbrev is None:
|
|
exclude_team_abbrev = []
|
|
|
|
# Get environment
|
|
database_env = os.getenv('DATABASE', 'dev').lower()
|
|
|
|
try:
|
|
# Initialize API client
|
|
api = PaperDynastyAPI(environment=database_env, verbose=True)
|
|
|
|
# Use the distribute_packs method
|
|
result = api.distribute_packs(
|
|
num_packs=num_packs,
|
|
exclude_team_abbrev=exclude_team_abbrev,
|
|
pack_type_id=pack_type_id
|
|
)
|
|
|
|
# Log final summary
|
|
logger.info(f"\n🎉 All done! Distributed {result['total_packs']} packs to {result['teams_count']} teams")
|
|
|
|
except ValueError as e:
|
|
logger.error(f"Configuration error: {e}")
|
|
sys.exit(1)
|
|
except Exception as e:
|
|
logger.error(f"Unexpected error: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(
|
|
description='Distribute packs to all human-controlled teams',
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
epilog="""
|
|
Examples:
|
|
# Give 5 packs to all teams (default)
|
|
python distribute_packs.py
|
|
|
|
# Give 10 packs to all teams
|
|
python distribute_packs.py --num-packs 10
|
|
|
|
# Give 5 packs, excluding certain teams
|
|
python distribute_packs.py --exclude-team-abbrev NYY BOS
|
|
|
|
# Give 3 packs, excluding one team
|
|
python distribute_packs.py --num-packs 3 --exclude-team-abbrev LAD
|
|
|
|
# Production environment
|
|
DATABASE=prod python distribute_packs.py --num-packs 10
|
|
|
|
# Exclude specific team in production
|
|
DATABASE=prod python distribute_packs.py --num-packs 11 --exclude-team-abbrev CAR
|
|
|
|
Environment Variables:
|
|
API_TOKEN - Required: API authentication token
|
|
DATABASE - Optional: 'dev' (default) or 'prod'
|
|
"""
|
|
)
|
|
parser.add_argument(
|
|
'--num-packs',
|
|
type=int,
|
|
default=5,
|
|
help='Number of packs to give to each team (default: 5)'
|
|
)
|
|
parser.add_argument(
|
|
'--exclude-team-abbrev',
|
|
nargs='*',
|
|
default=[],
|
|
help='Team abbreviations to exclude (space-separated, e.g., NYY BOS LAD)'
|
|
)
|
|
parser.add_argument(
|
|
'--pack-type-id',
|
|
type=int,
|
|
default=1,
|
|
help='Pack type ID (default: 1 = Standard packs)'
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
distribute_packs(
|
|
num_packs=args.num_packs,
|
|
exclude_team_abbrev=args.exclude_team_abbrev,
|
|
pack_type_id=args.pack_type_id
|
|
)
|