| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #!/bin/bash
- # Movie Personality Router Script
- # Routes to the appropriate character workflow based on config and arguments
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- CONFIG_FILE="$SCRIPT_DIR/config/personality-config.json"
- # Show help
- show_help() {
- cat << 'EOF'
- 🎬 Movie Personality Router
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Usage: router.sh [OPTIONS]
- OPTIONS:
- -c, --character <name> Character to embody (yoda, stark, sherlock)
- -m, --mission <number> Mission number (1 or 2) - overrides config
- -h, --help Show this help message
- EXAMPLES:
- ./router.sh --character yoda
- ./router.sh --character stark --mission 2
- ./router.sh -c sherlock -m 1
- CHARACTERS:
- yoda - Wise Jedi Master from Star Wars
- stark - Genius billionaire Tony Stark from Iron Man
- sherlock - Master detective Sherlock Holmes
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- EOF
- }
- # Validate character
- validate_character() {
- local char="$1"
- case "$char" in
- yoda|stark|sherlock)
- return 0
- ;;
- *)
- echo "❌ Error: Unknown character '$char'"
- echo "Available characters: yoda, stark, sherlock"
- exit 1
- ;;
- esac
- }
- # Get mission from config
- get_mission_from_config() {
- local char="$1"
- # Simple JSON parsing - extract mission value for character
- grep -A 2 "\"$char\"" "$CONFIG_FILE" | grep "\"mission\"" | grep -o '[0-9]' | head -1
- }
- # Validate mission
- validate_mission() {
- local mission="$1"
- if ! echo "$mission" | grep -qE '^[1-2]$'; then
- echo "❌ Error: Invalid mission '$mission'. Must be 1 or 2."
- exit 1
- fi
- }
- # Parse arguments
- CHARACTER=""
- MISSION=""
- while [[ $# -gt 0 ]]; do
- case $1 in
- -c|--character)
- CHARACTER="$2"
- shift 2
- ;;
- -m|--mission)
- MISSION="$2"
- shift 2
- ;;
- -h|--help)
- show_help
- exit 0
- ;;
- *)
- echo "❌ Unknown option: $1"
- exit 1
- ;;
- esac
- done
- # Main logic
- if [[ -z "$CHARACTER" ]]; then
- echo "❌ Error: Character is required"
- echo "Use --help for usage information"
- exit 1
- fi
- validate_character "$CHARACTER"
- # Determine mission
- if [[ -z "$MISSION" ]]; then
- MISSION=$(get_mission_from_config "$CHARACTER")
- if [[ -z "$MISSION" ]]; then
- echo "❌ Error: Could not determine mission from config"
- exit 1
- fi
- fi
- validate_mission "$MISSION"
- # Execute the workflow script
- SCRIPT_NAME="${CHARACTER}-workflow.sh"
- SCRIPT_PATH="$SCRIPT_DIR/scripts/$SCRIPT_NAME"
- if [[ ! -f "$SCRIPT_PATH" ]]; then
- echo "❌ Error: Script not found: $SCRIPT_PATH"
- exit 1
- fi
- # Convert character to uppercase for display
- CHAR_UPPER=$(echo "$CHARACTER" | tr '[:lower:]' '[:upper:]')
- echo "🎬 Loading $CHAR_UPPER personality..."
- echo ""
- # Execute the workflow
- bash "$SCRIPT_PATH" "$MISSION"
|