#
# Copyright Super iPaaS Integration LLC, an IBM Company 2024
#
#!/bin/bash

# Variables declarations
REVIEW_UTILS_REPO="$(get_env pr_review_repo)"  
DEST_DIR="code-review-utils"                                       
REVIEW_UTILS_BRANCH="main"                                              
OWNER="velox"
REPO="api-studio"
PULL_HEAD_REF="$(get_env head-branch)"
PULL_BASE_REF="$(get_env base-branch)"
PR_URL="$(get_env pr-url)"
PULL_NUMBER=$(echo "$PR_URL" | awk -F'/' '{print $NF}')
GH_REPO_TOKEN="$(get_env gh_repo_token)"
GEN_AI_APIKEY="$(get_env gen_ai_apikey)"
GEN_AI_BASE_URL="$(get_env gen_ai_base_url)"
GEN_AI_MODEL="$(get_env gen_ai_model)"
GEN_AI_PROJECT_ID="$(get_env gen_ai_project_id)"
GEN_AI_PROMPT_INFO="$(get_env gen_ai_prompt_info)"
WATSONX_TYPE="$(get_env watsonx_type)"
API_REVIEW_EXCLUDES="$(get_env api_review_excludes)"
IBM_CLIENT_ID="$(get_env ibm_client_id)"
IBM_CLIENT_SECRET="$(get_env ibm_client_secret)"

echo "===== Starting Astah PR Review ====="

# Step 1: Clone the repository
if [ -d "$DEST_DIR" ]; then
  echo "Directory $DEST_DIR already exists. Skipping clone."
else
  echo "Cloning repository..."
  git clone "$REVIEW_UTILS_REPO" "$DEST_DIR"
fi

# Step 2: Change to the repository directory
cd "$DEST_DIR" || { echo "Failed to change directory to $DEST_DIR"; exit 1; }

# Step 3: Checkout the specified branch
echo "Checking out review utils branch: $REVIEW_UTILS_BRANCH"
git fetch --all
git checkout "$REVIEW_UTILS_BRANCH"

# Step 4: Install dependencies
echo "Installing dependencies..."
npm install

# Step 5: Build the package
echo "Building the package..."
npm run build:package

# Step 6: Run the Node.js script with the required arguments
echo "Running the script..."
node ./dist/index.js \
  --owner "$OWNER" \
  --repo "$REPO" \
  --pull-head-ref "$PULL_HEAD_REF" \
  --pull-base-ref "$PULL_BASE_REF" \
  --pull-number "$PULL_NUMBER" \
  --env \
    gh_repo_token="$GH_REPO_TOKEN",gen_ai_apikey="$GEN_AI_APIKEY",gen_ai_base_url="$GEN_AI_BASE_URL",gen_ai_model="$GEN_AI_MODEL",gen_ai_project_id="$GEN_AI_PROJECT_ID",gen_ai_prompt_info="$GEN_AI_PROMPT_INFO",watsonx_type="$WATSONX_TYPE",api_review_excludes="$API_REVIEW_EXCLUDES",ibm_client_id="$IBM_CLIENT_ID",ibm_client_secret="$IBM_CLIENT_SECRET"

echo "===== Astah PR review completed ====="

# Cleanup Step
echo "Performing cleanup..."
cd ..
if [ -d "$DEST_DIR" ]; then
  echo "Removing cloned repository directory $DEST_DIR..."
  rm -rf "$DEST_DIR"
else
  echo "No directory $DEST_DIR found to clean up."
fi
