Skip to content

Commit 0b43e24

Browse files
authored
Merge pull request #52 from tooboredtocode/master
feat: make minor and major bump identifiers configurable
2 parents fd6c717 + edf79f6 commit 0b43e24

File tree

5 files changed

+87
-38
lines changed

5 files changed

+87
-38
lines changed

README.md

+17-3
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,13 @@ $ ./git-version
135135
1.0.0
136136
```
137137
138-
Versions are incremented since the last tag. The patch version is incremented by default, unless there is at least one commit since the last tag, containing `feature:` or `breaking:` in the message.
138+
Versions are incremented since the last tag. The patch version is incremented by default, unless there is at least one commit since the last tag, containing a minor or major identifier (defaults to `feature:` or `breaking:`) in the message.
139139
140-
On branches other than master and `dev` the version is a variation of the latest common tag with master, and has the following format:
140+
On branches other than the master/main and development branch (default to `master` and `dev`) the version is a variation of the latest common tag with the master/main branch, and has the following format:
141141
142142
`{MAJOR}.{MINOR}.{PATCH}-{sanitized-branch-name}.{commits-distance}.{hash}`
143143
144-
On the `dev` branch the format is the following:
144+
On the development branch the format is the following:
145145
146146
`{MAJOR}.{MINOR}.{PATCH}-SNAPSHOT.{hash}`
147147
@@ -170,6 +170,20 @@ _Example3 (with breaking message):_
170170
message: "breaking: removed api parameter"
171171
```
172172
173+
### Configuration
174+
175+
You can configure the action with various inputs, a list of which has been provided below:
176+
177+
| Name | Description | Default Value |
178+
|------------------|-------------------------------------------------------------------------------------------------|---------------|
179+
| tool-version | The version of the tool to run | latest |
180+
| release-branch | The name of the master/main branch | master |
181+
| dev-branch | The name of the development branch | dev |
182+
| minor-identifier | The string used to identify a minor release (wrap with '/' to match using a regular expression) | feature: |
183+
| major-identifier | The string used to identify a major release (wrap with '/' to match using a regular expression) | breaking: |
184+
| prefix | The prefix used for the version name | |
185+
| log-paths | The paths used to calculate changes (comma-separated) | |
186+
173187
## Requirements
174188
175189
To use this tool you will need to install a few dependencies:

action.yml

+12
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ inputs:
1717
description: 'The name of the dev branch'
1818
required: true
1919
default: dev
20+
minor-identifier:
21+
description: 'The string or regex to identify a minor release commit'
22+
required: true
23+
default: 'feature:'
24+
major-identifier:
25+
description: 'The string or regex to identify a major release commit'
26+
required: true
27+
default: 'breaking:'
2028
prefix:
2129
description: 'The prefix to use in the version'
2230
required: false
@@ -45,6 +53,8 @@ runs:
4553
--folder /repo \
4654
--release-branch "${{ inputs.release-branch }}" \
4755
--dev-branch "${{ inputs.dev-branch }}" \
56+
--minor-identifier="${{ inputs.minor-identifier }}" \
57+
--major-identifier="${{ inputs.major-identifier }}" \
4858
--version-prefix "${{ inputs.prefix }}")
4959
5060
echo "::set-output name=previous-version::$PREVIOUS_VERSION"
@@ -59,6 +69,8 @@ runs:
5969
--folder /repo \
6070
--release-branch "${{ inputs.release-branch }}" \
6171
--dev-branch "${{ inputs.dev-branch }}" \
72+
--minor-identifier="${{ inputs.minor-identifier }}" \
73+
--major-identifier="${{ inputs.major-identifier }}" \
6274
--version-prefix "${{ inputs.prefix }}")
6375
6476
echo "::set-output name=version::$VERSION"

spec/git-version-spec.cr

+28-28
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe GitVersion do
1010
tmp = InTmp.new
1111

1212
begin
13-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
13+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
1414

