fastlane-plugin-semantic_release 1.11.0 → 1.12.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '09b6df2db881fa64fd8f22d9998294264f297c115c167d567600c2e0a533a542'
4
- data.tar.gz: 8a58251af5f6e006ac4a6e59628712c7ecb3bc893ad1634d43fd92826690c36a
3
+ metadata.gz: 801ae7e90c09769c435f3aa1640323338ff7b343d3005427208f371f2cd06711
4
+ data.tar.gz: '0790c9a548fd4d4bd59409bf659b488af3db65cfb098683dac62658b36b866c4'
5
5
  SHA512:
6
- metadata.gz: 908a132fc7bfab4c454aac9fae3f32ae55baf1733f1939505ba5e68570ed9e6c60b598095bbdd990b26e20dfb8272a790f1eacfce9fd266b354ad98ab0fa1663
7
- data.tar.gz: 615daa5dd8fe4814cb0d423bf0e8fc4a6a12e4b5eeeb2f25bd7c77278c5aaf28284d9c507778a71d9550385abdb0b6ce7985dd5adb1694c3252391dc89050055
6
+ metadata.gz: c8527660760ffa383de7ff51baa708323da17ed33a7d601becc88375f4ad789ee6d4b99970995b42ae010a6a8f976b661fd53c22dd522bef8d0df30d3fc091bd
7
+ data.tar.gz: 6935fab5c02ffa2cb63d6d5fde4a7012e4abd800263059265c75c2f29155d179af8a960e11ebb146a329cc6c7af44ae52dc8718da04ba1b7309a566fc80767c8
@@ -13,6 +13,7 @@ module Fastlane
13
13
  RELEASE_NEXT_PATCH_VERSION = :RELEASE_NEXT_PATCH_VERSION
14
14
  RELEASE_NEXT_VERSION = :RELEASE_NEXT_VERSION
15
15
  RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION = :RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION
16
+ CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN = :CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN
16
17
  end
17
18
 
18
19
  class AnalyzeCommitsAction < Action
@@ -89,6 +90,7 @@ module Fastlane
89
90
  UI.message("Found #{splitted.length} commits since last release")
90
91
  releases = params[:releases]
91
92
 
93
+ format_pattern = lane_context[SharedValues::CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN]
92
94
  splitted.each do |line|
93
95
  parts = line.split("|")
94
96
  subject = parts[0].strip
@@ -97,7 +99,8 @@ module Fastlane
97
99
  commit = Helper::SemanticReleaseHelper.parse_commit(
98
100
  commit_subject: subject,
99
101
  commit_body: parts[1],
100
- releases: releases
102
+ releases: releases,
103
+ pattern: format_pattern
101
104
  )
102
105
 
103
106
  unless commit[:scope].nil?
@@ -169,6 +172,7 @@ module Fastlane
169
172
  releases = params[:releases]
170
173
  codepush_friendly = params[:codepush_friendly]
171
174
 
175
+ format_pattern = lane_context[SharedValues::CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN]
172
176
  splitted.each do |line|
173
177
  # conventional commits are in format
174
178
  # type: subject (fix: app crash - for example)
@@ -176,6 +180,7 @@ module Fastlane
176
180
  commit_subject: line.split("|")[0],
177
181
  commit_body: line.split("|")[1],
178
182
  releases: releases,
183
+ pattern: format_pattern,
179
184
  codepush_friendly: codepush_friendly
180
185
  )
181
186
 
@@ -229,6 +234,27 @@ module Fastlane
229
234
  UI.user_error!("No match for analyze_commits action given, pass using `match: 'expr'`") unless value && !value.empty?
230
235
  end
231
236
  ),
