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