1515
tmp.exec %(git init)
1616
tmp.exec %(git checkout -b #{git.release_branch})
@@ -59,7 +59,7 @@ describe GitVersion do
5959
tmp.exec %(git checkout -b my-fancy.branch)
6060
tmp.exec %(git commit --no-gpg-sign --allow-empty -m "2")
6161

62-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
62+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
6363

6464
hash = git.current_commit_hash
6565

@@ -82,7 +82,7 @@ describe GitVersion do
8282

8383
tmp.exec %(git checkout -b dev)
8484

85-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
85+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
8686

8787
tmp.exec %(git commit --no-gpg-sign --allow-empty -m "breaking: XYZ")
8888

@@ -116,7 +116,7 @@ describe GitVersion do
116116
tmp = InTmp.new
117117

118118
begin
119-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
119+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
120120

121121
tmp.exec %(git init)
122122
tmp.exec %(git checkout -b master)
@@ -180,7 +180,7 @@ describe GitVersion do
180180
tmp = InTmp.new
181181

182182
begin
183-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
183+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
184184

185185
tmp.exec %(git init)
186186
tmp.exec %(git checkout -b master)
@@ -209,7 +209,7 @@ describe GitVersion do
209209
tmp = InTmp.new
210210

211211
begin
212-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
212+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
213213

214214
tmp.exec %(git init)
215215
tmp.exec %(git checkout -b master)
@@ -227,7 +227,7 @@ describe GitVersion do
227227
tmp = InTmp.new
228228

229229
begin
230-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
230+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
231231

232232
tmp.exec %(git init)
233233
tmp.exec %(git checkout -b master)
@@ -251,7 +251,7 @@ describe GitVersion do
251251
tmp = InTmp.new
252252

253253
begin
254-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
254+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
255255

256256
tmp.exec %(git init)
257257
tmp.exec %(git checkout -b master)
@@ -301,7 +301,7 @@ describe GitVersion do
301301
tmp = InTmp.new
302302

303303
begin
304-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
304+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
305305

306306
tmp.exec %(git init)
307307
tmp.exec %(git checkout -b master)
@@ -331,7 +331,7 @@ describe GitVersion do
331331
tmp = InTmp.new
332332

333333
begin
334-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
334+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
335335

336336
tmp.exec %(git init)
337337
tmp.exec %(git checkout -b master)
@@ -363,7 +363,7 @@ describe GitVersion do
363363
tmp = InTmp.new
364364

365365
begin
366-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
366+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
367367

368368
tmp.exec %(git init)
369369
tmp.exec %(git checkout -b master)
@@ -391,7 +391,7 @@ describe GitVersion do
391391
tmp = InTmp.new
392392

393393
begin
394-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
394+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
395395

396396
tmp.exec %(git init)
397397
tmp.exec %(git checkout -b master)
@@ -419,7 +419,7 @@ describe GitVersion do
419419
tmp = InTmp.new
420420

421421
begin
422-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
422+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
423423

424424
tmp.exec %(git init)
425425
tmp.exec %(git checkout -b master)
@@ -438,7 +438,7 @@ describe GitVersion do
438438
tmp = InTmp.new
439439

440440
begin
441-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
441+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
442442

443443
tmp.exec %(git init)
444444
tmp.exec %(git checkout -b master)
@@ -459,7 +459,7 @@ describe GitVersion do
459459
tmp = InTmp.new
460460

461461
begin
462-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
462+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
463463

464464
tmp.exec %(git init)
465465
tmp.exec %(git checkout -b master)
@@ -476,7 +476,7 @@ describe GitVersion do
476476
tmp = InTmp.new
477477

478478
begin
479-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
479+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
480480

481481
tmp.exec %(git init)
482482
tmp.exec %(git checkout -b master)
@@ -496,7 +496,7 @@ describe GitVersion do
496496
tmp = InTmp.new
497497

498498
begin
499-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "v")
499+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "v")
500500

501501
tmp.exec %(git init)
502502
tmp.exec %(git checkout -b master)
@@ -515,7 +515,7 @@ describe GitVersion do
515515
tmp = InTmp.new
516516

517517
begin
518-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "v")
518+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "v")
519519

520520
tmp.exec %(git init)
521521
tmp.exec %(git checkout -b master)
@@ -533,7 +533,7 @@ describe GitVersion do
533533
tmp = InTmp.new
534534

535535
begin
536-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "v")
536+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "v")
537537

538538
tmp.exec %(git init)
539539
tmp.exec %(git checkout -b master)
@@ -551,7 +551,7 @@ describe GitVersion do
551551
tmp = InTmp.new
552552

553553
begin
554-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
554+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
555555

556556
tmp.exec %(git init)
557557
tmp.exec %(git checkout -b master)
@@ -572,7 +572,7 @@ describe GitVersion do
572572
tmp = InTmp.new
573573

