Skip to content

Commit fb2c56e

Browse files
committed
fix: --force-patch-increment
Signed-off-by: Carlos A Becker <[email protected]>
1 parent e67acc8 commit fb2c56e

File tree

2 files changed

+54
-38
lines changed

2 files changed

+54
-38
lines changed

main.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func main() {
4141
current, err := getCurrentVersion(tag)
4242
app.FatalIfError(err, "could not get current version from tag: '%s'", tag)
4343

44-
result, err := nextVersion(cmd, current, tag, *preRelease, *build)
44+
result, err := nextVersion(cmd, current, tag, *preRelease, *build, *forcePatchIncrement)
4545
app.FatalIfError(err, "could not get next tag: '%s'", tag)
4646

4747
if *stripPrefix {
@@ -50,7 +50,23 @@ func main() {
5050
fmt.Println(*prefix + result.String())
5151
}
5252

53-
func nextVersion(cmd string, current *semver.Version, tag, preRelease, build string) (semver.Version, error) {
53+
func nextVersion(cmd string, current *semver.Version, tag, preRelease, build string, force bool) (semver.Version, error) {
54+
if cmd == currentCmd.FullCommand() {
55+
return *current, nil
56+
}
57+
58+
if force {
59+
c, err := current.SetMetadata("")
60+
if err != nil {
61+
return c, err
62+
}
63+
c, err = c.SetPrerelease("")
64+
if err != nil {
65+
return c, err
66+
}
67+
current = &c
68+
}
69+
5470
var result semver.Version
5571
switch cmd {
5672
case nextCmd.FullCommand():
@@ -61,8 +77,6 @@ func nextVersion(cmd string, current *semver.Version, tag, preRelease, build str
6177
result = current.IncMinor()
6278
case patchCmd.FullCommand():
6379
result = current.IncPatch()
64-
case currentCmd.FullCommand():
65-
result = *current
6680
}
6781

6882
var err error

main_test.go

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,115 +24,117 @@ func TestCmd(t *testing.T) {
2424
ver := func() *semver.Version { return semver.MustParse("1.2.3-pre+123") }
2525
t.Run(currentCmd.FullCommand(), func(t *testing.T) {
2626
cmd := currentCmd.FullCommand()
27-
t.Run("no meta", func(t *testing.T) {
28-
is := is.New(t)
29-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "")
30-
is.NoErr(err)
31-
is.Equal("1.2.3", v.String())
32-
})
33-
t.Run("build", func(t *testing.T) {
27+
t.Run("version has meta", func(t *testing.T) {
3428
is := is.New(t)
35-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "124")
29+
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "", false)
3630
is.NoErr(err)
37-
is.Equal("1.2.3+124", v.String())
31+
is.Equal("1.2.3-pre+123", v.String())
3832
})
39-
t.Run("prerel", func(t *testing.T) {
40-
is := is.New(t)
41-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.1", "")
42-
is.NoErr(err)
43-
is.Equal("1.2.3-alpha.1", v.String())
44-
})
45-
t.Run("all meta", func(t *testing.T) {
33+
t.Run("version is clean", func(t *testing.T) {
4634
is := is.New(t)
47-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.2", "125")
35+
v, err := nextVersion(cmd, semver.MustParse("v1.2.3"), "v1.2.3", "doesnt matter", "nope", true)
4836
is.NoErr(err)
49-
is.Equal("1.2.3-alpha.2+125", v.String())
37+
is.Equal("1.2.3", v.String())
5038
})
5139
})
5240

5341
t.Run(minorCmd.FullCommand(), func(t *testing.T) {
5442
cmd := minorCmd.FullCommand()
5543
t.Run("no meta", func(t *testing.T) {
5644
is := is.New(t)
57-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "")
45+
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "", false)
5846
is.NoErr(err)
5947
is.Equal("1.3.0", v.String())
6048
})
6149
t.Run("build", func(t *testing.T) {
6250
is := is.New(t)
63-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "124")
51+
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "124", false)
6452
is.NoErr(err)
6553
is.Equal("1.3.0+124", v.String())
6654
})
6755
t.Run("prerel", func(t *testing.T) {
6856
is := is.New(t)
69-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.1", "")
57+
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.1", "", false)
7058
is.NoErr(err)
7159
is.Equal("1.3.0-alpha.1", v.String())
7260
})
7361
t.Run("all meta", func(t *testing.T) {
7462
is := is.New(t)
75-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.2", "125")
63+
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.2", "125", false)
7664
is.NoErr(err)
7765
is.Equal("1.3.0-alpha.2+125", v.String())
7866
})
7967
})
68+
8069
t.Run(patchCmd.FullCommand(), func(t *testing.T) {
8170
cmd := patchCmd.FullCommand()
8271
t.Run("no meta", func(t *testing.T) {
8372
is := is.New(t)
84-
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "", "")
73+
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "", "", false)
8574
is.NoErr(err)
8675
is.Equal("1.2.4", v.String())
8776
})
88-
t.Run("original had no meta", func(t *testing.T) {
77+
t.Run("previous had meta", func(t *testing.T) {
8978
is := is.New(t)
90-
v, err := nextVersion(cmd, semver.MustParse("1.2.3-alpha.1+1"), "v1.2.3", "", "")
79+
v, err := nextVersion(cmd, semver.MustParse("1.2.3-alpha.1+1"), "v1.2.3", "", "", false)
9180
is.NoErr(err)
9281
is.Equal("1.2.3", v.String())
9382
})
83+
t.Run("previous had meta, force", func(t *testing.T) {
84+
is := is.New(t)
85+
v, err := nextVersion(cmd, semver.MustParse("1.2.3-alpha.1+1"), "v1.2.3", "", "", true)
86+
is.NoErr(err)
87+
is.Equal("1.2.4", v.String())
88+
})
89+
t.Run("previous had meta, force, add meta", func(t *testing.T) {
90+
is := is.New(t)
91+
v, err := nextVersion(cmd, semver.MustParse("1.2.3-alpha.1+1"), "v1.2.3-alpha.1+1", "alpha.2", "10", true)
92+
is.NoErr(err)
93+
is.Equal("1.2.4-alpha.2+10", v.String())
94+
})
9495
t.Run("build", func(t *testing.T) {
9596
is := is.New(t)
96-
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "", "124")
97+
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "", "124", false)
9798
is.NoErr(err)
9899
is.Equal("1.2.4+124", v.String())
99100
})
100101
t.Run("prerel", func(t *testing.T) {
101102
is := is.New(t)
102-
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "alpha.1", "")
103+
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "alpha.1", "", false)
103104
is.NoErr(err)
104105
is.Equal("1.2.4-alpha.1", v.String())
105106
})
106107
t.Run("all meta", func(t *testing.T) {
107108
is := is.New(t)
108-
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "alpha.2", "125")
109+
v, err := nextVersion(cmd, semver.MustParse("1.2.3"), "v1.2.3", "alpha.2", "125", false)
109110
is.NoErr(err)
110111
is.Equal("1.2.4-alpha.2+125", v.String())
111112
})
112113
})
114+
113115
t.Run(majorCmd.FullCommand(), func(t *testing.T) {
114116
cmd := majorCmd.FullCommand()
115117
t.Run("no meta", func(t *testing.T) {
116118
is := is.New(t)
117-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "")
119+
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "", false)
118120
is.NoErr(err)
119121
is.Equal("2.0.0", v.String())
120122
})
121123
t.Run("build", func(t *testing.T) {
122124
is := is.New(t)
123-
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "124")
125+
v, err := nextVersion(cmd, ver(), "v1.2.3", "", "124", false)
124126
is.NoErr(err)
125127
is.Equal("2.0.0+124", v.String())
126128
})
127129
t.Run("prerel", func(t *testing.T) {
128130
is := is.New(t)
129-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.1", "")
131+
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.1", "", false)
130132
is.NoErr(err)
131133
is.Equal("2.0.0-alpha.1", v.String())
132134
})
133135
t.Run("all meta", func(t *testing.T) {
134136
is := is.New(t)
135-
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.2", "125")
137+
v, err := nextVersion(cmd, ver(), "v1.2.3", "alpha.2", "125", false)
136138
is.NoErr(err)
137139
is.Equal("2.0.0-alpha.2+125", v.String())
138140
})
@@ -141,12 +143,12 @@ func TestCmd(t *testing.T) {
141143
t.Run("errors", func(t *testing.T) {
142144
t.Run("invalid build", func(t *testing.T) {
143145
is := is.New(t)
144-
_, err := nextVersion(minorCmd.FullCommand(), semver.MustParse("1.2.3"), "v1.2.3", "", "+125")
146+
_, err := nextVersion(minorCmd.FullCommand(), semver.MustParse("1.2.3"), "v1.2.3", "", "+125", false)
145147
is.True(err != nil)
146148
})
147149
t.Run("invalid prerelease", func(t *testing.T) {
148150
is := is.New(t)
149-
_, err := nextVersion(minorCmd.FullCommand(), semver.MustParse("1.2.3"), "v1.2.3", "+aaa", "")
151+
_, err := nextVersion(minorCmd.FullCommand(), semver.MustParse("1.2.3"), "v1.2.3", "+aaa", "", false)
150152
is.True(err != nil)
151153
})
152154
})

0 commit comments

Comments
 (0)