jetify.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/bin/bash
  2. set -o errexit
  3. set -o nounset
  4. set -o pipefail
  5. MAPPING_DIR=node_modules/jetifier/src
  6. MAPPING_FILE=$MAPPING_DIR/androidx-class-mapping.csv
  7. MAPPING_SED=$MAPPING_DIR/androidx-class-mapping.sed
  8. PROJECT_DIR=node_modules
  9. DIRECTION=forward
  10. W=20
  11. for j in "$@"
  12. do
  13. case $j in
  14. -w=*|--workers=*)
  15. W="${j#*=}"
  16. shift
  17. ;;
  18. -r)
  19. DIRECTION=reverse
  20. shift
  21. ;;
  22. *)
  23. # unknown option
  24. ;;
  25. esac
  26. done
  27. if [ "${BASH_VERSINFO}" -lt 5 ]; then
  28. echo "INFO: bash version lower than 5.x. Performance is better with 5.x"
  29. fi
  30. rm -f $MAPPING_SED
  31. echo "Creating new sed command from $MAPPING_FILE"
  32. while IFS=, read -r from to
  33. do
  34. if [ "$DIRECTION" == "forward" ]; then
  35. echo "s/$from/$to/g;" >> $MAPPING_SED
  36. else
  37. echo "s/$to/$from/g;" >> $MAPPING_SED
  38. fi
  39. done <<< "$(cat $MAPPING_FILE)"
  40. # renderscript needs conversion, but is not an official conversion, add it
  41. if [ "$DIRECTION" == "forward" ]; then
  42. echo "s/android.support.v8.renderscript/android.renderscript/g;" >> $MAPPING_SED
  43. else
  44. echo "s/android.renderscript/android.support.v8.renderscript/g;" >> $MAPPING_SED
  45. fi
  46. echo "Command file for sed ready. Searching for files to $DIRECTION-jetify..."
  47. jetify() {
  48. echo "$DIRECTION-jetifying file $1"
  49. sed -i".bak" -f $MAPPING_SED $FILE
  50. rm -f "$FILE.bak"
  51. }
  52. 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
  53. (
  54. jetify $FILE
  55. ) &
  56. if [[ $(jobs -r -p | wc -l) -gt $W ]]; then
  57. # If bash is 4.3 or greater, do a fancy wait
  58. if [ "${BASH_VERSINFO}" -lt 5 ]; then
  59. wait
  60. else
  61. wait -n
  62. fi
  63. fi
  64. done