574574
begin
575-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "", "dir2/")
575+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "", "dir2/")
576576

577577
tmp.exec %(git init)
578578
tmp.exec %(git checkout -b master)
@@ -601,7 +601,7 @@ describe GitVersion do
601601
tmp = InTmp.new
602602

603603
begin
604-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "", "dir1/ dir3/")
604+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "", "dir1/ dir3/")
605605

606606
tmp.exec %(git init)
607607
tmp.exec %(git checkout -b master)
@@ -640,7 +640,7 @@ describe GitVersion do
640640
tmp = InTmp.new
641641

642642
begin
643-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "", "dir2/ dir3/")
643+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "", "dir2/ dir3/")
644644

645645
tmp.exec %(git init)
646646
tmp.exec %(git checkout -b master)
@@ -678,7 +678,7 @@ describe GitVersion do
678678
tmp = InTmp.new
679679

680680
begin
681-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "", "dir1/")
681+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "", "dir1/")
682682

683683
tmp.exec %(git init)
684684
tmp.exec %(git checkout -b master)
@@ -702,7 +702,7 @@ describe GitVersion do
702702
tmp = InTmp.new
703703

704704
begin
705-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "dir2-", "dir2/ dir3/")
705+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "dir2-", "dir2/ dir3/")
706706

707707
tmp.exec %(git init)
708708
tmp.exec %(git checkout -b master)
@@ -743,7 +743,7 @@ it "get previous version - first commit" do
743743
tmp = InTmp.new
744744

745745
begin
746-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir)
746+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir)
747747

748748
tmp.exec %(git init)
749749
tmp.exec %(git checkout -b master)
@@ -762,7 +762,7 @@ it "get previous version - first commit w/ prefix" do
762762
tmp = InTmp.new
763763

764764
begin
765-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "v")
765+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "v")
766766

767767
tmp.exec %(git init)
768768
tmp.exec %(git checkout -b master)
@@ -780,7 +780,7 @@ it "get previous version - pre-tagged" do
780780
tmp = InTmp.new
781781

782782
begin
783-
git = GitVersion::Git.new("dev", "master", tmp.@tmpdir, "v")
783+
git = GitVersion::Git.new("dev", "master", "feature:", "breaking:", tmp.@tmpdir, "v")
784784

785785
tmp.exec %(git init)
786786
tmp.exec %(git checkout -b master)

src/git-version.cr

+23-6
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,19 @@ module GitVersion
1010

1111
DEV_BRANCH_SUFFIX = "SNAPSHOT"
1212

13-
MAJOR_BUMP_COMMENT = "breaking:"
14-
MINOR_BUMP_COMMENT = "feature:"
15-
1613
class Git
17-
def initialize(@dev_branch : String, @release_branch : String = "master",
14+
def initialize(@dev_branch : String, @release_branch : String, @minor_identifier : String, @major_identifier : String,
1815
@folder = FileUtils.pwd, @prefix : String = "", @log_paths : String = "")
16+
@major_id_is_regex = false
17+
@minor_id_is_regex = false
18+
if match = /\/(.*)\//.match(@major_identifier)
19+
@major_identifier = match[1]
20+
@major_id_is_regex = true
21+
end
22+
if match = /\/(.*)\//.match(@minor_identifier)
23+
@minor_identifier = match[1]
24+
@minor_id_is_regex = true
25+
end
1926
#
2027
end
2128

@@ -139,7 +146,12 @@ module GitVersion
139146
major = false
140147
get_commits_since(previous_tag).each do |c|
141148
commit = c.downcase
142-
if commit.includes?(MAJOR_BUMP_COMMENT)
149+
match = if @major_id_is_regex
150+
/#{@major_identifier}/.match(commit)
151+
else
152+
commit.includes?(@major_identifier)
153+
end
154+
if match
143155
previous_version =
144156
SemanticVersion.new(
145157
previous_version.major + 1,
@@ -156,7 +168,12 @@ module GitVersion
156168
if !major
157169
get_commits_since(previous_tag).each do |c|
158170
commit = c.downcase
159-
if commit.includes?(MINOR_BUMP_COMMENT)
171+
match = if @minor_id_is_regex
172+
/#{@minor_identifier}/.match(commit)
173+
else
174+
commit.includes?(@minor_identifier)
175+
end
176+
if match
160177
previous_version =
161178
SemanticVersion.new(
162179
previous_version.major,

0 commit comments

Comments
 (0)