Skip to content

Commit

Permalink
feature: Allow baseVersion to patch trunkver prerelease onto
Browse files Browse the repository at this point in the history
  • Loading branch information
rradczewski committed May 25, 2024
1 parent 7934c8a commit 15288d9
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 7 deletions.
11 changes: 10 additions & 1 deletion action.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
name: trunkver
description: Create a trunkver for this github action run
author: crftd.tech
inputs:
baseVersion:
description: The base version to use
required: false
default: ""
prerelease:
description: The prerelease version to use
required: false
default: "false"
outputs:
trunkver:
description: The trunkver
Expand All @@ -13,4 +22,4 @@ runs:
- -o
- pipefail
- -c
- echo trunkver=$(/trunkver) | tee $GITHUB_OUTPUT
- echo trunkver=$(/trunkver "--prerelease=${{ inputs.prerelease }}" "${{ inputs.baseVersion }}") | tee $GITHUB_OUTPUT
23 changes: 18 additions & 5 deletions cmd/trunkver.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"os"
"time"

"github.com/coreos/go-semver/semver"
"github.com/crftd-tech/trunkver/internal/ci"
)

Expand All @@ -23,7 +24,7 @@ func formatTrunkver(ts time.Time, sourceRef, buildRef string, spec SPEC) string
if spec == FULL_SEMVER {
return ts.UTC().Format("20060102150405") + ".0.0-" + sourceRef + "-" + buildRef
} else if spec == PRERELEASE_ONLY {
return "-" + ts.UTC().Format("20060102150405") + "-" + sourceRef + "-" + buildRef
return ts.UTC().Format("20060102150405") + "-" + sourceRef + "-" + buildRef
}
panic("Invalid spec: " + string(spec))
}
Expand All @@ -41,6 +42,7 @@ func run(out io.Writer, err io.Writer, args []string) {
prereleaseOnly := flagSet.Bool("prerelease", false, "Build the trunkver as the prerelease part of a version (e.g. for nightly builds)")

flagSet.Parse(args[1:])
baseVersion := flagSet.Arg(0)

if *version {
fmt.Fprintln(err, Version)
Expand Down Expand Up @@ -79,10 +81,21 @@ func run(out io.Writer, err io.Writer, args []string) {
}
}

var spec SPEC = FULL_SEMVER
if *prereleaseOnly {
spec = PRERELEASE_ONLY
if !*prereleaseOnly {
fmt.Fprintln(out, formatTrunkver(parsedTime, *sRef, *bRef, FULL_SEMVER))
return
}

fmt.Fprintln(out, formatTrunkver(parsedTime, *sRef, *bRef, spec))
var trunkVer string = formatTrunkver(parsedTime, *sRef, *bRef, PRERELEASE_ONLY)
if baseVersion == "" {
fmt.Fprintln(out, trunkVer)
return
}

if baseVersion[0] == 'v' {
baseVersion = baseVersion[1:]
}
var semverBaseVersion = semver.New(baseVersion)
semverBaseVersion.PreRelease = semver.PreRelease(trunkVer)
fmt.Fprintln(out, semverBaseVersion.String())
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/crftd-tech/trunkver
go 1.22

require github.com/stretchr/testify v1.9.0
require github.com/coreos/go-semver v0.3.1

require (
github.com/davecgh/go-spew v1.1.1 // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
37 changes: 36 additions & 1 deletion smoke.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,42 @@ tests:
- "R4242"
- --prerelease
stdout: |
-20240522142548-g1234567-R4242
20240522142548-g1234567-R4242
- name: prerelease/panic-if-invalid-semver
args:
- --source-ref
- "g1234567"
- --build-ref
- "R4242"
- --prerelease
- "0"
exit-status: 2
stderr:
contains: panic

- name: prerelease/with-given-semver
args:
- --source-ref
- "g1234567"
- --build-ref
- "R4242"
- --prerelease
- "0.1.0"
stdout: |
0.1.0-20240522142548-g1234567-R4242
- name: prerelease/with-given-semver-with-v
args:
- --source-ref
- "g1234567"
- --build-ref
- "R4242"
- --prerelease
- "v0.1.0"
stdout: |
0.1.0-20240522142548-g1234567-R4242
- name: panic/if-no-build-ref
args:
Expand Down

0 comments on commit 15288d9

Please sign in to comment.