Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Whartoff - An ActionBarSherlock migration utility
- #
- # usage: whartoff.sh <option> <project directory>
- #
- # options:
- # -c : ActionBarSherlock to compatibility ActionBar
- # -n : ActionBarSherlock to native ActionBar
- #!/bin/bash
- # First, we test whether bash supports arrays.
- # (Support for arrays was only added recently.)
- #
- whotest[0]='test' || (echo 'Failure: I did a test and determined that arrays not supported in this version of bash.' && exit 2)
- usage ()
- {
- echo -e "\nusage: $0 <option> <project directory>\n\noptions:\n -c : ActionBarSherlock to compatibility ActionBar \n -n : ActionBarSherlock to native ActionBar\n"
- exit 1
- }
- [ "$1" = "-c" ] || [ "$1" = "-n" ] || usage
- [ -n "$2" ] || usage
- if [ -f "$2"/AndroidManifest.xml ]; then
- # ant
- SRC_PATH="$2"/src
- RES_PATH="$2"/res
- MAN_PATH="$2"/AndroidManifest.xml
- else
- if [ -f "$2"/src/main/AndroidManifest.xml ]; then
- # gradle
- SRC_PATH="$2"/src/main/java
- RES_PATH="$2"/src/main/res
- MAN_PATH="$2"/src/main/AndroidManifest.xml
- else
- echo "$2 does not contain an Android project"
- exit 1
- fi
- fi
- APP=$(grep "package=" "$MAN_PATH" | cut -d"\"" -f2,2)
- sedList1=(
- 's/com.actionbarsherlock.view.Menu/android.view.Menu/g'
- 's/com.actionbarsherlock.view.MenuInflater/android.view.MenuInflater/g'
- 's/com.actionbarsherlock.view.MenuItem/android.view.MenuItem/g'
- 's/com.actionbarsherlock.view.SubMenu/android.view.SubMenu/g'
- 's/com.actionbarsherlock.view.Window/android.view.Window/g'
- 's/com.actionbarsherlock.app.SherlockFragment/android.support.v4.app.Fragment/g'
- 's/com.actionbarsherlock.app.SherlockListFragment/android.support.v4.app.ListFragment/g'
- 's/SherlockFragment/Fragment/g'
- 's/SherlockListFragment/ListFragment/g'
- 's/SherlockPreferenceActivity/PreferenceActivity/g'
- 's/getSupportMenuInflater(/getMenuInflater(/g'
- 's/setSupportProgress/setProgress/g'
- 's/setSupportSecondaryProgress/setSecondaryProgress/g'
- )
- sedList2=( '' )
- if [ "$1" = "-c" ]; then
- # compat
- THE='s/Theme.Sherlock/Theme.AppCompat/g'
- sedList2=(
- 's/com.actionbarsherlock.app.SherlockFragmentActivity/android.support.v7.app.ActionBarActivity/g'
- 's/com.actionbarsherlock.app.SherlockPreferenceActivity/android.preference.PreferenceActivity/g'
- 's/com.actionbarsherlock.view.ActionProvider/android.support.v4.view.ActionProvider/g'
- 's/import\ com.actionbarsherlock/import\ android.support.v7/g'
- 's/SherlockActivity/ActionBarActivity/g'
- 's/SherlockFragmentActivity/ActionBarActivity/g'
- 's/SherlockListActivity/ActionBarListActivity/g' #???
- $THE
- 's/Widget.Sherlock/Widget.AppCompat/g'
- 's/android:showAsAction/app:showAsAction/g'
- 's/<menu/<menu xmlns:app="http:\/\/schemas.android.com\/apk\/res-auto"/g'
- 's/startActionMode(/startSupportActionMode(/g'
- )
- # android.support.v4.view.MenuItemCompat ???
- else
- # native
- THE='s/Theme.Sherlock/android:Theme.Holo/g'
- sedList2=(
- 's/com.actionbarsherlock.app.SherlockFragmentActivity/android.support.v4.app.FragmentActivity/g'
- 's/com.actionbarsherlock.app.SherlockPreferenceActivity/android.preference.PreferenceActivity/g'
- 's/import\ com.actionbarsherlock/import\ android/g'
- 's/SherlockActivity/Activity/g'
- 's/SherlockFragmentActivity/FragmentActivity/g'
- 's/SherlockListActivity/ListActivity/g'
- $THE
- 's/Widget.Sherlock/android:Widget.Holo/g'
- 's/getSupportActionBar(/getActionBar(/g'
- )
- fi
- function sedMultiple2 {
- echo "PARAM1: $1"
- echo "PARAM2: $2"
- echo "PARAM3: $3"
- declare -a inArraySed1=("${!1}")
- INPATH1=$2
- INFTYPE=$3
- # (Loop until we find an empty string.)
- count1=0
- while [ "x${inArraySed1[count1]}" != "x" ]
- do
- count1=$(( $count1 + 1 ))
- done
- echo "*** Array items count1: $count1"
- count2=0
- while [ "x${inArraySed1[count2]}" != "x" ]
- do
- singleSed1=${inArraySed1[count2]}
- echo "---: $count2 find $INPATH1 -type f -name $INFTYPE -print0 | xargs -0 sed -i $singleSed1"
- find $INPATH1 -type f -name $INFTYPE -print0 | xargs -0 sed -i "$singleSed1"
- count2=$(( $count2 + 1 ))
- done
- }
- sedMultiple2 sedList1[@] "$SRC_PATH" "*.java"
- read -p "*** First batch done, continue with [Enter]..."
- sedMultiple2 sedList2[@] "$RES_PATH" "*.xml"
- read -p "*** Second batcj, continue with [Enter]..."
- sedList3=( $THE )
- sedMultiple2 sedList3[@] "$MAN_PATH" "*.xml"
- echo "done!"
- # ToDo: Check errorlevels
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement