This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

75 lines
1.7 KiB
Bash
Raw Normal View History

2021-04-02 02:24:13 +03:00
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
MAPPING_DIR=node_modules/jetifier/src
MAPPING_FILE=$MAPPING_DIR/androidx-class-mapping.csv
MAPPING_SED=$MAPPING_DIR/androidx-class-mapping.sed
PROJECT_DIR=node_modules
DIRECTION=forward
W=20
for j in "$@"
do
case $j in
-w=*|--workers=*)
W="${j#*=}"
shift
;;
-r)
DIRECTION=reverse
shift
;;
*)
# unknown option
;;
esac
done
if [ "${BASH_VERSINFO}" -lt 5 ]; then
echo "INFO: bash version lower than 5.x. Performance is better with 5.x"
fi
rm -f $MAPPING_SED
echo "Creating new sed command from $MAPPING_FILE"
while IFS=, read -r from to
do
if [ "$DIRECTION" == "forward" ]; then
echo "s/$from/$to/g;" >> $MAPPING_SED
else
echo "s/$to/$from/g;" >> $MAPPING_SED
fi
done <<< "$(cat $MAPPING_FILE)"
# renderscript needs conversion, but is not an official conversion, add it
if [ "$DIRECTION" == "forward" ]; then
echo "s/android.support.v8.renderscript/android.renderscript/g;" >> $MAPPING_SED
else
echo "s/android.renderscript/android.support.v8.renderscript/g;" >> $MAPPING_SED
fi
echo "Command file for sed ready. Searching for files to $DIRECTION-jetify..."
jetify() {
echo "$DIRECTION-jetifying file $1"
sed -i".bak" -f $MAPPING_SED $FILE
rm -f "$FILE.bak"
}
for FILE in `find $PROJECT_DIR \( -name "*.java" -o -name "*.kt" -o -name "*.xml" \) -type f -not -path '*/\.git*' ! -path "*/android/app/build/*" ! -path "*/android/build/*"`; do
(
jetify $FILE
) &
if [[ $(jobs -r -p | wc -l) -gt $W ]]; then
# If bash is 4.3 or greater, do a fancy wait
if [ "${BASH_VERSINFO}" -lt 5 ]; then
wait
else
wait -n
fi
fi
done