fastlane-plugin-semantic_release 1.1.8 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a1dd33a05c2a6864d2a60b13cb2fc1b6bae08e1549075bc5355b67c4e023e4c
|
4
|
+
data.tar.gz: a8c22242d8d8304f211da2ef3229505926763468856a223d9543cd545b6e3cdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0009044f8a040373ea1bf0601a8a3b38ad5e6269b0c78daded0c2b2a78eada4667e906e37d47f7f54711615c620fd7c16ccce4b3e8db50b27a440bc0163ac60f'
|
7
|
+
data.tar.gz: 342c0423b25bfe6ff9e0aa4dd3ae7a7fedbfc5bcd7c23aa16faacd5abcb045e8cd8b75a3ba8e2dd92c14c0508aad559a6fdd8d280cb84525c211f7e171a3b0e1
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
## Getting Started
|
6
6
|
|
7
|
-
```
|
7
|
+
```
|
8
8
|
fastlane add_plugin semantic_release
|
9
9
|
```
|
10
10
|
|
@@ -18,19 +18,30 @@ Automated version managment and generator of release notes. Inspired by [semanti
|
|
18
18
|
|
19
19
|
## Available Actions
|
20
20
|
|
21
|
-
### conventional_changelog
|
21
|
+
### `conventional_changelog`
|
22
22
|
|
23
23
|
- parses all commits since last version
|
24
|
-
-
|
24
|
+
- groups those commits by their type (fix, feat, docs, refactor, chore, etc)
|
25
25
|
- and creates formated release notes either in markdown or in slack format
|
26
26
|
|
27
|
+
Available parameters:
|
28
|
+
|
29
|
+
- `format: 'slack|markdown|plain'` (defaults to `markdown`). This formats the changelog for the destination you need. If you're using this for TestFlight changelogs, we suggest using the `plain` option
|
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`
|
35
|
+
|
36
|
+
Example:
|
37
|
+
|
27
38
|
```
|
28
39
|
notes = conventional_changelog(format: 'slack', title: 'Android Alpha')
|
29
40
|
```
|
30
41
|
|
31
42
|
<img src="https://raw.githubusercontent.com/xotahal/fastlane-plugin-semantic_release/master/docs/Changelog.png" />
|
32
43
|
|
33
|
-
### analyze_commits
|
44
|
+
### `analyze_commits`
|
34
45
|
|
35
46
|
- analyzes your git history
|
36
47
|
- finds last tag on current branch (for example ios/beta/1.3.2)
|
@@ -38,11 +49,13 @@ notes = conventional_changelog(format: 'slack', title: 'Android Alpha')
|
|
38
49
|
- gets all commits since this tag
|
39
50
|
- analyzes subject of every single commit and increases version number if there is a need (check conventional commit rules)
|
40
51
|
- if next version number is higher then last version number it will recommend you to release this version
|
52
|
+
|
41
53
|
```
|
42
54
|
isReleasable = analyze_commits(match: 'ios/beta*')
|
43
55
|
```
|
44
56
|
|
45
|
-
It provides these variables in lane_context
|
57
|
+
It provides these variables in `lane_context`.
|
58
|
+
|
46
59
|
```
|
47
60
|
['RELEASE_ANALYZED', 'True if commits were analyzed.'],
|
48
61
|
['RELEASE_IS_NEXT_VERSION_HIGHER', 'True if next version is higher then last version'],
|
@@ -53,12 +66,18 @@ It provides these variables in lane_context.
|
|
53
66
|
['RELEASE_NEXT_PATCH_VERSION', 'Patch number of the next version'],
|
54
67
|
['RELEASE_NEXT_VERSION', 'Next version string in format (major.minor.patch)'],
|
55
68
|
```
|
56
|
-
`next_version = lane_context[SharedValues::RELEASE_NEXT_VERSION]`
|
57
69
|
|
70
|
+
And you can access these like this:
|
71
|
+
|
72
|
+
`next_version = lane_context[SharedValues::RELEASE_NEXT_VERSION]`
|
58
73
|
|
59
74
|
<img src="https://raw.githubusercontent.com/xotahal/fastlane-plugin-semantic_release/master/docs/Analyze.png" />
|
60
75
|
|
61
|
-
|
76
|
+
## Tests
|
77
|
+
|
78
|
+
To run the test suite (contained in `./spec`), call `bundle exec rake`
|
79
|
+
|
80
|
+
## Questions
|
62
81
|
|
63
82
|
If you need anything ping us on [twitter](http://bit.ly/t-xotahal).
|
64
83
|
|
@@ -31,147 +31,138 @@ module Fastlane
|
|
31
31
|
parsed = parse_commits(commits)
|
32
32
|
|
33
33
|
commit_url = params[:commit_url]
|
34
|
+
format = params[:format]
|
34
35
|
|
35
|
-
|
36
|
-
result = markdown(parsed, version, commit_url, params)
|
37
|
-
elsif params[:format] == 'slack'
|
38
|
-
result = slack(parsed, version, commit_url, params)
|
39
|
-
end
|
36
|
+
result = note_builder(format, parsed, version, commit_url, params)
|
40
37
|
|
41
38
|
result
|
42
39
|
end
|
43
40
|
|
44
|
-
def self.
|
41
|
+
def self.note_builder(format, commits, version, commit_url, params)
|
45
42
|
sections = params[:sections]
|
46
43
|
|
47
|
-
|
48
|
-
title += " #{params[:title]}" if params[:title]
|
44
|
+
result = ""
|
49
45
|
|
50
46
|
# Begining of release notes
|
51
|
-
|
52
|
-
|
47
|
+
if params[:display_title] == true
|
48
|
+
title = version
|
49
|
+
title += " #{params[:title]}" if params[:title]
|
50
|
+
title += " (#{Date.today})"
|
51
|
+
|
52
|
+
result = style_text(title, format, "title").to_s
|
53
|
+
result += "\n\n"
|
54
|
+
end
|
53
55
|
|
54
56
|
params[:order].each do |type|
|
55
57
|
# write section only if there is at least one commit
|
56
58
|
next if commits.none? { |commit| commit[:type] == type }
|
57
59
|
|
58
|
-
result += "
|
59
|
-
result += "### #{sections[type.to_sym]}"
|
60
|
+
result += style_text(sections[type.to_sym], format, "heading").to_s
|
60
61
|
result += "\n"
|
61
62
|
|
62
63
|
commits.each do |commit|
|
63
64
|
next if commit[:type] != type || commit[:is_merge]
|
64
65
|
|
65
|
-
author_name = commit[:author_name]
|
66
|
-
short_hash = commit[:short_hash]
|
67
|
-
hash = commit[:hash]
|
68
|
-
link = "#{commit_url}/#{hash}"
|
69
|
-
|
70
66
|
result += "-"
|
71
67
|
|
72
68
|
unless commit[:scope].nil?
|
73
|
-
|
69
|
+
formatted_text = style_text("#{commit[:scope]}:", format, "bold").to_s
|
70
|
+
result += " #{formatted_text}"
|
74
71
|
end
|
75
72
|
|
76
|
-
result += " #{commit[:subject]}
|
73
|
+
result += " #{commit[:subject]}"
|
77
74
|
|
78
|
-
if params[:
|
79
|
-
|
75
|
+
if params[:display_links] == true
|
76
|
+
styled_link = build_commit_link(commit, commit_url, format).to_s
|
77
|
+
result += " (#{styled_link})"
|
80
78
|
end
|
81
79
|
|
82
|
-
result += "\n"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
if commits.any? { |commit| commit[:is_breaking_change] == true }
|
87
|
-
result += "\n\n"
|
88
|
-
result += "### BREAKING CHANGES"
|
89
|
-
result += "\n"
|
90
|
-
|
91
|
-
commits.each do |commit|
|
92
|
-
next unless commit[:is_breaking_change]
|
93
|
-
|
94
|
-
author_name = commit[:author_name]
|
95
|
-
short_hash = commit[:short_hash]
|
96
|
-
hash = commit[:hash]
|
97
|
-
link = "#{commit_url}/#{hash}"
|
98
|
-
|
99
|
-
result += "- #{commit[:breaking_change]} ([#{short_hash}](#{link}))"
|
100
|
-
|
101
80
|
if params[:display_author]
|
102
|
-
result += "- #{author_name}"
|
81
|
+
result += " - #{commit[:author_name]}"
|
103
82
|
end
|
104
83
|
|
105
84
|
result += "\n"
|
106
85
|
end
|
86
|
+
result += "\n"
|
107
87
|
end
|
108
88
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
def self.slack(commits, version, commit_url, params)
|
113
|
-
sections = params[:sections]
|
114
|
-
|
115
|
-
# Begining of release notes
|
116
|
-
result = "*#{version} #{params[:title]}* (#{Date.today})"
|
117
|
-
result += "\n"
|
118
|
-
|
119
|
-
params[:order].each do |type|
|
120
|
-
# write section only if there is at least one commit
|
121
|
-
next if commits.none? { |commit| commit[:type] == type }
|
122
|
-
|
123
|
-
result += "\n\n"
|
124
|
-
result += "*#{sections[type.to_sym]}*"
|
89
|
+
if commits.any? { |commit| commit[:is_breaking_change] == true }
|
90
|
+
result += style_text("BREAKING CHANGES", format, "heading").to_s
|
125
91
|
result += "\n"
|
126
92
|
|
127
93
|
commits.each do |commit|
|
128
|
-
next
|
129
|
-
|
130
|
-
author_name = commit[:author_name]
|
131
|
-
short_hash = commit[:short_hash]
|
132
|
-
hash = commit[:hash]
|
133
|
-
link = "#{commit_url}/#{hash}"
|
134
|
-
|
135
|
-
result += "-"
|
94
|
+
next unless commit[:is_breaking_change]
|
95
|
+
result += "- #{commit[:breaking_change]}" # This is the only unique part of this loop
|
136
96
|
|
137
|
-
|
138
|
-
|
97
|
+
if params[:display_links] == true
|
98
|
+
styled_link = build_commit_link(commit, commit_url, format).to_s
|
99
|
+
result += " (#{styled_link})"
|
139
100
|
end
|
140
101
|
|
141
|
-
result += " #{commit[:subject]} (<#{link}|#{short_hash}>)"
|
142
|
-
|
143
102
|
if params[:display_author]
|
144
|
-
result += "- #{author_name}"
|
103
|
+
result += " - #{commit[:author_name]}"
|
145
104
|
end
|
146
105
|
|
147
106
|
result += "\n"
|
148
107
|
end
|
149
|
-
end
|
150
108
|
|
151
|
-
if commits.any? { |commit| commit[:is_breaking_change] == true }
|
152
|
-
result += "\n\n"
|
153
|
-
result += "*BREAKING CHANGES*"
|
154
109
|
result += "\n"
|
110
|
+
end
|
155
111
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
author_name = commit[:author_name]
|
160
|
-
short_hash = commit[:short_hash]
|
161
|
-
hash = commit[:hash]
|
162
|
-
link = "#{commit_url}/#{hash}"
|
163
|
-
|
164
|
-
result += "- #{commit[:breaking_change]} (<#{link}|#{short_hash}>)"
|
112
|
+
# Trim any trailing newlines
|
113
|
+
result = result.rstrip!
|
165
114
|
|
166
|
-
|
167
|
-
|
168
|
-
end
|
115
|
+
result
|
116
|
+
end
|
169
117
|
|
170
|
-
|
118
|
+
def self.style_text(text, format, style)
|
119
|
+
# formats the text according to the style we're looking to use
|
120
|
+
|
121
|
+
# Skips all styling
|
122
|
+
case style
|
123
|
+
when "title"
|
124
|
+
if format == "markdown"
|
125
|
+
"# #{text}"
|
126
|
+
elsif format == "slack"
|
127
|
+
"*#{text}*"
|
128
|
+
else
|
129
|
+
text
|
130
|
+
end
|
131
|
+
when "heading"
|
132
|
+
if format == "markdown"
|
133
|
+
"### #{text}"
|
134
|
+
elsif format == "slack"
|
135
|
+
"*#{text}*"
|
136
|
+
else
|
137
|
+
"#{text}:"
|
171
138
|
end
|
139
|
+
when "bold"
|
140
|
+
if format == "markdown"
|
141
|
+
"**#{text}**"
|
142
|
+
elsif format == "slack"
|
143
|
+
"*#{text}*"
|
144
|
+
else
|
145
|
+
text
|
146
|
+
end
|
147
|
+
else
|
148
|
+
text # catchall, shouldn't be needed
|
172
149
|
end
|
150
|
+
end
|
173
151
|
|
174
|
-
|
152
|
+
def self.build_commit_link(commit, commit_url, format)
|
153
|
+
# formats the link according to the output format we need
|
154
|
+
short_hash = commit[:short_hash]
|
155
|
+
hash = commit[:hash]
|
156
|
+
url = "#{commit_url}/#{hash}"
|
157
|
+
|
158
|
+
case format
|
159
|
+
when "slack"
|
160
|
+
"<#{url}|#{short_hash}>"
|
161
|
+
when "markdown"
|
162
|
+
"[#{short_hash}](#{url})"
|
163
|
+
else
|
164
|
+
url
|
165
|
+
end
|
175
166
|
end
|
176
167
|
|
177
168
|
def self.parse_commits(commits)
|
@@ -215,7 +206,7 @@ module Fastlane
|
|
215
206
|
[
|
216
207
|
FastlaneCore::ConfigItem.new(
|
217
208
|
key: :format,
|
218
|
-
description: "You can use either markdown or
|
209
|
+
description: "You can use either markdown, slack or plain",
|
219
210
|
default_value: "markdown",
|
220
211
|
optional: true
|
221
212
|
),
|
@@ -258,6 +249,20 @@ module Fastlane
|
|
258
249
|
default_value: false,
|
259
250
|
type: Boolean,
|
260
251
|
optional: true
|
252
|
+
),
|
253
|
+
FastlaneCore::ConfigItem.new(
|
254
|
+
key: :display_title,
|
255
|
+
description: "Whether you want to hide the title/header with the version details at the top of the changelog",
|
256
|
+
default_value: true,
|
257
|
+
type: Boolean,
|
258
|
+
optional: true
|
259
|
+
),
|
260
|
+
FastlaneCore::ConfigItem.new(
|
261
|
+
key: :display_links,
|
262
|
+
description: "Whether you want to display the links to commit IDs",
|
263
|
+
default_value: true,
|
264
|
+
type: Boolean,
|
265
|
+
optional: true
|
261
266
|
)
|
262
267
|
]
|
263
268
|
end
|
@@ -1 +1 @@
|
|
1
|
-
module Fastlane module SemanticRelease VERSION = "1.1
|
1
|
+
module Fastlane module SemanticRelease VERSION = "1.5.1" end end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-semantic_release
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jiří Otáhal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|