mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-01-13 21:21:03 +00:00
feat(github): mark pre-releases correctly
In theory every forge can support this, but right now only GitHub allows one to define a release as "pre-release". Closes #45
This commit is contained in:
parent
ef1d92cff0
commit
c827d3246d
4 changed files with 50 additions and 2 deletions
|
|
@ -110,3 +110,16 @@ func parseSemverWithDefault(tag *git.Tag) (semver.Version, error) {
|
|||
|
||||
return parsedVersion, nil
|
||||
}
|
||||
|
||||
func (s semVer) IsPrerelease(version string) bool {
|
||||
semVersion, err := parseSemverWithDefault(&git.Tag{Hash: "", Name: version})
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if len(semVersion.Pre) > 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -388,3 +388,37 @@ func TestVersionBumpFromCommits(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSemVer_IsPrerelease(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
version string
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
name: "empty string",
|
||||
version: "",
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "stable version",
|
||||
version: "v1.0.0",
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "pre-release version",
|
||||
version: "v1.0.0-rc.1+foo",
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "invalid version",
|
||||
version: "ajfkdafjdsfj",
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
assert.Equalf(t, tt.want, SemVer.IsPrerelease(tt.version), "IsSemverPrerelease(%v)", tt.version)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import (
|
|||
|
||||
type Strategy interface {
|
||||
NextVersion(git.Releases, VersionBump, NextVersionType) (string, error)
|
||||
IsPrerelease(version string) bool
|
||||
}
|
||||
|
||||
type VersionBump conventionalcommits.VersionBump
|
||||
|
|
|
|||
|
|
@ -122,10 +122,10 @@ func (rp *ReleaserPleaser) createPendingRelease(ctx context.Context, pr *release
|
|||
return err
|
||||
}
|
||||
|
||||
// TODO: pre-release & latest
|
||||
// TODO: Check if version should be marked latest
|
||||
|
||||
logger.DebugContext(ctx, "Creating release on forge")
|
||||
err = rp.forge.CreateRelease(ctx, *pr.ReleaseCommit, version, changelogText, false, true)
|
||||
err = rp.forge.CreateRelease(ctx, *pr.ReleaseCommit, version, changelogText, rp.versioning.IsPrerelease(version), true)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create release on forge: %w", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue