Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 5 additions & 11 deletions shared.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,13 @@ pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0
remove_prefix() {
local tag="$1"
if [[ -n "${tag_prefix:-}" ]]; then
# Escape special characters in tag_prefix
local escaped_prefix
escaped_prefix=$(printf '%s\n' "$tag_prefix" | sed 's/[][\/.^$*]/\\&/g') # special chars matched by sed: ] [ / . ^ $ *

# shellcheck disable=SC2143
if [[ -z "$(echo "${tag}" | grep "^${tag_prefix}")" ]] ; then
echo ""
return
if [[ "${tag}" == "${tag_prefix}"* ]]; then
printf '%s\n' "${tag:${#tag_prefix}}"
else
printf '\n'
fi
# shellcheck disable=SC2001
echo "${tag}" | sed "s|^${escaped_prefix}||" # Use | as the delimiter to avoid conflicts with /
else
echo "${tag}"
printf '%s\n' "${tag}"
fi
}

Expand Down
29 changes: 29 additions & 0 deletions tests/test_version-lookup.bats
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,35 @@ function init_repo {
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
}

@test "treats tag_prefix as a literal string" {
init_repo

export tag_prefix="v."

git tag v.1.2.3
git tag v1.9.9

run version-lookup.sh

print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
}

@test "supports a tag_prefix containing a sed delimiter" {
init_repo

export tag_prefix="foo|bar@"

git tag "foo|bar@1.2.3"

run version-lookup.sh

print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
}

@test "finds the current normal version even if there's a newer pre-release version" {
init_repo

Expand Down
Loading