#!/bin/bash
# Helper script to kick-off a playground project setup.
# This is intended to be used when we create a new Playground project or update existing ones
# if we do structural changes in Playground's setup.

function relativize() {
    python3 -c "import os.path; print(os.path.relpath('$1', '$2'))"
}

PLAYGROUND_REL_PATH=$(dirname $0)
WORKING_DIR=$(pwd)

# helper symlink function that will also normalize the paths.
function symlink() {
    SRC=$1
    TARGET=$2
    TARGET_PARENT_DIR=$(dirname $TARGET)
    REL_PATH_TO_TARGET_PARENT=$(relativize $SRC $WORKING_DIR/$TARGET_PARENT_DIR)
    rm -rf $TARGET
    ln -s $REL_PATH_TO_TARGET_PARENT $TARGET
}

# symlink to the gradle folder in playground-common
symlink "${PLAYGROUND_REL_PATH}/gradle" gradle
symlink "${PLAYGROUND_REL_PATH}/gradlew" gradlew
symlink "${PLAYGROUND_REL_PATH}/gradlew.bat" gradlew.bat
# symlink to the properties file that is shared w/ androidx main
symlink "${PLAYGROUND_REL_PATH}/androidx-shared.properties" gradle.properties
# symlink to build source
symlink "${PLAYGROUND_REL_PATH}/../buildSrc" buildSrc

ANDROIDX_IDEA_DIR="${PLAYGROUND_REL_PATH}/../.idea"

# cleanup .idea, we'll re-create it
rm -rf .idea
mkdir .idea

# create idea directories first .idea config directories that are tracked in git
git ls-tree -d -r HEAD --name-only --full-name $ANDROIDX_IDEA_DIR|xargs mkdir -p

# get a list of all .idea files that are in git tree
# we excluse vcs as it is used for multiple repo setup which we don't need in playground
TRACKED_IDEA_FILES=( $(git ls-tree -r HEAD --name-only --full-name $ANDROIDX_IDEA_DIR| grep -v vcs| grep -v Compose) )

# create a symlink for each one of them
for IDEA_CONFIG_FILE in "${TRACKED_IDEA_FILES[@]}"
do
    # path to the actual .idea config file
    ORIGINAL_FILE="$PLAYGROUND_REL_PATH/../$IDEA_CONFIG_FILE"
    symlink $ORIGINAL_FILE $IDEA_CONFIG_FILE
    # force add the file to git
    git add -f $IDEA_CONFIG_FILE
done
