88 lines
1.8 KiB
Bash
88 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
APP_LIST_FILE="${SCRIPT_DIR}/AppList.md"
|
|
|
|
source "${SCRIPT_DIR}/project_registry.sh"
|
|
|
|
show_help() {
|
|
cat <<'EOF'
|
|
用法:
|
|
./project_updateversion.sh <ProjectName>
|
|
|
|
支持更新版本的项目:
|
|
EOF
|
|
|
|
list_projects | sed 's/^/ - /'
|
|
}
|
|
|
|
if [ $# -eq 1 ] && { [ "$1" = "-h" ] || [ "$1" = "--help" ]; }; then
|
|
show_help
|
|
exit 0
|
|
fi
|
|
|
|
if [ $# -ne 1 ]; then
|
|
show_help
|
|
exit 1
|
|
fi
|
|
|
|
if ! load_version_project_meta "$1"; then
|
|
echo "未知项目: $1" >&2
|
|
echo >&2
|
|
show_help >&2
|
|
exit 1
|
|
fi
|
|
|
|
VERSION_FILE="${REPO_DIR}/${VERSION_FILE_REL}"
|
|
|
|
if [ ! -f "${VERSION_FILE}" ]; then
|
|
echo "缺少版本文件: ${VERSION_FILE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "${APP_LIST_FILE}" ]; then
|
|
echo "缺少应用列表文件: ${APP_LIST_FILE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
read_project_version "${VERSION_FILE}" "${VERSION_MACRO}"
|
|
|
|
FULL_VERSION="${PROJECT_VERSION}.${PROJECT_BUILD}"
|
|
|
|
echo "项目: ${VERSION_PROJECT}"
|
|
echo "发布名称: ${PUBLISH_NAME}"
|
|
echo "版本文件: ${VERSION_FILE}"
|
|
echo "完整版本号: ${FULL_VERSION}"
|
|
|
|
if ! grep -qE "\\|[[:space:]]*${PUBLISH_NAME}[[:space:]]*\\|" "${APP_LIST_FILE}"; then
|
|
echo "错误: AppList.md 中未找到 ${PUBLISH_NAME}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
tmp_file="$(mktemp)"
|
|
trap 'rm -f "${tmp_file}"' EXIT
|
|
|
|
awk -F'|' -v publish="${PUBLISH_NAME}" -v version="${FULL_VERSION}" '
|
|
BEGIN {
|
|
OFS = "|"
|
|
}
|
|
{
|
|
if (NF >= 6) {
|
|
app_name = $4
|
|
gsub(/^[[:space:]]+|[[:space:]]+$/, "", app_name)
|
|
if (app_name == publish) {
|
|
$5 = " " version " "
|
|
}
|
|
}
|
|
print
|
|
}
|
|
' "${APP_LIST_FILE}" > "${tmp_file}"
|
|
|
|
mv "${tmp_file}" "${APP_LIST_FILE}"
|
|
trap - EXIT
|
|
|
|
echo "已将 ${PUBLISH_NAME} 更新为 ${FULL_VERSION}"
|