237
+ FastlaneCore::ConfigItem.new(
238
+ key: :commit_format,
239
+ description: "The commit format to apply. Presets are 'default' or 'angular', or you can provide your own Regexp. Note: the supplied regex _must_ have 4 capture groups, in order: type, scope, has_exclamation_mark, and subject",
240
+ default_value: "default",
241
+ is_string: false,
242
+ verify_block: proc do |value|
243
+ case value
244
+ when String
245
+ unless Helper::SemanticReleaseHelper.format_patterns.key?(value)
246
+ UI.user_error!("Invalid format preset: #{value}")
247
+ end
248
+
249
+ pattern = Helper::SemanticReleaseHelper.format_patterns[value]
250
+ when Regexp
251
+ pattern = value
252
+ else
253
+ UI.user_error!("Invalid option type: #{value.inspect}")
254
+ end
255
+ Actions.lane_context[SharedValues::CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN] = pattern
256
+ end
257
+ ),
232
258
  FastlaneCore::ConfigItem.new(
233
259
  key: :releases,
234
260
  description: "Map types of commit to release (major, minor, patch)",
@@ -283,7 +309,8 @@ module Fastlane
283
309
  ['RELEASE_NEXT_MINOR_VERSION', 'Minor number of the next version'],
284
310
  ['RELEASE_NEXT_PATCH_VERSION', 'Patch number of the next version'],
285
311
  ['RELEASE_NEXT_VERSION', 'Next version string in format (major.minor.patch)'],
286
- ['RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION', 'Last commit without codepush']
312
+ ['RELEASE_LAST_INCOMPATIBLE_CODEPUSH_VERSION', 'Last commit without codepush'],
313
+ ['CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN', 'The format pattern Regexp used to match commits (mainly for internal use)']
287
314
  ]
288
315
  end
289
316
 
@@ -175,12 +175,14 @@ module Fastlane
175
175
  def self.parse_commits(commits)
176
176
  parsed = []
177
177
  # %s|%b|%H|%h|%an|%at
178
+ format_pattern = lane_context[SharedValues::CONVENTIONAL_CHANGELOG_ACTION_FORMAT_PATTERN]
178
179
  commits.each do |line|
179
180
  splitted = line.split("|")
180
181
 
181
182
  commit = Helper::SemanticReleaseHelper.parse_commit(
182
183
  commit_subject: splitted[0],
183
- commit_body: splitted[1]
184
+ commit_body: splitted[1],
185
+ pattern: format_pattern
184
186
  )
185
187
 
186
188
  commit[:hash] = splitted[2]
@@ -5,6 +5,13 @@ module Fastlane
5
5
 
6
6
  module Helper
7
7
  class SemanticReleaseHelper
8
+ def self.format_patterns
9
+ return {
10
+ "default" => /^(docs|fix|feat|chore|style|refactor|perf|test)(?:\((.*)\))?(!?)\: (.*)/,
11
+ "angular" => /^(\w*)(?:\((.*)\))?(): (.*)/
12
+ }
13
+ end
14
+
8
15
  # class methods that you define here become available in your action
9
16
  # as `Helper::SemanticReleaseHelper.your_method`
10
17
  #
@@ -18,7 +25,7 @@ module Fastlane
18
25
  commit_body = params[:commit_body]
19
26
  releases = params[:releases]
20
27
  codepush_friendly = params[:codepush_friendly]
21
- pattern = /^(docs|fix|feat|chore|style|refactor|perf|test)(\((.*)\))?(!?)\: (.*)/
28
+ pattern = params[:pattern]
22
29
  breaking_change_pattern = /BREAKING CHANGES?: (.*)/
23
30
  codepush_pattern = /codepush?: (.*)/
24
31
 
@@ -32,13 +39,13 @@ module Fastlane
32
39
 
33
40
  unless matched.nil?
34
41
  type = matched[1]
35
- scope = matched[3]
42
+ scope = matched[2]
36
43
 
37
44
  result[:is_valid] = true
38
45
  result[:type] = type
39
46
  result[:scope] = scope
40
- result[:has_exclamation_mark] = matched[4] == '!'
41
- result[:subject] = matched[5]
47
+ result[:has_exclamation_mark] = matched[3] == '!'
48
+ result[:subject] = matched[4]
42
49
 
43
50
  unless releases.nil?
44
51
  result[:release] = releases[type.to_sym]
@@ -1 +1 @@
1
- module Fastlane module SemanticRelease VERSION = "1.11.0" end end
1
+ module Fastlane module SemanticRelease VERSION = "1.12.0" end end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-semantic_release
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jiří Otáhal