81 lines
2.2 KiB
Bash
Executable File
81 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# *****************************************************************************
|
||
# @author CsHeng
|
||
# @2017.9.13 init
|
||
#
|
||
# 处理tinker patch包,默认以最新的包作为基线包来出包
|
||
#
|
||
#
|
||
# *****************************************************************************
|
||
|
||
# get current shell absolute dir
|
||
CWD=$(cd "$(dirname "$0")"; pwd)
|
||
|
||
source ${CWD}/tinker_env.sh
|
||
|
||
# 如果git代码已经提交了,目的是为了确认git commit id是能作为一个可追踪的tinkerId
|
||
cd ${CWD}
|
||
if [ -n "$(git status --porcelain)" ]; then
|
||
echo "Please make sure that you commit your code before release "
|
||
exit 0
|
||
fi
|
||
cd ${OLDPWD}
|
||
|
||
path_dir=`grep -r TINKER_BASE_APK_DIR ${GRADLE_FILE}| awk -F '=' '{print $2}'`
|
||
path_base=`echo ${path_dir} | awk -F '_' '{print $1}'`
|
||
git_sha_old=`echo ${path_dir} | awk -F '_' '{print $2}'`
|
||
git_sha_new=`git rev-parse --short HEAD`
|
||
patch_dir=${APP_TINKER_BASE}/${path_dir}/patch/${git_sha_new}
|
||
|
||
# dir exists, already patched
|
||
if [ -d "${patch_dir}" ]; then
|
||
echo "git sha has already patched, skip patch."
|
||
exit 0
|
||
else
|
||
echo "git sha has no history patch files, starting patch..."
|
||
if [ "${git_sha_new}" == "${git_sha_old}" ]; then
|
||
echo "new git sha same as old git sha, skip patch."
|
||
exit 0
|
||
fi
|
||
fi
|
||
|
||
echo ${path_dir} ${path_base} ${git_sha_old} ${git_sha_new}
|
||
|
||
echo "enabling tinker..."
|
||
|
||
# enable tinker build
|
||
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=1/g" ${GRADLE_FILE}
|
||
|
||
# write new patch tinker id
|
||
sed -i.bak "s/TINKER_ID\=\(.*\)/TINKER_ID\=${git_sha_new}/g" ${GRADLE_FILE}
|
||
|
||
echo ${CMD_GRADLE_SYNC}
|
||
${CMD_GRADLE_SYNC}
|
||
|
||
mkdir -p ${TINKER_BAK_APK_BASE}/${path_dir}/
|
||
echo "cp -R ${APP_TINKER_BASE}/${path_dir}/. ${TINKER_BAK_APK_BASE}/${path_dir}"
|
||
cp -R ${APP_TINKER_BASE}/${path_dir}/. ${TINKER_BAK_APK_BASE}/${path_dir}
|
||
|
||
echo ${CMD_GRADLE_PATCH}
|
||
${CMD_GRADLE_PATCH}
|
||
|
||
echo "copying back patch files in case that files have been cleaned..."
|
||
mkdir -p ${patch_dir}
|
||
cp -R ${PATCH_OUTPUT}/. ${patch_dir}
|
||
|
||
echo "disabling tinker"
|
||
|
||
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=/g" ${GRADLE_FILE}
|
||
|
||
# write base tinker id
|
||
sed -i.bak "s/TINKER_ID\=\(.*\)/TINKER_ID\=${git_sha_old}/g" ${GRADLE_FILE}
|
||
|
||
# remove tmp file
|
||
rm ${GRADLE_FILE}.bak
|
||
|
||
echo ${CMD_GRADLE_SYNC}
|
||
${CMD_GRADLE_SYNC}
|
||
|
||
|
||
|