fastlane-plugin-semantic_release 1.11.0 → 1.12.0

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: '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