Yigit Boyar | 3279445 | 2023-10-31 19:54:24 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -x |
| 3 | set -e |
| 4 | function relativize() { |
| 5 | python3 -c "import os.path; print(os.path.relpath('$1', '$2'))" |
| 6 | } |
| 7 | |
| 8 | PLAYGROUND_PROJECTS=( $(find . -not -path "playground" -name "settings.gradle" -exec grep -l "selectProjectsFromAndroidX" {} \+) ) |
| 9 | |
| 10 | TARGET_PG_ROOT="./playground-projects" |
| 11 | |
| 12 | function 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 | |
| 23 | function 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 | |
| 43 | function 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 | |
| 50 | for OLD_PLAYGROUND_PROJECT in "${PLAYGROUND_PROJECTS[@]}" |
| 51 | do |
| 52 | PG_PATH=$(dirname $OLD_PLAYGROUND_PROJECT) |
| 53 | migrateOldPlayground $PG_PATH |
| 54 | done |