|
|
|
|
@ -5,6 +5,7 @@ ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
|
|
|
cd "$ROOT_DIR"
|
|
|
|
|
|
|
|
|
|
ABOUT_FILE="$ROOT_DIR/iti_system/__about__.py"
|
|
|
|
|
PYPROJECT_FILE="$ROOT_DIR/pyproject.toml"
|
|
|
|
|
README_FILE="$ROOT_DIR/README.md"
|
|
|
|
|
|
|
|
|
|
die() {
|
|
|
|
|
@ -46,13 +47,16 @@ bump_patch() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
version_is_newer() {
|
|
|
|
|
current_parts=$(parse_version "$1")
|
|
|
|
|
current_version=$1
|
|
|
|
|
target_version=$2
|
|
|
|
|
|
|
|
|
|
current_parts=$(parse_version "$current_version")
|
|
|
|
|
set -- $current_parts
|
|
|
|
|
current_major=$1
|
|
|
|
|
current_minor=$2
|
|
|
|
|
current_patch=$3
|
|
|
|
|
|
|
|
|
|
target_parts=$(parse_version "$2")
|
|
|
|
|
target_parts=$(parse_version "$target_version")
|
|
|
|
|
set -- $target_parts
|
|
|
|
|
target_major=$1
|
|
|
|
|
target_minor=$2
|
|
|
|
|
@ -104,18 +108,49 @@ replace_first_exact_line() {
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
replace_first_line_with_prefix() {
|
|
|
|
|
file=$1
|
|
|
|
|
prefix=$2
|
|
|
|
|
new_line=$3
|
|
|
|
|
tmp_file=$(mktemp)
|
|
|
|
|
|
|
|
|
|
if awk -v prefix="$prefix" -v new="$new_line" '
|
|
|
|
|
BEGIN { done = 0 }
|
|
|
|
|
index($0, prefix) == 1 && !done {
|
|
|
|
|
print new
|
|
|
|
|
done = 1
|
|
|
|
|
next
|
|
|
|
|
}
|
|
|
|
|
{ print }
|
|
|
|
|
END { if (!done) exit 1 }
|
|
|
|
|
' "$file" >"$tmp_file"; then
|
|
|
|
|
mv "$tmp_file" "$file"
|
|
|
|
|
else
|
|
|
|
|
rm -f "$tmp_file"
|
|
|
|
|
die "line not updated in $file"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write_about_version() {
|
|
|
|
|
current_version=$1
|
|
|
|
|
target_version=$2
|
|
|
|
|
replace_first_exact_line "$ABOUT_FILE" "__version__ = \"$current_version\"" "__version__ = \"$target_version\""
|
|
|
|
|
target_version=$1
|
|
|
|
|
replace_first_line_with_prefix "$ABOUT_FILE" "__version__ = " "__version__ = \"$target_version\""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write_readme_tags() {
|
|
|
|
|
current_version=$1
|
|
|
|
|
target_version=$2
|
|
|
|
|
old_line=' "iti-system @ git+https://git.noahlan.cn/iti-framework/iTi-System.git@v'"$current_version"'",'
|
|
|
|
|
new_line=' "iti-system @ git+https://git.noahlan.cn/iti-framework/iTi-System.git@v'"$target_version"'",'
|
|
|
|
|
replace_first_exact_line "$README_FILE" "$old_line" "$new_line"
|
|
|
|
|
write_pyproject_framework_tag() {
|
|
|
|
|
target_version=$1
|
|
|
|
|
replace_first_line_with_prefix "$PYPROJECT_FILE" 'iti-flask = { git = "https://git.noahlan.cn/iti-framework/iTi-Flask.git", tag = "' "iti-flask = { git = \"https://git.noahlan.cn/iti-framework/iTi-Flask.git\", tag = \"v$target_version\" }"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write_readme_dependency_tags() {
|
|
|
|
|
target_version=$1
|
|
|
|
|
replace_first_line_with_prefix "$README_FILE" ' "iti-flask @ git+https://git.noahlan.cn/iti-framework/iTi-Flask.git@v' ' "iti-flask @ git+https://git.noahlan.cn/iti-framework/iTi-Flask.git@v'"$target_version"'",'
|
|
|
|
|
replace_first_line_with_prefix "$README_FILE" ' "iti-system @ git+https://git.noahlan.cn/iti-framework/iTi-System.git@v' ' "iti-system @ git+https://git.noahlan.cn/iti-framework/iTi-System.git@v'"$target_version"'",'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write_readme_release_examples() {
|
|
|
|
|
target_version=$1
|
|
|
|
|
replace_first_line_with_prefix "$README_FILE" './iti-system.sh release v' "./iti-system.sh release v$target_version"
|
|
|
|
|
replace_first_line_with_prefix "$README_FILE" 'iti-system.cmd release v' "iti-system.cmd release v$target_version"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ensure_clean_tree() {
|
|
|
|
|
@ -162,10 +197,12 @@ main() {
|
|
|
|
|
ensure_tag_absent "$target_tag"
|
|
|
|
|
uv run pytest -q
|
|
|
|
|
|
|
|
|
|
write_about_version "$current_version" "$target_version"
|
|
|
|
|
write_readme_tags "$current_version" "$target_version"
|
|
|
|
|
write_about_version "$target_version"
|
|
|
|
|
write_pyproject_framework_tag "$target_version"
|
|
|
|
|
write_readme_dependency_tags "$target_version"
|
|
|
|
|
write_readme_release_examples "$target_version"
|
|
|
|
|
|
|
|
|
|
git add iti_system/__about__.py README.md
|
|
|
|
|
git add iti_system/__about__.py pyproject.toml README.md
|
|
|
|
|
git commit -m "chore: release $target_tag"
|
|
|
|
|
git tag -a "$target_tag" -m "release $target_tag"
|
|
|
|
|
git push origin "$branch" "$target_tag"
|
|
|
|
|
|