1.0.0-1 release
This commit is contained in:
+16
-138
@@ -84,42 +84,16 @@ bump_version() {
|
|||||||
printf '%s.%s.%s' "$major" "$minor" "$patch"
|
printf '%s.%s.%s' "$major" "$minor" "$patch"
|
||||||
}
|
}
|
||||||
|
|
||||||
increment_rc_version() {
|
increment_build_version() {
|
||||||
local version="$1"
|
local version="$1"
|
||||||
parse_version "$version"
|
parse_version "$version"
|
||||||
|
|
||||||
local rc_number=1
|
local build_number=1
|
||||||
|
if [[ -n "$PARSED_BUILD" ]]; then
|
||||||
if [[ "$PARSED_SUFFIX" =~ ^rc([.]?([0-9]+))?$ ]]; then
|
build_number=$((PARSED_BUILD + 1))
|
||||||
if [[ -n "${BASH_REMATCH[2]:-}" ]]; then
|
|
||||||
rc_number=$((BASH_REMATCH[2] + 1))
|
|
||||||
fi
|
|
||||||
elif [[ -n "$PARSED_SUFFIX" ]]; then
|
|
||||||
echo "RC-Bump nicht moeglich fuer Suffix '$PARSED_SUFFIX'."
|
|
||||||
echo "Unterstuetzt: keine Suffixe oder -rc<nummer>."
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf '%s.%s.%s-rc%s' "$PARSED_MAJOR" "$PARSED_MINOR" "$PARSED_PATCH" "$rc_number"
|
printf '%s.%s.%s-%s' "$PARSED_MAJOR" "$PARSED_MINOR" "$PARSED_PATCH" "$build_number"
|
||||||
}
|
|
||||||
|
|
||||||
can_increment_rc_version() {
|
|
||||||
local version="$1"
|
|
||||||
parse_version "$version"
|
|
||||||
[[ -z "$PARSED_SUFFIX" || "$PARSED_SUFFIX" =~ ^rc([.]?[0-9]+)?$ ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_rc_suffix() {
|
|
||||||
local version="$1"
|
|
||||||
parse_version "$version"
|
|
||||||
|
|
||||||
if [[ ! "$PARSED_SUFFIX" =~ ^rc([.]?[0-9]+)?$ ]]; then
|
|
||||||
echo "RC-Suffix kann nur von Versionen mit -rc entfernt werden."
|
|
||||||
echo "Aktuelle Version: $version"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s.%s.%s' "$PARSED_MAJOR" "$PARSED_MINOR" "$PARSED_PATCH"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
select_release_variant() {
|
select_release_variant() {
|
||||||
@@ -206,9 +180,6 @@ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
current_branch="$(git branch --show-current)"
|
current_branch="$(git branch --show-current)"
|
||||||
github_release_mode="snapshot"
|
|
||||||
github_source_branch=""
|
|
||||||
github_source_ref=""
|
|
||||||
|
|
||||||
mapfile -t remotes < <(git remote)
|
mapfile -t remotes < <(git remote)
|
||||||
|
|
||||||
@@ -240,61 +211,8 @@ if [[ "$selected_remote_url" == *github.com* ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Lokaler Branch: $current_branch"
|
echo "Lokaler Branch: $current_branch"
|
||||||
|
|
||||||
if [[ "$selected_is_github" == true ]]; then
|
|
||||||
echo
|
|
||||||
echo "GitHub-Modus waehlen:"
|
|
||||||
echo " 1) Snapshot-Release auf Ziel-Branch (bisheriger Ablauf)"
|
|
||||||
echo " 2) Branch-Merge/Veroeffentlichung dev -> main (force, main uebernimmt dev komplett)"
|
|
||||||
|
|
||||||
default_github_mode="1"
|
|
||||||
if [[ "$current_branch" == "dev" ]]; then
|
|
||||||
default_github_mode="2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -r -p "Auswahl [$default_github_mode]: " github_mode_choice
|
|
||||||
github_mode_choice="${github_mode_choice:-$default_github_mode}"
|
|
||||||
|
|
||||||
case "$github_mode_choice" in
|
|
||||||
1)
|
|
||||||
github_release_mode="snapshot"
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
github_release_mode="branch-force-merge"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Ungueltige GitHub-Modus-Auswahl."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$selected_is_github" == true && "$github_release_mode" == "branch-force-merge" ]]; then
|
|
||||||
echo
|
|
||||||
read -r -p "Quell-Branch fuer GitHub-Veroeffentlichung [dev]: " github_source_branch
|
|
||||||
github_source_branch="${github_source_branch:-dev}"
|
|
||||||
|
|
||||||
if ! git check-ref-format --branch "$github_source_branch" >/dev/null 2>&1; then
|
|
||||||
echo "Ungueltiger Quell-Branch: $github_source_branch"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if git show-ref --verify --quiet "refs/heads/$github_source_branch"; then
|
|
||||||
github_source_ref="refs/heads/$github_source_branch"
|
|
||||||
elif git ls-remote --exit-code --heads "$selected_remote" "$github_source_branch" >/dev/null 2>&1; then
|
|
||||||
github_source_ref="refs/remotes/$selected_remote/$github_source_branch"
|
|
||||||
git fetch "$selected_remote" "$github_source_branch"
|
|
||||||
else
|
|
||||||
echo "Quell-Branch '$github_source_branch' wurde weder lokal noch auf $selected_remote gefunden."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -r -p "Ziel-Branch auf $selected_remote [main]: " target_branch
|
|
||||||
target_branch="${target_branch:-main}"
|
|
||||||
else
|
|
||||||
read -r -p "Ziel-Branch auf $selected_remote [$current_branch]: " target_branch
|
read -r -p "Ziel-Branch auf $selected_remote [$current_branch]: " target_branch
|
||||||
target_branch="${target_branch:-$current_branch}"
|
target_branch="${target_branch:-$current_branch}"
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git check-ref-format --branch "$target_branch" >/dev/null 2>&1; then
|
if ! git check-ref-format --branch "$target_branch" >/dev/null 2>&1; then
|
||||||
echo "Ungueltiger Branch-Name: $target_branch"
|
echo "Ungueltiger Branch-Name: $target_branch"
|
||||||
@@ -319,14 +237,7 @@ fi
|
|||||||
next_patch="$(bump_version "$root_version" patch)"
|
next_patch="$(bump_version "$root_version" patch)"
|
||||||
next_minor="$(bump_version "$root_version" minor)"
|
next_minor="$(bump_version "$root_version" minor)"
|
||||||
next_major="$(bump_version "$root_version" major)"
|
next_major="$(bump_version "$root_version" major)"
|
||||||
next_rc=""
|
next_build="$(increment_build_version "$root_version")"
|
||||||
if can_increment_rc_version "$root_version"; then
|
|
||||||
next_rc="$(increment_rc_version "$root_version")"
|
|
||||||
fi
|
|
||||||
current_final=""
|
|
||||||
if parse_version "$root_version" >/dev/null 2>&1 && [[ "$PARSED_SUFFIX" =~ ^rc([.]?[0-9]+)?$ ]]; then
|
|
||||||
current_final="$(remove_rc_suffix "$root_version")"
|
|
||||||
fi
|
|
||||||
apply_version_change=false
|
apply_version_change=false
|
||||||
|
|
||||||
echo "Aktuelle Version: $root_version"
|
echo "Aktuelle Version: $root_version"
|
||||||
@@ -374,43 +285,21 @@ else
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
[Nn])
|
[Nn])
|
||||||
echo "Option ohne Basisversionssprung waehlen:"
|
read -r -p "Buildnummer hochsetzen? [y/N]: " should_bump_build
|
||||||
echo " 1) Ohne Versionsaenderung -> $root_version"
|
should_bump_build="${should_bump_build:-n}"
|
||||||
if [[ -n "$next_rc" ]]; then
|
|
||||||
echo " 2) Nur RC-Nummer hochsetzen -> $next_rc"
|
|
||||||
fi
|
|
||||||
if [[ -n "$current_final" ]]; then
|
|
||||||
echo " 3) RC entfernen -> $current_final"
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -r -p "Auswahl [1]: " no_bump_choice
|
case "$should_bump_build" in
|
||||||
no_bump_choice="${no_bump_choice:-1}"
|
[YyJj])
|
||||||
|
target_version="$next_build"
|
||||||
case "$no_bump_choice" in
|
release_mode="Build"
|
||||||
1)
|
apply_version_change=true
|
||||||
|
;;
|
||||||
|
[Nn])
|
||||||
target_version="$root_version"
|
target_version="$root_version"
|
||||||
release_mode="Ohne Versionsaenderung"
|
release_mode="Ohne Versionsaenderung"
|
||||||
;;
|
;;
|
||||||
2)
|
|
||||||
if [[ -z "$next_rc" ]]; then
|
|
||||||
echo "RC-Bump ist fuer die aktuelle Version nicht verfuegbar."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
target_version="$next_rc"
|
|
||||||
release_mode="RC"
|
|
||||||
apply_version_change=true
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
if [[ -z "$current_final" ]]; then
|
|
||||||
echo "RC entfernen ist nur moeglich, wenn die aktuelle Version ein -rc Suffix hat."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
target_version="$current_final"
|
|
||||||
release_mode="RC entfernt"
|
|
||||||
apply_version_change=true
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
echo "Ungueltige Auswahl."
|
echo "Bitte nur Y oder N eingeben."
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -428,12 +317,6 @@ echo " Branch: $current_branch -> $selected_remote/$target_branch"
|
|||||||
echo " Ziel-Ref: $selected_push_ref"
|
echo " Ziel-Ref: $selected_push_ref"
|
||||||
echo " Modus: $release_mode"
|
echo " Modus: $release_mode"
|
||||||
echo " Version: $root_version -> $target_version"
|
echo " Version: $root_version -> $target_version"
|
||||||
if [[ "$selected_is_github" == true ]]; then
|
|
||||||
echo " GitHub: $github_release_mode"
|
|
||||||
if [[ "$github_release_mode" == "branch-force-merge" ]]; then
|
|
||||||
echo " Quelle: $github_source_branch -> $target_branch (force)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
confirm_or_exit "Fortfahren? [Y/n]: "
|
confirm_or_exit "Fortfahren? [Y/n]: "
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@@ -471,10 +354,6 @@ echo "Push vorbereiten..."
|
|||||||
|
|
||||||
if [[ "$selected_is_github" == true ]]; then
|
if [[ "$selected_is_github" == true ]]; then
|
||||||
|
|
||||||
if [[ "$github_release_mode" == "branch-force-merge" ]]; then
|
|
||||||
echo "GitHub erkannt: $github_source_branch wird mit Force nach $target_branch uebernommen."
|
|
||||||
git push "$selected_remote" "$github_source_ref:$selected_push_ref" --force
|
|
||||||
else
|
|
||||||
echo "GitHub erkannt: Squash-Commit wird erzeugt."
|
echo "GitHub erkannt: Squash-Commit wird erzeugt."
|
||||||
|
|
||||||
temp_branch="github-publish-$target_branch"
|
temp_branch="github-publish-$target_branch"
|
||||||
@@ -491,7 +370,6 @@ if [[ "$selected_is_github" == true ]]; then
|
|||||||
|
|
||||||
git checkout "$current_branch"
|
git checkout "$current_branch"
|
||||||
git branch -D "$temp_branch"
|
git branch -D "$temp_branch"
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user