代码拉取完成,页面将自动刷新
#!/bin/bash -e
# shellcheck disable=SC2034
BUILDER_VERSION=1.4.2
PATCH_INSTALL_NAME=kylin-patch-installer
INSTALLER_RUN=${PATCH_INSTALL_NAME}.run
BASE_NAME=patches
CHANGELOG=${BASE_NAME}-changelog.html
LIST_FILE=${BASE_NAME}.list
PACKAGE=${BASE_NAME}.tar.gz
VERSION_FILE=VERSION
SELF_INSTALLER=self-installer.sh
FUNCTION_SRC=FUNCTIONS.in
FUNCTION_DST=FUNCTIONS
INSTALLER_SRC=installer.sh.in
INSTALLER_CUSTOMED_SRC=installer.custom.sh.in
INSTALLER_DST=installer.sh
AUTO_MODE=false
CUSTOM_INSTALLER=false
INSTALLER_MODE=GUI
ALL_OSVER="__ALL_OSVER__"
ALL_MAINLINE="__ALL_MAINLINE__"
ALL_CPU="__ALL_CPU__"
ALL_HUAWEI_CPU="__ALL_HUAWEI_CPU__"
USAGE=
USAGE="${USAGE:+${USAGE}\n}Usage: $0 [-avh] <Patch Dirs> [<Patch Dirs>...]"
USAGE="${USAGE:+${USAGE}\n} -a,--cli,--auto : Auto mode, no user interaction"
USAGE="${USAGE:+${USAGE}\n} -all-osver : Not detect OS Version and OS Mainline (v10 or v10sp1 ...)"
USAGE="${USAGE:+${USAGE}\n} -all-mainline : Not detect OS Mainline (2107, 2203, 2303, ...)"
USAGE="${USAGE:+${USAGE}\n} -all-cpu : Not detect CPU is or not Huawei CPU"
USAGE="${USAGE:+${USAGE}\n} -all-huawei : Not detect Huawei CPU model (990, 9006c, m900, ...)"
USAGE="${USAGE:+${USAGE}\n} -custom [installer] : Custom Installer Script, default is named 'installer.custom.sh.in'"
USAGE="${USAGE:+${USAGE}\n} -v,--version : Show version and exit"
USAGE="${USAGE:+${USAGE}\n} -h,--help : Show this help message and exit"
USAGE="${USAGE:+${USAGE}\n} <Patch Dirs> : Directories containing patches"
USAGE="${USAGE:+${USAGE}\n}"
if [ $# -eq 0 ]; then
echo -e "${USAGE}"
exit 1
fi
declare -a PATCH_DIRS
while [ $# -gt 0 ]; do
case "$1" in
-v|--version)
echo "${BUILDER_VERSION}" && exit 0
;;
-h|--help)
echo -e "${USAGE}" && exit 0
;;
-a|--cli|--auto)
AUTO_MODE=true
INSTALLER_MODE=CLI
shift
;;
-all-osver)
ALL_OSVER=true
ALL_MAINLINE=true
shift
;;
-all-mainline)
ALL_MAINLINE=true
shift
;;
-all-cpu)
ALL_CPU=true
shift
;;
-all-huawei)
ALL_HUAWEI_CPU=true
shift
;;
-custom)
CUSTOM_INSTALLER=true
shift
if [ -f "$1" ]; then
INSTALLER_SRC="$1"
shift
else
INSTALLER_SRC=${INSTALLER_CUSTOMED_SRC}
fi
;;
*)
PATCH_DIRS+=("$1")
# read -ra PATCH_DIRS <<< "${PATCH_DIRS[*]} $1"
shift
;;
esac
done
echo -e "Generating Patches Installer ..."
# Create a temp folder
TMPDIR=$(mktemp -d "$(basename "$0").XXXXXX")
# Update List File
rm -f "${LIST_FILE}"
{
echo "# Sha256Sum | File"
for PATCH_DIR in "${PATCH_DIRS[@]}"; do
PATCH_DIR_PARENT=.
if [ "${PATCH_DIR:0:1}" = "/" ]; then
PATCH_DIR_PARENT=/
fi
pushd "${PATCH_DIR_PARENT}" > /dev/null || exit $?
find "${PATCH_DIR#/}" -type f -regextype posix-extended -regex ".*\.(deb|rpm)" -print0 | xargs -0 sha256sum
popd > /dev/null || exit $?
done
} >> "${LIST_FILE}"
# Check List File
LIST_FILE_LINES=$(grep -cv "^#" "${LIST_FILE}")
if [ "${LIST_FILE_LINES}" -lt 1 ]; then
echo -e "Invalid List File [${LIST_FILE}]. No Patch Package is included."
echo -e "Please Check your Arguments!"
exit 1
fi
# Update Installer
sed -e "s|__BASE_NAME__|${BASE_NAME}|g" "${FUNCTION_SRC}" > "${FUNCTION_DST}"
[ "${ALL_OSVER}" = true ] && sed -i -e "s|__ALL_OSVER__|true|g" "${FUNCTION_DST}"
[ "${ALL_MAINLINE}" = true ] && sed -i -e "s|__ALL_MAINLINE__|true|g" "${FUNCTION_DST}"
[ "${ALL_CPU}" = true ] && sed -i -e "s|__ALL_CPU__|true|g" "${FUNCTION_DST}"
[ "${ALL_HUAWEI_CPU}" = true ] && sed -i -e "s|__ALL_HUAWEI_CPU__|true|g" "${FUNCTION_DST}"
sed -e "s|__INSTALLER_MODE__|${INSTALLER_MODE}|g" "${INSTALLER_SRC}" > "${INSTALLER_DST}"
chmod 755 "${INSTALLER_DST}"
# Package All Needed Files
tar --gzip -c -f "${TMPDIR}/${PACKAGE}" \
"${FUNCTION_DST}" \
"${INSTALLER_DST}" \
"${VERSION_FILE}" \
"${CHANGELOG}" \
"${LIST_FILE}" \
"${PATCH_DIRS[@]}"
rm -f "${FUNCTION_DST}"
rm -f "${INSTALLER_DST}"
# Update Self Installer in temp folder
SUM=$(sha256sum "${TMPDIR}/${PACKAGE}" | awk '{print $1}')
sed -e "s|__SHA256SUM__|${SUM}|g" \
-e "s|__BASE_NAME__|${BASE_NAME}|g" \
-e "s|__INSTALLER__|${INSTALLER_DST}|g" \
-e "s|__INSTALLER_MODE__|${INSTALLER_MODE}|g" \
"${SELF_INSTALLER}" > "${TMPDIR}/${SELF_INSTALLER}"
# Create Installer Package
cat "${TMPDIR}/${SELF_INSTALLER}" "${TMPDIR}/${PACKAGE}" > "${INSTALLER_RUN}"
chmod +x "${INSTALLER_RUN}"
# Cleanup temp folder
rm -rf "${TMPDIR}"
rm -f "${LIST_FILE}"
# Add date & time to installer name
if [ "${AUTO_MODE}" = true ]; then
INSTALLER_FILE=${PATCH_INSTALL_NAME}-auto-$(date "+%Y%m%d").run
else
INSTALLER_FILE=${PATCH_INSTALL_NAME}-$(date "+%Y%m%d").run
fi
mv "${INSTALLER_RUN}" "${INSTALLER_FILE}"
echo -e "Installer: \e[1;32m${INSTALLER_FILE}\e[0m Done."
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。