fastlane-plugin-semantic_release 1.18.2 → 1.19.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/README.md +206 -45
- data/lib/fastlane/plugin/semantic_release/actions/analyze_commits.rb +37 -1
- data/lib/fastlane/plugin/semantic_release/actions/conventional_changelog.rb +3 -6
- data/lib/fastlane/plugin/semantic_release/helper/semantic_release_helper.rb +1 -1
- data/lib/fastlane/plugin/semantic_release/version.rb +1 -1
- metadata +26 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e5fd2091977076fa7c3cd554b92454fa7cf583874576000df9780a7a83fccd73
|
|
4
|
+
data.tar.gz: a45639adf9085e141016577d4b7868c50f9a65e4bfad00e0e6a0cf2d58f2b83f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d72ae2018651641f4782646562b917e61e598ed6bf719a143fd80b7bf2b287b8b3bb7a26955daa27986026c7e6fc3949c2f4177b15cf3f9c8477a72e044a9ec
|
|
7
|
+
data.tar.gz: c12505a719b59038a7724105f4384cf226dbd8745f8dabfa132d3aead69a60e4a3ecd98a84066a5cb4791cc91f887a5bb9cb8e78ac45048b37df5c0dc85081e3
|
data/README.md
CHANGED
|
@@ -1,92 +1,253 @@
|
|
|
1
1
|
# semantic_release plugin for `fastlane`
|
|
2
2
|
|
|
3
|
-
[](https://github.com/xotahal/fastlane-plugin-semantic_release/actions/workflows/ci.yml)
|
|
4
|
+
[](https://badge.fury.io/rb/fastlane-plugin-semantic_release)
|
|
5
|
+
[](https://github.com/xotahal/fastlane-plugin-semantic_release/blob/master/LICENSE)
|
|
6
|
+
[](https://rubygems.org/gems/fastlane-plugin-semantic_release)
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
- [Getting Started](#getting-started)
|
|
11
|
+
- [About](#about)
|
|
12
|
+
- [Commit Format](#commit-format)
|
|
13
|
+
- [Quick Start](#quick-start)
|
|
14
|
+
- [Available Actions](#available-actions)
|
|
15
|
+
- [analyze_commits](#analyze_commits)
|
|
16
|
+
- [conventional_changelog](#conventional_changelog)
|
|
17
|
+
- [Examples](#examples)
|
|
18
|
+
- [Development](#development)
|
|
19
|
+
- [Questions](#questions)
|
|
4
20
|
|
|
5
21
|
## Getting Started
|
|
6
22
|
|
|
7
|
-
```
|
|
23
|
+
```bash
|
|
8
24
|
fastlane add_plugin semantic_release
|
|
9
25
|
```
|
|
10
26
|
|
|
11
27
|
## About
|
|
12
28
|
|
|
13
|
-
Automated version
|
|
29
|
+
Automated version management and generator of release notes. Inspired by [semantic-release](https://github.com/semantic-release/semantic-release) for npm packages. Based on [conventional commits](https://www.conventionalcommits.org/).
|
|
30
|
+
|
|
31
|
+
<img src="https://raw.githubusercontent.com/xotahal/fastlane-plugin-semantic_release/master/docs/Analyze.png" />
|
|
14
32
|
|
|
15
33
|
### Articles
|
|
16
34
|
|
|
17
35
|
[Semantic Release for Fastlane](https://medium.com/@xotahal/semantic-release-for-fastlane-781df4cf5888?source=friends_link&sk=5c02e32daca7a68539e27e0e1bac1092) @ Medium - By Jiri Otahal
|
|
18
36
|
|
|
37
|
+
## Commit Format
|
|
38
|
+
|
|
39
|
+
This plugin expects commits to follow the [Conventional Commits](https://www.conventionalcommits.org/) specification:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
<type>(<scope>): <subject>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Examples:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
fix(auth): resolve login crash on Android
|
|
49
|
+
feat: add dark mode support
|
|
50
|
+
feat(api)!: change response format
|
|
51
|
+
docs: update installation guide
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Breaking changes** are detected in two ways:
|
|
55
|
+
- Adding `!` after the type/scope: `feat(api)!: change response format`
|
|
56
|
+
- Including `BREAKING CHANGE:` in the commit body
|
|
57
|
+
|
|
58
|
+
### Default type-to-bump mapping
|
|
59
|
+
|
|
60
|
+
| Type | Version Bump |
|
|
61
|
+
|------|-------------|
|
|
62
|
+
| `fix` | patch |
|
|
63
|
+
| `feat` | minor |
|
|
64
|
+
| Breaking change | major |
|
|
65
|
+
|
|
66
|
+
Other types (`docs`, `chore`, `refactor`, `perf`, `test`, `style`) do not trigger a version bump by default, but will appear in the changelog. You can customize this mapping with the `releases` parameter.
|
|
67
|
+
|
|
68
|
+
### Format patterns
|
|
69
|
+
|
|
70
|
+
Two built-in commit format patterns are available via the `commit_format` parameter:
|
|
71
|
+
|
|
72
|
+
- **`default`** — Matches: `docs`, `fix`, `feat`, `chore`, `style`, `refactor`, `perf`, `test`
|
|
73
|
+
- **`angular`** — Matches any word as a type (more permissive)
|
|
74
|
+
|
|
75
|
+
You can also pass a custom `Regexp` with 4 capture groups: type, scope, breaking indicator (`!`), and subject.
|
|
76
|
+
|
|
77
|
+
## Quick Start
|
|
78
|
+
|
|
79
|
+
Here is a minimal Fastfile showing the typical workflow — analyze commits, then generate a changelog:
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
lane :release do
|
|
83
|
+
# 1. Analyze commits to determine next version
|
|
84
|
+
is_releasable = analyze_commits(match: 'v*')
|
|
85
|
+
|
|
86
|
+
if is_releasable
|
|
87
|
+
next_version = lane_context[SharedValues::RELEASE_NEXT_VERSION]
|
|
88
|
+
|
|
89
|
+
# 2. Generate changelog from commits
|
|
90
|
+
notes = conventional_changelog(
|
|
91
|
+
format: 'markdown',
|
|
92
|
+
commit_url: 'https://github.com/user/repo/commit'
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# 3. Use the version and notes however you need
|
|
96
|
+
# For example: tag, push, create GitHub release, etc.
|
|
97
|
+
add_git_tag(tag: "v#{next_version}")
|
|
98
|
+
push_git_tags
|
|
99
|
+
|
|
100
|
+
set_github_release(
|
|
101
|
+
repository_name: 'user/repo',
|
|
102
|
+
tag_name: "v#{next_version}",
|
|
103
|
+
description: notes
|
|
104
|
+
)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
```
|
|
108
|
+
|
|
19
109
|
## Available Actions
|
|
20
110
|
|
|
111
|
+
### `analyze_commits`
|
|
112
|
+
|
|
113
|
+
Analyzes your git history since the last matching tag, determines the next semantic version, and returns `true` if a release is recommended.
|
|
114
|
+
|
|
115
|
+
How it works:
|
|
116
|
+
1. Finds the last tag matching your pattern (e.g., `v*`, `ios/beta*`)
|
|
117
|
+
2. Parses the version number from that tag
|
|
118
|
+
3. Gets all commits since the tag
|
|
119
|
+
4. Analyzes each commit subject against conventional commit rules
|
|
120
|
+
5. Calculates the next version based on commit types
|
|
121
|
+
6. Returns `true` if the next version is higher than the last
|
|
122
|
+
|
|
123
|
+
Example:
|
|
124
|
+
|
|
125
|
+
```ruby
|
|
126
|
+
is_releasable = analyze_commits(match: 'ios/beta*')
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Parameters
|
|
130
|
+
|
|
131
|
+
| Parameter | Description | Default |
|
|
132
|
+
|-----------|-------------|---------|
|
|
133
|
+
| `match` | **Required.** Match pattern for `git describe` to find the last tag (e.g., `'v*'`, `'ios/beta*'`) | — |
|
|
134
|
+
| `commit_format` | Commit format preset (`'default'` or `'angular'`) or a custom `Regexp` with 4 capture groups | `'default'` |
|
|
135
|
+
| `releases` | Hash mapping commit types to release levels | `{ fix: 'patch', feat: 'minor' }` |
|
|
136
|
+
| `bump_per_commit` | When `true`, each matching commit increments the version. When `false`, only bump once per release type (matching semantic-release behavior) | `true` |
|
|
137
|
+
| `ignore_scopes` | Array of scopes to exclude from analysis | `[]` |
|
|
138
|
+
| `include_scopes` | Array of scopes to exclusively include (overrides `ignore_scopes`) | `[]` |
|
|
139
|
+
| `tag_version_match` | Regex to extract the version number from a tag name | `'\d+\.\d+\.\d+'` |
|
|
140
|
+
| `prevent_tag_fallback` | When `true`, don't fall back to `vX.Y.Z` tags if no match is found | `false` |
|
|
141
|
+
| `codepush_friendly` | Commit types considered CodePush-compatible | `['chore', 'test', 'docs']` |
|
|
142
|
+
| `show_version_path` | Print the calculated version for each commit | `true` |
|
|
143
|
+
| `debug` | Enable verbose debug logging | `false` |
|
|
144
|
+
|
|
145
|
+
#### Shared values (lane_context)
|
|
146
|
+
|
|
147
|
+
After running, the following values are available via `lane_context[SharedValues::KEY]`:
|
|
148
|
+
|
|
149
|
+
| Key | Description |
|
|
150
|
+
|-----|-------------|
|
|
151
|
+
| `RELEASE_ANALYZED` | `true` if commits were analyzed |
|
|
152
|
+
| `RELEASE_IS_NEXT_VERSION_HIGHER` | `true` if next version is higher than last version |
|
|
153
|
+
| `RELEASE_LAST_TAG_HASH` | Hash of the commit tagged as the last version |
|
|
154
|
+
| `RELEASE_LAST_VERSION` | Last version number parsed from the tag |
|
|
155
|
+
| `RELEASE_NEXT_VERSION` | Next version string (e.g., `'1.2.3'`) |
|
|
156
|
+
| `RELEASE_NEXT_MAJOR_VERSION` | Major number of the next version |
|
|
157
|
+
| `RELEASE_NEXT_MINOR_VERSION` | Minor number of the next version |
|
|
158
|
+
| `RELEASE_NEXT_PATCH_VERSION` | Patch number of the next version |
|
|
159
|
+
| `RELEASE_IS_NEXT_VERSION_COMPATIBLE_WITH_CODEPUSH` | `true` if the next version is CodePush-compatible |
|
|
160
|
+
| `RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION` | Last version containing CodePush-incompatible changes |
|
|
161
|
+
|
|
162
|
+
Access them like this:
|
|
163
|
+
|
|
164
|
+
```ruby
|
|
165
|
+
next_version = lane_context[SharedValues::RELEASE_NEXT_VERSION]
|
|
166
|
+
```
|
|
167
|
+
|
|
21
168
|
### `conventional_changelog`
|
|
22
169
|
|
|
23
|
-
|
|
24
|
-
- groups those commits by their type (fix, feat, docs, refactor, chore, etc)
|
|
25
|
-
- and creates formated release notes either in markdown or in slack format
|
|
170
|
+
Generates formatted release notes from commits since the last version. **Must run after `analyze_commits`.**
|
|
26
171
|
|
|
27
|
-
|
|
172
|
+
- Parses all commits since the last version
|
|
173
|
+
- Groups commits by type (feat, fix, docs, refactor, etc.)
|
|
174
|
+
- Creates formatted release notes in markdown, slack, or plain text
|
|
28
175
|
|
|
29
|
-
|
|
30
|
-
- `title: 'My Title'` - is appended to the release notes title, "1.1.8 My Title (YYYY-MM-DD)"
|
|
31
|
-
- `display_title: true|false` (defaults to true) - allows you to hide the entire first line of the changelog
|
|
32
|
-
- `display_links: true|false` (defaults to true) - allows you to hide links to commits from your changelog
|
|
33
|
-
- `commit_url: 'https://github.com/username/repository/commit'` - prepended to the commit ID to build usable links
|
|
34
|
-
- View other options by searching for `available_options` in `conventional_changelog.rb`
|
|
176
|
+
<img src="https://raw.githubusercontent.com/xotahal/fastlane-plugin-semantic_release/master/docs/Changelog.png" />
|
|
35
177
|
|
|
36
178
|
Example:
|
|
37
179
|
|
|
38
|
-
```
|
|
180
|
+
```ruby
|
|
39
181
|
notes = conventional_changelog(format: 'slack', title: 'Android Alpha')
|
|
40
182
|
```
|
|
41
183
|
|
|
42
|
-
|
|
184
|
+
#### Parameters
|
|
43
185
|
|
|
44
|
-
|
|
186
|
+
| Parameter | Description | Default |
|
|
187
|
+
|-----------|-------------|---------|
|
|
188
|
+
| `format` | Output format: `'markdown'`, `'slack'`, or `'plain'` | `'markdown'` |
|
|
189
|
+
| `title` | Text appended to the version in the title (e.g., `'Android Alpha'` produces `'1.2.3 Android Alpha (2025-01-15)'`) | — |
|
|
190
|
+
| `commit_url` | Base URL for commit links (e.g., `'https://github.com/user/repo/commit'`) | — |
|
|
191
|
+
| `order` | Array controlling the order of sections in the output | `['feat', 'fix', 'refactor', 'perf', 'chore', 'test', 'docs', 'no_type']` |
|
|
192
|
+
| `sections` | Hash mapping commit types to section titles | `{ feat: 'Features', fix: 'Bug fixes', ... }` |
|
|
193
|
+
| `display_title` | Show the title/header line with version and date | `true` |
|
|
194
|
+
| `display_links` | Show links to individual commits | `true` |
|
|
195
|
+
| `display_author` | Show the author name for each commit | `false` |
|
|
196
|
+
| `ignore_scopes` | Array of scopes to exclude | `[]` |
|
|
197
|
+
| `include_scopes` | Array of scopes to exclusively include | `[]` |
|
|
198
|
+
| `debug` | Enable verbose debug logging | `false` |
|
|
45
199
|
|
|
46
|
-
|
|
47
|
-
- finds last tag on current branch (for example ios/beta/1.3.2)
|
|
48
|
-
- parses the last version from tag (1.3.2)
|
|
49
|
-
- gets all commits since this tag
|
|
50
|
-
- analyzes subject of every single commit and increases version number if there is a need (check conventional commit rules)
|
|
51
|
-
- if next version number is higher then last version number it will recommend you to release this version
|
|
200
|
+
## Examples
|
|
52
201
|
|
|
53
|
-
|
|
202
|
+
### Scope filtering
|
|
54
203
|
|
|
55
|
-
|
|
204
|
+
Build separate changelogs for different platforms:
|
|
56
205
|
|
|
57
|
-
|
|
206
|
+
```ruby
|
|
207
|
+
# Only analyze iOS-scoped commits
|
|
208
|
+
analyze_commits(match: 'ios/v*', include_scopes: ['ios'])
|
|
58
209
|
|
|
210
|
+
# Ignore Android-specific commits
|
|
211
|
+
analyze_commits(match: 'v*', ignore_scopes: ['android', 'windows'])
|
|
59
212
|
```
|
|
60
|
-
isReleasable = analyze_commits(match: 'ios/beta*')
|
|
61
|
-
```
|
|
62
213
|
|
|
63
|
-
|
|
214
|
+
### Custom release mapping
|
|
215
|
+
|
|
216
|
+
Map additional commit types to version bumps:
|
|
64
217
|
|
|
218
|
+
```ruby
|
|
219
|
+
analyze_commits(
|
|
220
|
+
match: 'v*',
|
|
221
|
+
releases: { fix: 'patch', feat: 'minor', refactor: 'patch' }
|
|
222
|
+
)
|
|
65
223
|
```
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
['RELEASE_NEXT_PATCH_VERSION', 'Patch number of the next version'],
|
|
73
|
-
['RELEASE_NEXT_VERSION', 'Next version string in format (major.minor.patch)'],
|
|
224
|
+
|
|
225
|
+
### Plain text changelog for TestFlight
|
|
226
|
+
|
|
227
|
+
```ruby
|
|
228
|
+
notes = conventional_changelog(format: 'plain', display_links: false)
|
|
229
|
+
upload_to_testflight(changelog: notes)
|
|
74
230
|
```
|
|
75
231
|
|
|
76
|
-
|
|
232
|
+
## Development
|
|
77
233
|
|
|
78
|
-
|
|
234
|
+
### Running tests
|
|
79
235
|
|
|
80
|
-
|
|
236
|
+
```bash
|
|
237
|
+
# Run all tests and linting
|
|
238
|
+
bundle exec rake
|
|
81
239
|
|
|
82
|
-
|
|
240
|
+
# Run only tests
|
|
241
|
+
bundle exec rake spec
|
|
83
242
|
|
|
84
|
-
|
|
243
|
+
# Run only linting
|
|
244
|
+
bundle exec rake rubocop
|
|
245
|
+
```
|
|
85
246
|
|
|
86
247
|
## Questions
|
|
87
248
|
|
|
88
|
-
If you
|
|
249
|
+
If you have any issues or feature requests, please [open an issue](https://github.com/xotahal/fastlane-plugin-semantic_release/issues) on GitHub.
|
|
89
250
|
|
|
90
|
-
| Jiri Otahal
|
|
91
|
-
|
|
|
92
|
-
| [<img src="https://avatars3.githubusercontent.com/u/3531955?v=4" width="100px;" style="border-radius:50px"/>](
|
|
251
|
+
| Jiri Otahal |
|
|
252
|
+
| --- |
|
|
253
|
+
| [<img src="https://avatars3.githubusercontent.com/u/3531955?v=4" width="100px;" style="border-radius:50px"/>](https://github.com/xotahal) |
|
|
@@ -22,7 +22,7 @@ module Fastlane
|
|
|
22
22
|
# Try to find the tag
|
|
23
23
|
command = "git describe --tags --match=#{params[:match]}"
|
|
24
24
|
Actions.sh(command, log: params[:debug])
|
|
25
|
-
rescue
|
|
25
|
+
rescue StandardError
|
|
26
26
|
UI.message("Tag was not found for match pattern - #{params[:match]}")
|
|
27
27
|
''
|
|
28
28
|
end
|
|
@@ -101,6 +101,18 @@ module Fastlane
|
|
|
101
101
|
}
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
+
def self.clamp_version(next_major, next_minor, next_patch, base_major, base_minor, base_patch)
|
|
105
|
+
if next_major > base_major
|
|
106
|
+
[base_major + 1, 0, 0]
|
|
107
|
+
elsif next_minor > base_minor
|
|
108
|
+
[next_major, base_minor + 1, 0]
|
|
109
|
+
elsif next_patch > base_patch
|
|
110
|
+
[next_major, next_minor, base_patch + 1]
|
|
111
|
+
else
|
|
112
|
+
[next_major, next_minor, next_patch]
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
104
116
|
def self.is_releasable(params)
|
|
105
117
|
# Hash of the commit where is the last version
|
|
106
118
|
beginning = get_beginning_of_next_sprint(params)
|
|
@@ -122,6 +134,11 @@ module Fastlane
|
|
|
122
134
|
next_minor = (version.split('.')[1] || 0).to_i
|
|
123
135
|
next_patch = (version.split('.')[2] || 0).to_i
|
|
124
136
|
|
|
137
|
+
# Save base version for potential clamping
|
|
138
|
+
base_major = next_major
|
|
139
|
+
base_minor = next_minor
|
|
140
|
+
base_patch = next_patch
|
|
141
|
+
|
|
125
142
|
is_next_version_compatible_with_codepush = true
|
|
126
143
|
|
|
127
144
|
# Get commits log between last version and head
|
|
@@ -171,6 +188,11 @@ module Fastlane
|
|
|
171
188
|
UI.message("#{next_version}: #{subject}") if params[:show_version_path]
|
|
172
189
|
end
|
|
173
190
|
|
|
191
|
+
# When bump_per_commit is false, clamp to single increment
|
|
192
|
+
unless params[:bump_per_commit]
|
|
193
|
+
next_major, next_minor, next_patch = clamp_version(next_major, next_minor, next_patch, base_major, base_minor, base_patch)
|
|
194
|
+
end
|
|
195
|
+
|
|
174
196
|
next_version = "#{next_major}.#{next_minor}.#{next_patch}"
|
|
175
197
|
|
|
176
198
|
is_next_version_releasable = Helper::SemanticReleaseHelper.semver_gt(next_version, version)
|
|
@@ -201,6 +223,9 @@ module Fastlane
|
|
|
201
223
|
next_major = 0
|
|
202
224
|
next_minor = 0
|
|
203
225
|
next_patch = 0
|
|
226
|
+
base_major = next_major
|
|
227
|
+
base_minor = next_minor
|
|
228
|
+
base_patch = next_patch
|
|
204
229
|
last_incompatible_codepush_version = '0.0.0'
|
|
205
230
|
|
|
206
231
|
if hash_lines.to_i > 1
|
|
@@ -246,6 +271,10 @@ module Fastlane
|
|
|
246
271
|
end
|
|
247
272
|
end
|
|
248
273
|
|
|
274
|
+
unless params[:bump_per_commit]
|
|
275
|
+
next_major, next_minor, next_patch = clamp_version(next_major, next_minor, next_patch, base_major, base_minor, base_patch)
|
|
276
|
+
end
|
|
277
|
+
|
|
249
278
|
Actions.lane_context[SharedValues::RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION] = last_incompatible_codepush_version
|
|
250
279
|
end
|
|
251
280
|
|
|
@@ -353,6 +382,13 @@ module Fastlane
|
|
|
353
382
|
default_value: false,
|
|
354
383
|
type: Boolean,
|
|
355
384
|
optional: true
|
|
385
|
+
),
|
|
386
|
+
FastlaneCore::ConfigItem.new(
|
|
387
|
+
key: :bump_per_commit,
|
|
388
|
+
description: "When true (default), each fix/feat commit increments the version. When false, only bump once per release (matching semantic-release behavior)",
|
|
389
|
+
default_value: true,
|
|
390
|
+
type: Boolean,
|
|
391
|
+
optional: true
|
|
356
392
|
)
|
|
357
393
|
]
|
|
358
394
|
end
|
|
@@ -40,9 +40,7 @@ module Fastlane
|
|
|
40
40
|
commit_url = params[:commit_url]
|
|
41
41
|
format = params[:format]
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
result
|
|
43
|
+
note_builder(format, parsed, version, commit_url, params)
|
|
46
44
|
end
|
|
47
45
|
|
|
48
46
|
def self.note_builder(format, commits, version, commit_url, params)
|
|
@@ -99,6 +97,7 @@ module Fastlane
|
|
|
99
97
|
|
|
100
98
|
commits.each do |commit|
|
|
101
99
|
next unless commit[:is_breaking_change]
|
|
100
|
+
|
|
102
101
|
result += "- #{commit[:breaking_change]}" # This is the only unique part of this loop
|
|
103
102
|
|
|
104
103
|
if params[:display_links] == true
|
|
@@ -117,9 +116,7 @@ module Fastlane
|
|
|
117
116
|
end
|
|
118
117
|
|
|
119
118
|
# Trim any trailing newlines
|
|
120
|
-
result
|
|
121
|
-
|
|
122
|
-
result
|
|
119
|
+
result.rstrip!
|
|
123
120
|
end
|
|
124
121
|
|
|
125
122
|
def self.style_text(text, format, style)
|
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
|
7
7
|
class SemanticReleaseHelper
|
|
8
8
|
def self.format_patterns
|
|
9
9
|
return {
|
|
10
|
-
"default" => /^(docs|fix|feat|chore|style|refactor|perf|test)(?:\((.*)\))?(!?)
|
|
10
|
+
"default" => /^(docs|fix|feat|chore|style|refactor|perf|test)(?:\((.*)\))?(!?): (.*)/,
|
|
11
11
|
"angular" => /^(\w*)(?:\((.*)\))?(): (.*)/
|
|
12
12
|
}
|
|
13
13
|
end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
module Fastlane module SemanticRelease VERSION = "1.
|
|
1
|
+
module Fastlane module SemanticRelease VERSION = "1.19.0" end end
|
metadata
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane-plugin-semantic_release
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.19.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jiří Otáhal
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-02-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
@@ -25,21 +25,21 @@ dependencies:
|
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: fastlane
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 2.117.1
|
|
34
34
|
type: :development
|
|
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:
|
|
40
|
+
version: 2.117.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: pry
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
@@ -53,7 +53,7 @@ dependencies:
|
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: rake
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
@@ -67,7 +67,7 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: rspec
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
@@ -81,35 +81,35 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: rspec_junit_formatter
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- -
|
|
87
|
+
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0
|
|
89
|
+
version: '0'
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- -
|
|
94
|
+
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0
|
|
96
|
+
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rubocop
|
|
98
|
+
name: rubocop
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
103
|
+
version: '1.50'
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
110
|
+
version: '1.50'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: rubocop-performance
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - ">="
|
|
@@ -123,20 +123,20 @@ dependencies:
|
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: '0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
126
|
+
name: simplecov
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
129
|
- - ">="
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
131
|
+
version: '0'
|
|
132
132
|
type: :development
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
136
|
- - ">="
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
139
|
-
description:
|
|
138
|
+
version: '0'
|
|
139
|
+
description:
|
|
140
140
|
email: xotahal@gmail.com
|
|
141
141
|
executables: []
|
|
142
142
|
extensions: []
|
|
@@ -153,7 +153,7 @@ homepage: https://github.com/xotahal/fastlane-plugin-semantic_release
|
|
|
153
153
|
licenses:
|
|
154
154
|
- MIT
|
|
155
155
|
metadata: {}
|
|
156
|
-
post_install_message:
|
|
156
|
+
post_install_message:
|
|
157
157
|
rdoc_options: []
|
|
158
158
|
require_paths:
|
|
159
159
|
- lib
|
|
@@ -168,9 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
168
168
|
- !ruby/object:Gem::Version
|
|
169
169
|
version: '0'
|
|
170
170
|
requirements: []
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
signing_key:
|
|
171
|
+
rubygems_version: 3.4.19
|
|
172
|
+
signing_key:
|
|
174
173
|
specification_version: 4
|
|
175
174
|
summary: Automated version managment and generator of release notes.
|
|
176
175
|
test_files: []
|