gfsm 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.gitignore +113 -0
- data/.gitlab-ci.yml +27 -23
- data/.tool-versions +1 -1
- data/.version +1 -0
- data/.vscode/launch.json +13 -14
- data/Dockerfile +1 -1
- data/Gemfile +8 -3
- data/Gemfile.lock +115 -5
- data/README.md +1 -1
- data/gfsm.gemspec +4 -4
- data/lib/commands/changelog.rb +50 -62
- data/lib/commands/help.rb +8 -10
- data/lib/commands/version.rb +23 -52
- data/lib/data/version.rb +11 -7
- data/lib/tools/current_version_loader.rb +2 -4
- data/lib/tools/git_utilities.rb +6 -13
- data/lib/tools/version_bumper.rb +98 -12
- metadata +22 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 70aaff4098b16dd514bf52ca1ae4991702935d45dbc32d8049d3eb73f6268aab
|
|
4
|
+
data.tar.gz: e72643fcbcac5675f2ad65b0a2af8b9034c289fa923c1da1ce24fcb09629a2d5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1aed0209eb39ccda368a53e7660d5a722e40753fddadfd046e10ecbdf5bd5695de4e54af07fc77c24945090ed978a6c400870b291579c59152854e6cdc6c4d1a
|
|
7
|
+
data.tar.gz: f2953fecd33c22b9cfafaff19ec94cd56b9c8d77fe7f26058979410dd3e30c8ce396330f8d6657d564682dcfe1448a04b0a3627e23b9950db5ab542575304a5c
|
data/.gitattributes
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
data/.gitignore
CHANGED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Created by https://www.toptal.com/developers/gitignore/api/macos,visualstudiocode,ruby
|
|
2
|
+
# Edit at https://www.toptal.com/developers/gitignore?templates=macos,visualstudiocode,ruby
|
|
3
|
+
|
|
4
|
+
### macOS ###
|
|
5
|
+
# General
|
|
6
|
+
.DS_Store
|
|
7
|
+
.AppleDouble
|
|
8
|
+
.LSOverride
|
|
9
|
+
|
|
10
|
+
# Icon must end with two \r
|
|
11
|
+
Icon
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Thumbnails
|
|
15
|
+
._*
|
|
16
|
+
|
|
17
|
+
# Files that might appear in the root of a volume
|
|
18
|
+
.DocumentRevisions-V100
|
|
19
|
+
.fseventsd
|
|
20
|
+
.Spotlight-V100
|
|
21
|
+
.TemporaryItems
|
|
22
|
+
.Trashes
|
|
23
|
+
.VolumeIcon.icns
|
|
24
|
+
.com.apple.timemachine.donotpresent
|
|
25
|
+
|
|
26
|
+
# Directories potentially created on remote AFP share
|
|
27
|
+
.AppleDB
|
|
28
|
+
.AppleDesktop
|
|
29
|
+
Network Trash Folder
|
|
30
|
+
Temporary Items
|
|
31
|
+
.apdisk
|
|
32
|
+
|
|
33
|
+
### macOS Patch ###
|
|
34
|
+
# iCloud generated files
|
|
35
|
+
*.icloud
|
|
36
|
+
|
|
37
|
+
### Ruby ###
|
|
38
|
+
*.gem
|
|
39
|
+
*.rbc
|
|
40
|
+
/.config
|
|
41
|
+
/coverage/
|
|
42
|
+
/InstalledFiles
|
|
43
|
+
/pkg/
|
|
44
|
+
/spec/reports/
|
|
45
|
+
/spec/examples.txt
|
|
46
|
+
/test/tmp/
|
|
47
|
+
/test/version_tmp/
|
|
48
|
+
/tmp/
|
|
49
|
+
|
|
50
|
+
# Used by dotenv library to load environment variables.
|
|
51
|
+
# .env
|
|
52
|
+
|
|
53
|
+
# Ignore Byebug command history file.
|
|
54
|
+
.byebug_history
|
|
55
|
+
|
|
56
|
+
## Specific to RubyMotion:
|
|
57
|
+
.dat*
|
|
58
|
+
.repl_history
|
|
59
|
+
build/
|
|
60
|
+
*.bridgesupport
|
|
61
|
+
build-iPhoneOS/
|
|
62
|
+
build-iPhoneSimulator/
|
|
63
|
+
|
|
64
|
+
## Specific to RubyMotion (use of CocoaPods):
|
|
65
|
+
#
|
|
66
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
|
67
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
|
68
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
|
69
|
+
# vendor/Pods/
|
|
70
|
+
|
|
71
|
+
## Documentation cache and generated files:
|
|
72
|
+
/.yardoc/
|
|
73
|
+
/_yardoc/
|
|
74
|
+
/doc/
|
|
75
|
+
/rdoc/
|
|
76
|
+
|
|
77
|
+
## Environment normalization:
|
|
78
|
+
/.bundle/
|
|
79
|
+
/vendor/bundle
|
|
80
|
+
/lib/bundler/man/
|
|
81
|
+
|
|
82
|
+
# for a library or gem, you might want to ignore these files since the code is
|
|
83
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
84
|
+
# Gemfile.lock
|
|
85
|
+
# .ruby-version
|
|
86
|
+
# .ruby-gemset
|
|
87
|
+
|
|
88
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
|
89
|
+
.rvmrc
|
|
90
|
+
|
|
91
|
+
# Used by RuboCop. Remote config files pulled in from inherit_from directive.
|
|
92
|
+
# .rubocop-https?--*
|
|
93
|
+
|
|
94
|
+
### VisualStudioCode ###
|
|
95
|
+
.vscode/*
|
|
96
|
+
!.vscode/settings.json
|
|
97
|
+
!.vscode/tasks.json
|
|
98
|
+
!.vscode/launch.json
|
|
99
|
+
!.vscode/extensions.json
|
|
100
|
+
!.vscode/*.code-snippets
|
|
101
|
+
|
|
102
|
+
# Local History for Visual Studio Code
|
|
103
|
+
.history/
|
|
104
|
+
|
|
105
|
+
# Built Visual Studio Code Extensions
|
|
106
|
+
*.vsix
|
|
107
|
+
|
|
108
|
+
### VisualStudioCode Patch ###
|
|
109
|
+
# Ignore all local history of files
|
|
110
|
+
.history
|
|
111
|
+
.ionide
|
|
112
|
+
|
|
113
|
+
# End of https://www.toptal.com/developers/gitignore/api/macos,visualstudiocode,ruby
|
data/.gitlab-ci.yml
CHANGED
|
@@ -7,34 +7,44 @@ stages:
|
|
|
7
7
|
workflow:
|
|
8
8
|
rules:
|
|
9
9
|
# For merge requests, create a pipeline.
|
|
10
|
-
- if:
|
|
10
|
+
- if: "$CI_MERGE_REQUEST_IID"
|
|
11
11
|
# For default branch, create a pipeline.
|
|
12
|
-
- if:
|
|
12
|
+
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
|
13
13
|
# For tags, never create pipeline.
|
|
14
|
-
- if:
|
|
14
|
+
- if: "$CI_COMMIT_TAG"
|
|
15
15
|
when: never
|
|
16
16
|
|
|
17
17
|
Update version:
|
|
18
18
|
stage: version
|
|
19
|
-
image: ruby:2.
|
|
20
|
-
before_script:
|
|
21
|
-
- gem install gfsm
|
|
19
|
+
image: ruby:3.2.4
|
|
22
20
|
script:
|
|
23
|
-
-
|
|
24
|
-
-
|
|
21
|
+
- bundle install
|
|
22
|
+
- chmod +x bin/gfsm
|
|
23
|
+
- bin/gfsm version bump > .version
|
|
24
|
+
- bin/gfsm changelog generate
|
|
25
25
|
- echo "RELEASE_VERSION=$(<.version)" >> variables.env
|
|
26
|
+
- cat CHANGELOG.md
|
|
26
27
|
artifacts:
|
|
27
28
|
reports:
|
|
28
29
|
dotenv: variables.env
|
|
29
30
|
paths:
|
|
30
31
|
- .version
|
|
31
32
|
- CHANGELOG.md
|
|
32
|
-
|
|
33
|
+
variables:
|
|
34
|
+
FORCE_BUMP: true
|
|
35
|
+
OUTPUT_FILE: CHANGELOG.md
|
|
36
|
+
rules:
|
|
37
|
+
- if: "$CI_MERGE_REQUEST_IID"
|
|
38
|
+
variables:
|
|
39
|
+
PRERELEASE: true
|
|
40
|
+
PRERELEASE_NAME: $CI_COMMIT_REF_SLUG
|
|
41
|
+
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
|
42
|
+
|
|
33
43
|
# Publish gem:
|
|
34
44
|
# - GEM_HOST_API_KEY: A valid RubyGems API key.
|
|
35
45
|
Publish gem:
|
|
36
46
|
stage: deploy
|
|
37
|
-
image: ruby:2.
|
|
47
|
+
image: ruby:3.2.4
|
|
38
48
|
variables:
|
|
39
49
|
GEMSPEC_FILE: "gfsm.gemspec"
|
|
40
50
|
GEM_FILE: "gfsm-${RELEASE_VERSION}.gem"
|
|
@@ -51,11 +61,9 @@ Publish gem:
|
|
|
51
61
|
paths:
|
|
52
62
|
- "*.gem"
|
|
53
63
|
rules:
|
|
54
|
-
- if:
|
|
64
|
+
- if: "$GEM_HOST_API_KEY == null"
|
|
55
65
|
when: never
|
|
56
|
-
- if:
|
|
57
|
-
when: never
|
|
58
|
-
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
66
|
+
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
|
59
67
|
|
|
60
68
|
Upload docker image:
|
|
61
69
|
stage: docker
|
|
@@ -64,12 +72,10 @@ Upload docker image:
|
|
|
64
72
|
- docker:20.10.16-dind
|
|
65
73
|
script:
|
|
66
74
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
67
|
-
- docker build -t $
|
|
68
|
-
- docker push --all-tags $
|
|
75
|
+
- docker build -t $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:v$RELEASE_VERSION .
|
|
76
|
+
- docker push --all-tags $CI_REGISTRY_IMAGE
|
|
69
77
|
rules:
|
|
70
|
-
- if:
|
|
71
|
-
when: never
|
|
72
|
-
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
78
|
+
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
|
73
79
|
|
|
74
80
|
Create release:
|
|
75
81
|
stage: release
|
|
@@ -85,8 +91,6 @@ Create release:
|
|
|
85
91
|
- job: "Upload docker image"
|
|
86
92
|
artifacts: false
|
|
87
93
|
rules:
|
|
88
|
-
- if:
|
|
89
|
-
when: never
|
|
90
|
-
- if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
94
|
+
- if: "$GEM_HOST_API_KEY == null"
|
|
91
95
|
when: never
|
|
92
|
-
- if:
|
|
96
|
+
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
data/.tool-versions
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby 2.
|
|
1
|
+
ruby 3.2.4
|
data/.version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.0
|
data/.vscode/launch.json
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "ruby_lsp",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"name": "Debug program",
|
|
11
|
+
"program": "${workspaceRoot}/bin/gfsm version current"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,20 +1,130 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: https://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
|
|
4
|
+
activesupport (7.1.3.4)
|
|
5
|
+
base64
|
|
6
|
+
bigdecimal
|
|
7
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
8
|
+
connection_pool (>= 2.2.5)
|
|
9
|
+
drb
|
|
10
|
+
i18n (>= 1.6, < 2)
|
|
11
|
+
minitest (>= 5.1)
|
|
12
|
+
mutex_m
|
|
13
|
+
tzinfo (~> 2.0)
|
|
14
|
+
addressable (2.8.7)
|
|
15
|
+
public_suffix (>= 2.0.2, < 7.0)
|
|
16
|
+
ast (2.4.2)
|
|
17
|
+
backport (1.2.0)
|
|
18
|
+
base64 (0.2.0)
|
|
19
|
+
benchmark (0.3.0)
|
|
20
|
+
bigdecimal (3.1.8)
|
|
21
|
+
concurrent-ruby (1.3.3)
|
|
22
|
+
connection_pool (2.4.1)
|
|
23
|
+
debug (1.9.2)
|
|
24
|
+
irb (~> 1.10)
|
|
25
|
+
reline (>= 0.3.8)
|
|
26
|
+
diff-lcs (1.5.1)
|
|
27
|
+
drb (2.2.1)
|
|
28
|
+
e2mmap (0.1.0)
|
|
29
|
+
git (2.1.1)
|
|
30
|
+
activesupport (>= 5.0)
|
|
31
|
+
addressable (~> 2.8)
|
|
32
|
+
process_executer (~> 1.1)
|
|
5
33
|
rchardet (~> 1.8)
|
|
34
|
+
i18n (1.14.5)
|
|
35
|
+
concurrent-ruby (~> 1.0)
|
|
36
|
+
io-console (0.7.2)
|
|
37
|
+
irb (1.13.2)
|
|
38
|
+
rdoc (>= 4.0.0)
|
|
39
|
+
reline (>= 0.4.2)
|
|
40
|
+
jaro_winkler (1.6.0)
|
|
41
|
+
json (2.7.2)
|
|
42
|
+
kramdown (2.4.0)
|
|
43
|
+
rexml
|
|
44
|
+
kramdown-parser-gfm (1.1.0)
|
|
45
|
+
kramdown (~> 2.0)
|
|
46
|
+
language_server-protocol (3.17.0.3)
|
|
47
|
+
minitest (5.24.0)
|
|
48
|
+
mutex_m (0.2.0)
|
|
49
|
+
nokogiri (1.16.6-arm64-darwin)
|
|
50
|
+
racc (~> 1.4)
|
|
51
|
+
nokogiri (1.16.6-x64-mingw-ucrt)
|
|
52
|
+
racc (~> 1.4)
|
|
53
|
+
nokogiri (1.16.6-x86_64-linux)
|
|
54
|
+
racc (~> 1.4)
|
|
55
|
+
parallel (1.25.1)
|
|
56
|
+
parser (3.3.3.0)
|
|
57
|
+
ast (~> 2.4.1)
|
|
58
|
+
racc
|
|
59
|
+
process_executer (1.1.0)
|
|
60
|
+
psych (5.1.2)
|
|
61
|
+
stringio
|
|
62
|
+
public_suffix (6.0.0)
|
|
63
|
+
racc (1.8.0)
|
|
64
|
+
rainbow (3.1.1)
|
|
65
|
+
rbs (2.8.4)
|
|
6
66
|
rchardet (1.8.0)
|
|
67
|
+
rdoc (6.7.0)
|
|
68
|
+
psych (>= 4.0.0)
|
|
69
|
+
regexp_parser (2.9.2)
|
|
70
|
+
reline (0.5.9)
|
|
71
|
+
io-console (~> 0.5)
|
|
72
|
+
reverse_markdown (2.1.1)
|
|
73
|
+
nokogiri
|
|
74
|
+
rexml (3.3.0)
|
|
75
|
+
strscan
|
|
76
|
+
rubocop (1.64.1)
|
|
77
|
+
json (~> 2.3)
|
|
78
|
+
language_server-protocol (>= 3.17.0)
|
|
79
|
+
parallel (~> 1.10)
|
|
80
|
+
parser (>= 3.3.0.2)
|
|
81
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
82
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
83
|
+
rexml (>= 3.2.5, < 4.0)
|
|
84
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
|
85
|
+
ruby-progressbar (~> 1.7)
|
|
86
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
87
|
+
rubocop-ast (1.31.3)
|
|
88
|
+
parser (>= 3.3.1.0)
|
|
89
|
+
ruby-progressbar (1.13.0)
|
|
7
90
|
sem_version (2.0.1)
|
|
8
|
-
|
|
91
|
+
solargraph (0.50.0)
|
|
92
|
+
backport (~> 1.2)
|
|
93
|
+
benchmark
|
|
94
|
+
bundler (~> 2.0)
|
|
95
|
+
diff-lcs (~> 1.4)
|
|
96
|
+
e2mmap
|
|
97
|
+
jaro_winkler (~> 1.5)
|
|
98
|
+
kramdown (~> 2.3)
|
|
99
|
+
kramdown-parser-gfm (~> 1.1)
|
|
100
|
+
parser (~> 3.0)
|
|
101
|
+
rbs (~> 2.0)
|
|
102
|
+
reverse_markdown (~> 2.0)
|
|
103
|
+
rubocop (~> 1.38)
|
|
104
|
+
thor (~> 1.0)
|
|
105
|
+
tilt (~> 2.0)
|
|
106
|
+
yard (~> 0.9, >= 0.9.24)
|
|
107
|
+
stringio (3.1.1)
|
|
108
|
+
strscan (3.1.0)
|
|
109
|
+
thor (1.3.1)
|
|
110
|
+
tilt (2.3.0)
|
|
111
|
+
tzinfo (2.0.6)
|
|
112
|
+
concurrent-ruby (~> 1.0)
|
|
113
|
+
unicode-display_width (2.5.0)
|
|
114
|
+
yaml (0.3.0)
|
|
115
|
+
yard (0.9.36)
|
|
9
116
|
|
|
10
117
|
PLATFORMS
|
|
11
118
|
arm64-darwin-21
|
|
119
|
+
x64-mingw-ucrt
|
|
12
120
|
x86_64-linux
|
|
13
121
|
|
|
14
122
|
DEPENDENCIES
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
123
|
+
debug
|
|
124
|
+
git (~> 2.1)
|
|
125
|
+
sem_version (~> 2.0)
|
|
126
|
+
solargraph
|
|
127
|
+
yaml (~> 0.3.0)
|
|
18
128
|
|
|
19
129
|
BUNDLED WITH
|
|
20
130
|
2.3.17
|
data/README.md
CHANGED
data/gfsm.gemspec
CHANGED
|
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
|
7
7
|
spec.description = %q{This gem adds support to bump the semantic version bump and generate changelog file based on the commits trailer.}
|
|
8
8
|
spec.homepage = "https://gitlab.com/zillemarco/gitlab-flavored-semantic-versioning"
|
|
9
9
|
spec.license = "MIT"
|
|
10
|
-
spec.required_ruby_version = Gem::Requirement.new(">=
|
|
10
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
|
11
11
|
|
|
12
12
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.executables = ["gfsm"]
|
|
24
24
|
spec.require_paths = ["lib"]
|
|
25
25
|
|
|
26
|
-
spec.add_dependency "yaml"
|
|
27
|
-
spec.add_dependency "sem_version"
|
|
28
|
-
spec.add_dependency "git"
|
|
26
|
+
spec.add_dependency "yaml", "~> 0.3.0"
|
|
27
|
+
spec.add_dependency "sem_version", "~> 2.0"
|
|
28
|
+
spec.add_dependency "git", "~> 2.1"
|
|
29
29
|
end
|
data/lib/commands/changelog.rb
CHANGED
|
@@ -7,44 +7,49 @@ module GFSM
|
|
|
7
7
|
NEXT_ENTRY_MARKER = "<!--- next entry here -->"
|
|
8
8
|
|
|
9
9
|
def self.help
|
|
10
|
+
cli_info = GFSM::Tools::VersionBumperSettings.cli_info
|
|
11
|
+
|
|
10
12
|
<<~HELP
|
|
11
|
-
Usage:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
Usage:
|
|
14
|
+
gfsm changelog [help|generate] [--output-file <path>] [--no-incremental] #{cli_info[:usage]}
|
|
15
|
+
|
|
16
|
+
Commands:
|
|
17
|
+
help # Prints this help
|
|
18
|
+
generate # Generate the changelog for the current version
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
--output-file <path> # Path to the output changelog file. Defaults to 'CHANGELOG.md'. If not specified, the generate changelog content will be written to stdout
|
|
22
|
+
--no-incremental # When provided, the generated changelog won't look for an existing changelog file. When outputting to stdout the changelog will never be incremental
|
|
23
|
+
--only-new-entries # When provided, the generated changelog won't look for an existing changelog file and will contain only the new entries for the current version, without the Changelog or version headings
|
|
24
|
+
#{cli_info[:options]}
|
|
25
|
+
|
|
26
|
+
Environment variables:
|
|
27
|
+
OUTPUT_FILE # Equivalent to --output-file
|
|
28
|
+
NO_INCREMENTAL # Equivalent to --no-incremental
|
|
29
|
+
ONLY_ENTRIES # Equivalent to --only-new-entries
|
|
30
|
+
#{cli_info[:environment_variables]}
|
|
29
31
|
HELP
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
def run(args = [])
|
|
33
|
-
|
|
35
|
+
case args.shift
|
|
36
|
+
when 'help'
|
|
34
37
|
GFSM::Output.puts(GFSM::Commands::Changelog.help)
|
|
35
|
-
|
|
36
|
-
no_incremental = args.include?("--no-incremental")
|
|
38
|
+
when 'generate'
|
|
39
|
+
no_incremental = ENV.has_key?("NO_INCREMENTAL") || args.include?("--no-incremental")
|
|
40
|
+
only_new_entries = ENV.has_key?("ONLY_NEW_ENTRIES") || args.include?("--only-new-entries")
|
|
37
41
|
output_file_path = get_output_file_path(args)
|
|
38
|
-
changelog_section = compute_this_version_section(args)
|
|
42
|
+
changelog_section = compute_this_version_section(args, only_new_entries)
|
|
39
43
|
|
|
40
|
-
if
|
|
44
|
+
if only_new_entries
|
|
45
|
+
GFSM::Output.puts changelog_section
|
|
46
|
+
elsif !output_file_path
|
|
41
47
|
GFSM::Output.puts <<~CHANGELOG
|
|
42
48
|
# Changelog
|
|
43
|
-
|
|
44
49
|
#{changelog_section}
|
|
45
50
|
CHANGELOG
|
|
46
51
|
else
|
|
47
|
-
if File.
|
|
52
|
+
if File.file?(output_file_path) && !no_incremental
|
|
48
53
|
existing_content = File.read(output_file_path)
|
|
49
54
|
|
|
50
55
|
file_content = existing_content.gsub(/#{Regexp.quote(NEXT_ENTRY_MARKER)}/i, changelog_section)
|
|
@@ -54,12 +59,13 @@ module GFSM
|
|
|
54
59
|
File.open(output_file_path, 'w') do |file|
|
|
55
60
|
file.write <<~CHANGELOG
|
|
56
61
|
# Changelog
|
|
57
|
-
|
|
58
62
|
#{changelog_section}
|
|
59
63
|
CHANGELOG
|
|
60
64
|
end
|
|
61
65
|
end
|
|
62
66
|
end
|
|
67
|
+
else
|
|
68
|
+
GFSM::Output.warn(GFSM::Commands::Version.help)
|
|
63
69
|
end
|
|
64
70
|
|
|
65
71
|
true
|
|
@@ -67,15 +73,10 @@ module GFSM
|
|
|
67
73
|
|
|
68
74
|
private
|
|
69
75
|
|
|
70
|
-
def compute_this_version_section(args)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
repository_path = get_repository_path(args)
|
|
75
|
-
configuration_file_path = get_configuration_file_path(args)
|
|
76
|
-
|
|
77
|
-
version_bumper = GFSM::Tools::VersionBumper.new()
|
|
78
|
-
version = version_bumper.compute_version!(force, prerelease, prerelease_name, repository_path, configuration_file_path)
|
|
76
|
+
def compute_this_version_section(args, only_new_entries)
|
|
77
|
+
settings = GFSM::Tools::VersionBumperSettings.new(args)
|
|
78
|
+
version_bumper = GFSM::Tools::VersionBumper.new(settings)
|
|
79
|
+
version = version_bumper.execute
|
|
79
80
|
subdivisions = version_bumper.subdivisions.to_a
|
|
80
81
|
subdivisions.sort_by! { |subdivision_data| subdivision_data[0].priority }.reverse!
|
|
81
82
|
|
|
@@ -85,30 +86,29 @@ module GFSM
|
|
|
85
86
|
change_type = subdivision_data[0]
|
|
86
87
|
commits = subdivision_data[1]
|
|
87
88
|
|
|
88
|
-
changelog_entries += "
|
|
89
|
+
changelog_entries += "#{change_type.to_changelog_entry}\n\n"
|
|
89
90
|
|
|
90
91
|
commits.each do |commit|
|
|
91
92
|
changelog_entries += "- #{commit.to_changelog_entry}\n"
|
|
92
93
|
end
|
|
93
|
-
end
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
changelog_section = "#{NEXT_ENTRY_MARKER}\n\n## #{version}\n\n"
|
|
97
|
-
else
|
|
98
|
-
changelog_section = "#{NEXT_ENTRY_MARKER}\n\n## #{version}\n#{changelog_entries}"
|
|
95
|
+
changelog_entries += "\n"
|
|
99
96
|
end
|
|
100
|
-
end
|
|
101
97
|
|
|
102
|
-
|
|
103
|
-
switch_index = args.find_index(switch)
|
|
104
|
-
|
|
105
|
-
return default_value unless switch_index &&
|
|
106
|
-
(switch_index + 1) < args.length
|
|
98
|
+
changelog_entries = changelog_entries[0...-1] unless changelog_entries.empty?
|
|
107
99
|
|
|
108
|
-
|
|
100
|
+
return changelog_entries if only_new_entries
|
|
101
|
+
|
|
102
|
+
section = "#{NEXT_ENTRY_MARKER}\n## #{version}"
|
|
103
|
+
|
|
104
|
+
return section if !subdivisions || subdivisions.empty?
|
|
105
|
+
|
|
106
|
+
"#{section}\n\n#{changelog_entries}"
|
|
109
107
|
end
|
|
110
108
|
|
|
111
|
-
def extract_switch_value_if_present(args, switch, default_value)
|
|
109
|
+
def extract_switch_value_if_present(args, switch, default_value, env_name)
|
|
110
|
+
return ENV.fetch(env_name) if ENV.has_key?(env_name)
|
|
111
|
+
|
|
112
112
|
switch_index = args.find_index(switch)
|
|
113
113
|
|
|
114
114
|
return nil unless switch_index
|
|
@@ -118,19 +118,7 @@ module GFSM
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def get_output_file_path(args)
|
|
121
|
-
extract_switch_value_if_present(args, "--output-file", "./CHANGELOG.md")
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def get_configuration_file_path(args)
|
|
125
|
-
extract_switch_value(args, "--configuration", "./gfsmrc.yml")
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def get_prerelease_name(args)
|
|
129
|
-
extract_switch_value(args, "--prerelease-name", "pre")
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def get_repository_path(args)
|
|
133
|
-
extract_switch_value(args, "--path", ".")
|
|
121
|
+
extract_switch_value_if_present(args, "--output-file", "./CHANGELOG.md", "OUTPUT_FILE")
|
|
134
122
|
end
|
|
135
123
|
end
|
|
136
124
|
end
|
data/lib/commands/help.rb
CHANGED
|
@@ -7,22 +7,20 @@ module GFSM
|
|
|
7
7
|
GFSM::Output.puts <<~HELP
|
|
8
8
|
# GitLab Flavored Semantic Versioning
|
|
9
9
|
|
|
10
|
-
Usage:
|
|
10
|
+
Usage:
|
|
11
|
+
|
|
12
|
+
gfsm <command> [<args>]
|
|
11
13
|
|
|
12
14
|
Available commands:
|
|
15
|
+
gfsm help # Print this help text
|
|
16
|
+
gfsm version # Command used to print the current version or bump it based on the configuration
|
|
17
|
+
gfsm changelog # Command used to generate a changelog based on the commits since the latest release
|
|
13
18
|
|
|
14
|
-
gfsm help # Print this help text
|
|
15
|
-
gfsm version # Command used to print the current version or bump it based on the configuration
|
|
16
|
-
gfsm changelog # Command used to generate a changelog based on the commits since the latest release
|
|
17
|
-
|
|
18
|
-
# Version command
|
|
19
19
|
|
|
20
|
+
Version command
|
|
20
21
|
#{GFSM::Commands::Version.help}
|
|
21
|
-
|
|
22
|
-
# Changelog command
|
|
23
|
-
|
|
22
|
+
Changelog command
|
|
24
23
|
#{GFSM::Commands::Changelog.help}
|
|
25
|
-
|
|
26
24
|
HELP
|
|
27
25
|
|
|
28
26
|
true
|
data/lib/commands/version.rb
CHANGED
|
@@ -5,44 +5,38 @@ module GFSM
|
|
|
5
5
|
class Version < BaseCommand
|
|
6
6
|
|
|
7
7
|
def self.help
|
|
8
|
+
cli_info = GFSM::Tools::VersionBumperSettings.cli_info
|
|
9
|
+
|
|
8
10
|
<<~HELP
|
|
9
|
-
Usage:
|
|
11
|
+
Usage:
|
|
12
|
+
gfsm version [help|bump|current] #{cli_info[:usage]}
|
|
13
|
+
|
|
14
|
+
Commands:
|
|
15
|
+
help # Prints this help
|
|
16
|
+
bump # Bump the current version based on the commits changelog trailer and the configuration file
|
|
17
|
+
current # Print the current version, without bumping it
|
|
18
|
+
|
|
19
|
+
Options: \n#{cli_info[:options]}
|
|
10
20
|
|
|
11
|
-
|
|
12
|
-
help # Prints this help
|
|
13
|
-
bump # Bump the current version based on the commits
|
|
14
|
-
# changelog trailer and the configuration file
|
|
15
|
-
--force # When there are no commits with a changelog trailer
|
|
16
|
-
# the version won't get bumped. Use this flag to force
|
|
17
|
-
# the version bump (will increase the patch version)
|
|
18
|
-
--prerelease # Use this switch to also include a prerelease in the version.
|
|
19
|
-
# By default will add 'pre' and increment it like 'pre.1',
|
|
20
|
-
# 'pre.2' and so on
|
|
21
|
-
--prerelease-name <name> # Name of the prerelease that will get added when the
|
|
22
|
-
# switch is enabled
|
|
23
|
-
--configuration <path> # Path to the configuration YAML file
|
|
24
|
-
--path <path> # Path to the repository. By default will use the current directory
|
|
21
|
+
Environment variables: \n#{cli_info[:environment_variables]}
|
|
25
22
|
HELP
|
|
26
23
|
end
|
|
27
24
|
|
|
28
25
|
def run(args = [])
|
|
29
|
-
if args.empty? || (args.length == 2 && args[0] != "bump")
|
|
30
|
-
repository_path = get_repository_path(args)
|
|
31
|
-
|
|
32
|
-
GFSM::Output.puts GFSM::Tools::CurrentVersionLoader.load_current_version(repository_path)
|
|
33
|
-
return true
|
|
34
|
-
end
|
|
35
|
-
|
|
36
26
|
case args.shift
|
|
37
27
|
when 'bump'
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
28
|
+
settings = GFSM::Tools::VersionBumperSettings.new(args)
|
|
29
|
+
version_bumper = GFSM::Tools::VersionBumper.new(settings)
|
|
30
|
+
version = version_bumper.execute
|
|
31
|
+
|
|
32
|
+
GFSM::Output.puts(version)
|
|
33
|
+
when 'current'
|
|
34
|
+
settings = GFSM::Tools::VersionBumperSettings.new(args)
|
|
35
|
+
version = GFSM::Tools::CurrentVersionLoader.load_current_version(settings.repository)
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
if settings.prerelease
|
|
38
|
+
version.add_prerelease_suffix!(settings.prerelease_name)
|
|
39
|
+
end
|
|
46
40
|
|
|
47
41
|
GFSM::Output.puts(version)
|
|
48
42
|
when 'help'
|
|
@@ -53,29 +47,6 @@ module GFSM
|
|
|
53
47
|
|
|
54
48
|
true
|
|
55
49
|
end
|
|
56
|
-
|
|
57
|
-
private
|
|
58
|
-
|
|
59
|
-
def extract_switch_value(args, switch, default_value)
|
|
60
|
-
switch_index = args.find_index(switch)
|
|
61
|
-
|
|
62
|
-
return default_value unless switch_index &&
|
|
63
|
-
(switch_index + 1) < args.length
|
|
64
|
-
|
|
65
|
-
args[switch_index + 1]
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def get_configuration_file_path(args)
|
|
69
|
-
extract_switch_value(args, "--configuration", "./gfsmrc.yml")
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def get_prerelease_name(args)
|
|
73
|
-
extract_switch_value(args, "--prerelease-name", "pre")
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def get_repository_path(args)
|
|
77
|
-
extract_switch_value(args, "--path", ".")
|
|
78
|
-
end
|
|
79
50
|
end
|
|
80
51
|
end
|
|
81
52
|
end
|
data/lib/data/version.rb
CHANGED
|
@@ -7,7 +7,7 @@ module GFSM
|
|
|
7
7
|
class Version < SemVersion
|
|
8
8
|
PRERELEASE_BUILD_VERSION = /^(?<prerelease_name>[a-zA-Z\-]+)(\.?)(?<prerelease_version>[0-9]*)$/i
|
|
9
9
|
|
|
10
|
-
def bump!(major = false, minor = false, patch = true, pre = false, prerelease_name
|
|
10
|
+
def bump!(major = false, minor = false, patch = true, pre = false, prerelease_name)
|
|
11
11
|
if major
|
|
12
12
|
self.major = self.major + 1
|
|
13
13
|
self.minor = 0
|
|
@@ -20,12 +20,16 @@ module GFSM
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
if pre
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
self.add_prerelease_suffix!(prerelease_name)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def add_prerelease_suffix!(prerelease_name)
|
|
28
|
+
preselease_match = self.pre.match(PRERELEASE_BUILD_VERSION) if self.pre
|
|
29
|
+
if preselease_match
|
|
30
|
+
self.pre = preselease_match[:prerelease_name] + "." + (preselease_match[:prerelease_version].to_i + 1).to_s
|
|
31
|
+
else
|
|
32
|
+
self.pre = prerelease_name
|
|
29
33
|
end
|
|
30
34
|
end
|
|
31
35
|
end
|
|
@@ -6,10 +6,8 @@ require_relative '../data/version'
|
|
|
6
6
|
module GFSM
|
|
7
7
|
module Tools
|
|
8
8
|
class CurrentVersionLoader
|
|
9
|
-
def self.load_current_version(
|
|
10
|
-
last_tag_name = GFSM::Tools::GitUtilities.extract_last_tag_name(
|
|
11
|
-
GFSM::Tools::GitUtilities.load_repo(repo_path)
|
|
12
|
-
)
|
|
9
|
+
def self.load_current_version(repo)
|
|
10
|
+
last_tag_name = GFSM::Tools::GitUtilities.extract_last_tag_name(repo)
|
|
13
11
|
|
|
14
12
|
return GFSM::Data::Version.new("0.0.0") unless last_tag_name
|
|
15
13
|
|
data/lib/tools/git_utilities.rb
CHANGED
|
@@ -13,23 +13,16 @@ module GFSM
|
|
|
13
13
|
|
|
14
14
|
def self.extract_last_tag_name(repo)
|
|
15
15
|
begin
|
|
16
|
-
|
|
17
|
-
repo.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
tags = repo.tags
|
|
21
|
-
repo.config("tag.sort", current_sort_order)
|
|
22
|
-
|
|
23
|
-
tags[0].name if !tags.empty?
|
|
24
|
-
rescue
|
|
16
|
+
repo.fetch(nil, {tags: true})
|
|
17
|
+
repo.describe(nil, {tags: true, abbrev: 0})
|
|
18
|
+
rescue => error
|
|
19
|
+
GFSM::Output.error(error.message)
|
|
25
20
|
end
|
|
26
21
|
end
|
|
27
22
|
|
|
28
|
-
def self.extract_commits_with_changelog_trailer(repo)
|
|
29
|
-
last_tag_name = self.extract_last_tag_name(repo)
|
|
30
|
-
|
|
23
|
+
def self.extract_commits_with_changelog_trailer(repo, from, to = "HEAD")
|
|
31
24
|
begin
|
|
32
|
-
commits =
|
|
25
|
+
commits = repo.log.between(from, to)
|
|
33
26
|
commits.each_with_object([]) do |commit, memo|
|
|
34
27
|
trailer = commit.message.match(CHANGELOG_TRAILER_REGEX)
|
|
35
28
|
memo << GFSM::Data::Commit.new(commit, trailer[:name], trailer[:category]) if trailer
|
data/lib/tools/version_bumper.rb
CHANGED
|
@@ -5,25 +5,111 @@ require_relative '../data/version'
|
|
|
5
5
|
|
|
6
6
|
module GFSM
|
|
7
7
|
module Tools
|
|
8
|
+
|
|
9
|
+
class VersionBumperSettings
|
|
10
|
+
attr_reader :repository, :configuration, :force, :force_version, :prerelease, :prerelease_name, :from, :to
|
|
11
|
+
|
|
12
|
+
def initialize(cli_args)
|
|
13
|
+
@repository = GFSM::Tools::GitUtilities.load_repo(get_repository_path(cli_args))
|
|
14
|
+
@configuration = GFSM::Data::Configuration.new(get_configuration_file_path(cli_args))
|
|
15
|
+
@force = ENV.has_key?("FORCE_BUMP") || cli_args.include?("--force")
|
|
16
|
+
@force_version = get_force_version(cli_args)
|
|
17
|
+
@prerelease = ENV.has_key?("PRERELEASE") || cli_args.include?("--prerelease")
|
|
18
|
+
@prerelease_name = get_prerelease_name(cli_args)
|
|
19
|
+
@from = get_from(cli_args)
|
|
20
|
+
@to = get_to(cli_args)
|
|
21
|
+
@from = GFSM::Tools::GitUtilities.extract_last_tag_name(@repository) if @from.nil?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.cli_info
|
|
25
|
+
options = <<~OPTIONS
|
|
26
|
+
--force # When there are no commits with a changelog trailer the version won't get bumped. Use this flag to force the version bump. Unless specified, it will increase the patch
|
|
27
|
+
--force-version <major|minor|match> # What section of the version to bump if the changelog trailer is not found.
|
|
28
|
+
--prerelease # Use this switch to also include a prerelease in the version. By default will add 'pre' and increment it like 'pre.1', 'pre.2' and so on
|
|
29
|
+
--prerelease-name <name> # Name of the prerelease that will get added when the switch is enabled
|
|
30
|
+
--configuration <path> # Path to the configuration YAML file
|
|
31
|
+
--from <hash or tag> # The commit hash or tag to start from when extracting the commits. By default will use the latest tag
|
|
32
|
+
--to <hash, tag or HEAD> # The commit hash or tag to stop at when extracting the commits. By default will use HEAD to get to the latest commit on the current branch
|
|
33
|
+
--configuration <path> # Path to the configuration YAML file
|
|
34
|
+
--path <path> # Path to the repository. By default will use the current directory
|
|
35
|
+
OPTIONS
|
|
36
|
+
|
|
37
|
+
environment_variables = <<~ENVVARS
|
|
38
|
+
FORCE_BUMP # Equivalent to --force
|
|
39
|
+
FORCE_BUMP_VERSION # Equivalent to --force-version
|
|
40
|
+
PRERELEASE # Equivalent to --prerelease
|
|
41
|
+
PRERELEASE_NAME # Equivalent to --prerelease-name
|
|
42
|
+
CONFIGURATION_FILE # Equivalent to --configuration
|
|
43
|
+
REPOSITORY_PATH # Equivalent to --path
|
|
44
|
+
FROM_COMMIT # Equivalent to --from
|
|
45
|
+
TO_COMMIT # Equivalent to --to
|
|
46
|
+
ENVVARS
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
usage: "[--force] [--force-version <major|minor|patch>] [--configuration <configuration_file_path>] [--prerelease] [--prerelease-name <prerelease_name>] [--from <hash or tag>] [--to <hash, tag or HEAD>] [--path <repository_path]",
|
|
50
|
+
options: options,
|
|
51
|
+
environment_variables: environment_variables
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def extract_switch_value(args, switch, default_value, env_name = nil)
|
|
58
|
+
return ENV.fetch(env_name) if ENV.has_key?(env_name)
|
|
59
|
+
|
|
60
|
+
switch_index = args.find_index(switch)
|
|
61
|
+
|
|
62
|
+
return default_value unless switch_index &&
|
|
63
|
+
(switch_index + 1) < args.length
|
|
64
|
+
|
|
65
|
+
args[switch_index + 1]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def get_configuration_file_path(args)
|
|
69
|
+
extract_switch_value(args, "--configuration", "./gfsmrc.yml", "CONFIGURATION_FILE")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def get_prerelease_name(args)
|
|
73
|
+
extract_switch_value(args, "--prerelease-name", "pre", "PRERELEASE_NAME")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def get_repository_path(args)
|
|
77
|
+
extract_switch_value(args, "--path", ".", "REPOSITORY_PATH")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def get_force_version(args)
|
|
81
|
+
extract_switch_value(args, "--force-version", "patch", "FORCE_BUMP_VERSION")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def get_from(args)
|
|
85
|
+
extract_switch_value(args, "--from", nil, "FROM_COMMIT")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def get_to(args)
|
|
89
|
+
extract_switch_value(args, "--to", "HEAD", "TO_COMMIT")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
8
93
|
class VersionBumper
|
|
9
94
|
attr_reader :version, :subdivisions
|
|
10
95
|
|
|
11
|
-
def
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
96
|
+
def initialize(settings)
|
|
97
|
+
@settings = settings
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def execute
|
|
101
|
+
changelog_commits = GFSM::Tools::GitUtilities.extract_commits_with_changelog_trailer(@settings.repository, @settings.from, @settings.to)
|
|
16
102
|
|
|
17
|
-
@version = GFSM::Tools::CurrentVersionLoader.load_current_version(
|
|
18
|
-
@subdivisions = GFSM::Tools::CommitsSubdivider.subdivide_commits(configuration, changelog_commits)
|
|
103
|
+
@version = GFSM::Tools::CurrentVersionLoader.load_current_version(@settings.repository)
|
|
104
|
+
@subdivisions = GFSM::Tools::CommitsSubdivider.subdivide_commits(@settings.configuration, changelog_commits)
|
|
19
105
|
|
|
20
|
-
if
|
|
21
|
-
if force
|
|
22
|
-
@version.bump!(
|
|
106
|
+
if !@subdivisions || @subdivisions.empty?
|
|
107
|
+
if @settings.force
|
|
108
|
+
@version.bump!(@settings.force_version == "major", @settings.force_version == "minor", @settings.force_version == "patch", @settings.prerelease, @settings.prerelease_name)
|
|
23
109
|
end
|
|
24
110
|
else
|
|
25
|
-
highest_bump = GFSM::Data::ChangeType.find_highest_bump(subdivisions.keys)
|
|
26
|
-
@version.bump!(highest_bump == :major, highest_bump == :minor, highest_bump == :patch, prerelease, prerelease_name)
|
|
111
|
+
highest_bump = GFSM::Data::ChangeType.find_highest_bump(@subdivisions.keys)
|
|
112
|
+
@version.bump!(highest_bump == :major, highest_bump == :minor, highest_bump == :patch, @settings.prerelease, @settings.prerelease_name)
|
|
27
113
|
end
|
|
28
114
|
|
|
29
115
|
return @version
|
metadata
CHANGED
|
@@ -1,69 +1,71 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gfsm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Zille Marco
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-06-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: yaml
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 0.3.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 0.3.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: sem_version
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
33
|
+
version: '2.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
40
|
+
version: '2.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: git
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '2.1'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '2.1'
|
|
55
55
|
description: This gem adds support to bump the semantic version bump and generate
|
|
56
56
|
changelog file based on the commits trailer.
|
|
57
|
-
email:
|
|
57
|
+
email:
|
|
58
58
|
executables:
|
|
59
59
|
- gfsm
|
|
60
60
|
extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
|
62
62
|
files:
|
|
63
63
|
- ".editorconfig"
|
|
64
|
+
- ".gitattributes"
|
|
64
65
|
- ".gitignore"
|
|
65
66
|
- ".gitlab-ci.yml"
|
|
66
67
|
- ".tool-versions"
|
|
68
|
+
- ".version"
|
|
67
69
|
- ".vscode/launch.json"
|
|
68
70
|
- Dockerfile
|
|
69
71
|
- Gemfile
|
|
@@ -94,7 +96,7 @@ metadata:
|
|
|
94
96
|
homepage_uri: https://gitlab.com/zillemarco/gitlab-flavored-semantic-versioning
|
|
95
97
|
source_code_uri: https://gitlab.com/zillemarco/gitlab-flavored-semantic-versioning
|
|
96
98
|
changelog_uri: https://gitlab.com/zillemarco/gitlab-flavored-semantic-versioning/-/releases
|
|
97
|
-
post_install_message:
|
|
99
|
+
post_install_message:
|
|
98
100
|
rdoc_options: []
|
|
99
101
|
require_paths:
|
|
100
102
|
- lib
|
|
@@ -102,15 +104,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
102
104
|
requirements:
|
|
103
105
|
- - ">="
|
|
104
106
|
- !ruby/object:Gem::Version
|
|
105
|
-
version:
|
|
107
|
+
version: 3.0.0
|
|
106
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
109
|
requirements:
|
|
108
110
|
- - ">="
|
|
109
111
|
- !ruby/object:Gem::Version
|
|
110
112
|
version: '0'
|
|
111
113
|
requirements: []
|
|
112
|
-
rubygems_version: 3.
|
|
113
|
-
signing_key:
|
|
114
|
+
rubygems_version: 3.4.19
|
|
115
|
+
signing_key:
|
|
114
116
|
specification_version: 4
|
|
115
117
|
summary: This gem adds support to bump the semantic version bump and generate changelog
|
|
116
118
|
file based on the commits trailer.
|