#!/bin/bash

# Function to display usage information
usage() {
    echo "Usage: $0 <project_dir> <export_dir> <preset_name> <version> [platform] [project_name]"
    echo
    echo "Arguments:"
    echo "  project_dir   The project directory where the 'project.godot' file is located"
    echo "  export_dir    The base directory to export project to"
    echo "  preset_name   The name of the export preset"
    echo "  version       The version of the export"
    echo "  platform      (Optional) The platform"
    echo "  project_name  (Optional) The project name"
}

# Check for minimum required arguments
if [ $# -lt 4 ]; then
    echo "Error: Insufficient arguments provided."
    usage
    exit 1
fi

# Arguments
PROJECT_DIR=$1      # The project directory where the 'project.godot' file is located
EXPORT_DIR=$2       # The base directory to export project to
PRESET_NAME=$3      # The name of the export preset
VERSION=$4          # The version of the export
PLATFORM=$5         # The platform (Optional)
PROJECT_NAME=$6     # The project name (Optional)

# Check if PROJECT_DIR exists
if [ ! -d "$PROJECT_DIR" ]; then
    echo "Error: Project directory does not exist: $PROJECT_DIR"
    exit 1
fi

# Check if project.godot file exists
if [ ! -f "$PROJECT_DIR/project.godot" ]; then
    echo "Error: project.godot file not found in $PROJECT_DIR"
    exit 1
fi

# Script locations
SCRIPT_DIR="$(dirname "$0")"
GET_PLATFORM="$SCRIPT_DIR/get_platform"
GET_PROJECT_NAME="$SCRIPT_DIR/get_project_name"

# Configuration file paths
PROJECT_CONFIG_FILE="$PROJECT_DIR/project.godot"
EXPORT_PRESETS_CONFIG_FILE="$PROJECT_DIR/export_presets.cfg"

# Get project name and platform
EXPORT_PLATFORM=$PLATFORM

if [ "$EXPORT_PLATFORM" == "" ]; then
    EXPORT_PLATFORM=$($GET_PLATFORM $EXPORT_PRESETS_CONFIG_FILE $PRESET_NAME)
fi

EXPORT_PROJECT_NAME=$($GET_PROJECT_NAME $PROJECT_CONFIG_FILE)

if [ "$EXPORT_PROJECT_NAME" == "" ]; then
    EXPORT_PROJECT_NAME=$($GET_PROJECT_NAME $EXPORT_PRESETS_CONFIG_FILE $PRESET_NAME)
fi

# Set up export directory and path
PRESET_EXPORT_DIR="$EXPORT_DIR/${PRESET_NAME// /_}"
PRESET_EXPORT_PATH="$PRESET_EXPORT_DIR/${EXPORT_PROJECT_NAME// /_}_v$VERSION"

# Adjust export path based on platform
if [ "$EXPORT_PLATFORM" == "Web" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_DIR/index.html"
elif [ "$EXPORT_PLATFORM" == "Linux" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_PATH"
elif [ "$EXPORT_PLATFORM" == "macOS" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_PATH.zip"
elif [ "$EXPORT_PLATFORM" == "Windows Desktop" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_PATH.exe"
elif [ "$EXPORT_PLATFORM" == "Android" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_PATH.apk"
elif [ "$EXPORT_PLATFORM" == "iOS" ]; then
    PRESET_EXPORT_PATH="$PRESET_EXPORT_PATH.zip"
fi

# Create export directory and remove any existing content
PROJECT_PRESET_EXPORT_DIR="$PROJECT_DIR/$PRESET_EXPORT_DIR"
rm -rf "$PROJECT_PRESET_EXPORT_DIR/*"
mkdir -p "$PROJECT_PRESET_EXPORT_DIR"

# Export the project
echo "Exporting $PRESET_NAME to $PRESET_EXPORT_PATH"
godot $PROJECT_CONFIG_FILE --headless --verbose --export-release $PRESET_NAME $PRESET_EXPORT_PATH

# Output the export path
echo $PRESET_EXPORT_PATH