build(release): make release versions compliant with semver-specifications

This commit is contained in:
Sarah Vaupel 2025-02-20 13:34:13 +01:00
parent a8420aaf56
commit fbd3c6d7c5

View File

@ -7,7 +7,10 @@ use Data::Dumper;
# Version changes: # Version changes:
# [x].[y].[z] -- Main version number # [x].[y].[z] -- Main version number
# XXX old
# [x].[y].[z]-test-[branchstring]-[num] -- test/branch/devel version number # [x].[y].[z]-test-[branchstring]-[num] -- test/branch/devel version number
# XXX new
# [x].[y].[z]-[num]+[branchname]
# on main/master: Biggest version so far, increment by occuring changes # on main/master: Biggest version so far, increment by occuring changes
# on other branches: find version; be it branch string, old format or main version number; # on other branches: find version; be it branch string, old format or main version number;
# increments from there. Increment version number, but on global conflict use new version number # increments from there. Increment version number, but on global conflict use new version number
@ -133,8 +136,10 @@ if($par{'h'}) {
exit 0 exit 0
} }
my $branchNameEscaped = `$par{vcsbranch}`;
chomp $branchNameEscaped;
if($par{autokind}) { if($par{autokind}) {
my $branch = `$par{vcsbranch}`; my $branch = $branchNameEscaped;
my @rules = split /,/, $par{autokind}; my @rules = split /,/, $par{autokind};
RULES: { RULES: {
for my $r(@rules) { for my $r(@rules) {
@ -151,7 +156,7 @@ if($par{autokind}) {
warn "$0: No autokind rule matches; leaving the kind unchanged.\n" warn "$0: No autokind rule matches; leaving the kind unchanged.\n"
} }
} }
$branchNameEscaped =~ s/[^0-9a-zA-Z]+/-/g;
if($par{'v'}) { if($par{'v'}) {
warn "VERBOSE: Parameters\n"; warn "VERBOSE: Parameters\n";
@ -232,6 +237,7 @@ sub parseVersion {
$v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)$# || $v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)$# ||
$v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)$# || $v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)$# ||
$v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)-test-(?<sp>(?<brn>[a-z]+)-?(?<brv>[0-9\.]+))$# || $v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)-test-(?<sp>(?<brn>[a-z]+)-?(?<brv>[0-9\.]+))$# ||
$v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)-(?<sp>(?<brv>[0-9\.]+)\+(?<brn>[0-9A-Za-z\-]+))$# || # [x].[y].[z]-[num]+[branchname]
$v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)-(?<sp>.*)$# $v=~m#^(?<pre>[a-z]*)(?<ma>[0-9]+)\.(?<mi>[0-9]+)\.(?<p>[0-9]+)-(?<sp>.*)$#
) { ) {
%cap = %+ %cap = %+
@ -339,13 +345,21 @@ sub vsJustVersion {
sub vsTestVersion { sub vsTestVersion {
my $v = shift; my $v = shift;
# [x].[y].[z]-[num]+[branchname]
my $ret = my $ret =
'v' .
($v->{major} // 0) . "." . ($v->{major} // 0) . "." .
($v->{minor} // 0) . "." . ($v->{minor} // 0) . "." .
($v->{patch} // 0) . "-test-" . ($v->{patch} // 0) . "-" .
($v->{branchname} // 'a') . ($v->{branchversion} // '0.0.0') . "+" .
($v->{branchversion} // '0.0.0'); $branchNameEscaped;
# old version format
#my $ret =
#'v' .
#($v->{major} // 0) . "." .
#($v->{minor} // 0) . "." .
#($v->{patch} // 0) . "-test-" .
#($v->{branchname} // 'a') .
#($v->{branchversion} // '0.0.0');
return $ret return $ret
} }
@ -385,8 +399,9 @@ VERSION: for my $v(@versions) {
# $tag=$1; # $tag=$1;
# last VERSION # last VERSION
#} #}
if($v->{meta}=~m#tag\s*:\s*((?:[vtd]|db|)[0-9\.]+(?:-.*)?)\)#) { if($v->{meta}=~m#tag\s*:\s*((?:[vtd]|db|)[0-9\.]+(?:[a-zA-Z\-\+0-9\.]*)?)[\),]#) {
$v->{version} = $1; $v->{version} = $1;
warn "$0: Found version number in log: '$v->{version}'\n" if $par{v};
push @versionPast, $v->{version} push @versionPast, $v->{version}
} }
next if $v->{subject}=~m#^\s*(?:Merge (?:branch|remote)|Revert )#; next if $v->{subject}=~m#^\s*(?:Merge (?:branch|remote)|Revert )#;
@ -444,8 +459,11 @@ for my $r(reverse @change) {
my @allVersions = split /\n/, `$par{vcstags}`; my @allVersions = split /\n/, `$par{vcstags}`;
my @sortAll = sort {vsCompare($b, $a)} @allVersions; #my @sortAll = sort {vsCompare($b, $a)} @allVersions;
my @sortSee = sort {vsCompare($b, $a)} @versionPast; #my @sortSee = sort {vsCompare($b, $a)} @versionPast;
# we want the latest version and do not sort
my @sortAll = @allVersions;
my @sortSee = @versionPast;
#print "all: $sortAll[0] -- see: $sortSee[0]\n"; #print "all: $sortAll[0] -- see: $sortSee[0]\n";
# #
#print vsString($tag), "\n"; #print vsString($tag), "\n";