1#!/bin/bash
2set -x
3set -e
4function relativize() {
5    python3 -c "import os.path; print(os.path.relpath('$1', '$2'))"
6}
7
8PLAYGROUND_PROJECTS=( $(find . -not -path "playground" -name "settings.gradle" -exec grep -l "selectProjectsFromAndroidX" {} \+) )
9
10TARGET_PG_ROOT="./playground-projects"
11
12function deleteOldPlaygroundFiles {
13    OLD_PG=$(relativize $1)
14    rm -f "$OLD_PG/gradle"
15    rm -f "$OLD_PG/gradlew"
16    rm -f "$OLD_PG/gradlew.bat"
17    rm -f "$OLD_PG/gradle.properties"
18    rm -f "$OLD_PG/settings.gradle"
19    rm -rf "$OLD_PG/buildSrc"
20    rm -rf "$OLD_PG/.idea"
21}
22
23function createNewPlaygroundIn {
24    SETTINGS_FILE=$(relativize $1)
25    NEW_PG=$(relativize $2)
26    echo "create PG from $SETTINGS_FILE into $NEW_PG"
27    mkdir -p $NEW_PG
28    $(cp $SETTINGS_FILE $NEW_PG/.)
29    ls $NEW_PG
30    SETUP_PG_REL_PATH=$(realpath playground-common/setup-playground.sh)
31    echo "gonna execute cd $NEW_PG && $SETUP_PG_REL_PATH)"
32    (cd $NEW_PG; $SETUP_PG_REL_PATH)
33    REL_PLUGIN_PATH=$(relativize "playground-common/configure-plugin-management.gradle" "$NEW_PG")
34    REL_ROOT_PATH=$(relativize "." "$NEW_PG")
35    NEW_SETTINGS_FILE=$(relativize "$NEW_PG/settings.gradle")
36
37    echo "will replace pg path to $REL_PLUGIN_PATH"
38    sed -i '' -E "s#\".*configure-plugin-management.gradle\"#\"$REL_PLUGIN_PATH\"#g" $NEW_SETTINGS_FILE
39    echo "will replace setupPlayground calls"
40    sed -i '' -E "s#setupPlayground\(\".*\"\)#setupPlayground\(\"$REL_ROOT_PATH\"\)#g" $NEW_SETTINGS_FILE
41}
42
43function migrateOldPlayground {
44    OLD_PG=$1
45    NEW_PG="$TARGET_PG_ROOT/$OLD_PG-playground"
46    createNewPlaygroundIn "$OLD_PG/settings.gradle" $NEW_PG
47    deleteOldPlaygroundFiles $OLD_PG
48}
49
50for OLD_PLAYGROUND_PROJECT in "${PLAYGROUND_PROJECTS[@]}"
51do
52    PG_PATH=$(dirname $OLD_PLAYGROUND_PROJECT)
53    migrateOldPlayground $PG_PATH
54done
55