router.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/bash
  2. # Movie Personality Router Script
  3. # Routes to the appropriate character workflow based on config and arguments
  4. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  5. CONFIG_FILE="$SCRIPT_DIR/config/personality-config.json"
  6. # Show help
  7. show_help() {
  8. cat << 'EOF'
  9. 🎬 Movie Personality Router
  10. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  11. Usage: router.sh [OPTIONS]
  12. OPTIONS:
  13. -c, --character <name> Character to embody (yoda, stark, sherlock)
  14. -m, --mission <number> Mission number (1 or 2) - overrides config
  15. -h, --help Show this help message
  16. EXAMPLES:
  17. ./router.sh --character yoda
  18. ./router.sh --character stark --mission 2
  19. ./router.sh -c sherlock -m 1
  20. CHARACTERS:
  21. yoda - Wise Jedi Master from Star Wars
  22. stark - Genius billionaire Tony Stark from Iron Man
  23. sherlock - Master detective Sherlock Holmes
  24. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  25. EOF
  26. }
  27. # Validate character
  28. validate_character() {
  29. local char="$1"
  30. case "$char" in
  31. yoda|stark|sherlock)
  32. return 0
  33. ;;
  34. *)
  35. echo "❌ Error: Unknown character '$char'"
  36. echo "Available characters: yoda, stark, sherlock"
  37. exit 1
  38. ;;
  39. esac
  40. }
  41. # Get mission from config
  42. get_mission_from_config() {
  43. local char="$1"
  44. # Simple JSON parsing - extract mission value for character
  45. grep -A 2 "\"$char\"" "$CONFIG_FILE" | grep "\"mission\"" | grep -o '[0-9]' | head -1
  46. }
  47. # Validate mission
  48. validate_mission() {
  49. local mission="$1"
  50. if ! echo "$mission" | grep -qE '^[1-2]$'; then
  51. echo "❌ Error: Invalid mission '$mission'. Must be 1 or 2."
  52. exit 1
  53. fi
  54. }
  55. # Parse arguments
  56. CHARACTER=""
  57. MISSION=""
  58. while [[ $# -gt 0 ]]; do
  59. case $1 in
  60. -c|--character)
  61. CHARACTER="$2"
  62. shift 2
  63. ;;
  64. -m|--mission)
  65. MISSION="$2"
  66. shift 2
  67. ;;
  68. -h|--help)
  69. show_help
  70. exit 0
  71. ;;
  72. *)
  73. echo "❌ Unknown option: $1"
  74. exit 1
  75. ;;
  76. esac
  77. done
  78. # Main logic
  79. if [[ -z "$CHARACTER" ]]; then
  80. echo "❌ Error: Character is required"
  81. echo "Use --help for usage information"
  82. exit 1
  83. fi
  84. validate_character "$CHARACTER"
  85. # Determine mission
  86. if [[ -z "$MISSION" ]]; then
  87. MISSION=$(get_mission_from_config "$CHARACTER")
  88. if [[ -z "$MISSION" ]]; then
  89. echo "❌ Error: Could not determine mission from config"
  90. exit 1
  91. fi
  92. fi
  93. validate_mission "$MISSION"
  94. # Execute the workflow script
  95. SCRIPT_NAME="${CHARACTER}-workflow.sh"
  96. SCRIPT_PATH="$SCRIPT_DIR/scripts/$SCRIPT_NAME"
  97. if [[ ! -f "$SCRIPT_PATH" ]]; then
  98. echo "❌ Error: Script not found: $SCRIPT_PATH"
  99. exit 1
  100. fi
  101. # Convert character to uppercase for display
  102. CHAR_UPPER=$(echo "$CHARACTER" | tr '[:lower:]' '[:upper:]')
  103. echo "🎬 Loading $CHAR_UPPER personality..."
  104. echo ""
  105. # Execute the workflow
  106. bash "$SCRIPT_PATH" "$MISSION"