fastlane-plugin-semantic_release 1.7.0 → 1.11.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: '04344676923fc44788a389d16e617faeb2a0c45887fd724817e762df3862eaff'
4
- data.tar.gz: 40008eb55b6177c4da04286dc0669af751dcb9386236fecbef3061ea47d18656
3
+ metadata.gz: '09b6df2db881fa64fd8f22d9998294264f297c115c167d567600c2e0a533a542'
4
+ data.tar.gz: 8a58251af5f6e006ac4a6e59628712c7ecb3bc893ad1634d43fd92826690c36a
5
5
  SHA512:
6
- metadata.gz: 929f9948bee1c0b4ab94c0b56c38339832e6e6508c0f073029e787bba98dc2bd837bfc0938d79596660248049dd4f81715e4555cbec356eafe939b2a505ee622
7
- data.tar.gz: ab2f15113d8a4daa22f51382c85d3db9570e1b3cfe6ddcb7a0646f404c9bfa01350e1f5ad583d6afa0d708bc59b9ae16758d42fc02eae9f288ebd18d43d394c7
6
+ metadata.gz: 908a132fc7bfab4c454aac9fae3f32ae55baf1733f1939505ba5e68570ed9e6c60b598095bbdd990b26e20dfb8272a790f1eacfce9fd266b354ad98ab0fa1663
7
+ data.tar.gz: 615daa5dd8fe4814cb0d423bf0e8fc4a6a12e4b5eeeb2f25bd7c77278c5aaf28284d9c507778a71d9550385abdb0b6ce7985dd5adb1694c3252391dc89050055
data/README.md CHANGED
@@ -50,6 +50,12 @@ notes = conventional_changelog(format: 'slack', title: 'Android Alpha')
50
50
  - analyzes subject of every single commit and increases version number if there is a need (check conventional commit rules)
51
51
  - if next version number is higher then last version number it will recommend you to release this version
52
52
 
53
+ Options:
54
+
55
+ - `ignore_scopes: ['android','windows']`: allows you to ignore any commits which include a given scope, like this one: `feat(android): add functionality not relevant to the release we are producing`
56
+
57
+ Example usage:
58
+
53
59
  ```
54
60
  isReleasable = analyze_commits(match: 'ios/beta*')
55
61
  ```
@@ -19,7 +19,7 @@ module Fastlane
19
19
  def self.get_last_tag(params)
20
20
  # Try to find the tag
21
21
  command = "git describe --tags --match=#{params[:match]}"
22
- Actions.sh(command, log: false)
22
+ Actions.sh(command, log: params[:debug])
23
23
  rescue
24
24
  UI.message("Tag was not found for match pattern - #{params[:match]}")
25
25
  ''
@@ -27,11 +27,15 @@ module Fastlane
27
27
 
28
28
  def self.get_last_tag_hash(params)
29
29
  command = "git rev-list -n 1 refs/tags/#{params[:tag_name]}"
30
- Actions.sh(command, log: false).chomp
30
+ Actions.sh(command, log: params[:debug]).chomp
31
31
  end
32
32
 
33
33
  def self.get_commits_from_hash(params)
34
- commits = Helper::SemanticReleaseHelper.git_log('%s|%b|>', params[:hash])
34
+ commits = Helper::SemanticReleaseHelper.git_log(
35
+ pretty: '%s|%b|>',
36
+ start: params[:hash],
37
+ debug: params[:debug]
38
+ )
35
39
  commits.split("|>")
36
40
  end
37
41
 
@@ -42,16 +46,19 @@ module Fastlane
42
46
  # Default last version
43
47
  version = '0.0.0'
44
48
 
45
- tag = get_last_tag(match: params[:match])
49
+ tag = get_last_tag(
50
+ match: params[:match],
51
+ debug: params[:debug]
52
+ )
46
53
 
47
54
  if tag.empty?
48
55
  UI.message("First commit of the branch is taken as a begining of next release")
49
56
  # If there is no tag found we taking the first commit of current branch
50
- hash = Actions.sh('git rev-list --max-parents=0 HEAD', log: false).chomp
57
+ hash = Actions.sh('git rev-list --max-parents=0 HEAD', log: params[:debug]).chomp
51
58
  else
52
59
  # Tag's format is v2.3.4-5-g7685948
53
60
  # See git describe man page for more info
54
- tag_name = tag.split('-')[0].strip
61
+ tag_name = tag.split('-')[0...-2].join('-').strip
55
62
  parsed_version = tag_name.match(params[:tag_version_match])
56
63
 
57
64
  if parsed_version.nil?
@@ -60,7 +67,10 @@ module Fastlane
60
67
 
61
68
  version = parsed_version[0]
62
69
  # Get a hash of last version tag
63
- hash = get_last_tag_hash(tag_name: tag_name)
70
+ hash = get_last_tag_hash(
71
+ tag_name: tag_name,
72
+ debug: params[:debug]
73
+ )
64
74
 
65
75
  UI.message("Found a tag #{tag_name} associated with version #{version}")
66
76
  end
@@ -71,20 +81,33 @@ module Fastlane
71
81
  next_patch = (version.split('.')[2] || 0).to_i
72
82
 
73
83
  # Get commits log between last version and head
74
- splitted = get_commits_from_hash(hash: hash)
84
+ splitted = get_commits_from_hash(
85
+ hash: hash,
86
+ debug: params[:debug]
87
+ )
75
88
 
76
89
  UI.message("Found #{splitted.length} commits since last release")
77
90
  releases = params[:releases]
78
91
 
79
92
  splitted.each do |line|
93
+ parts = line.split("|")
94
+ subject = parts[0].strip
80
95
  # conventional commits are in format
81
96
  # type: subject (fix: app crash - for example)
82
97
  commit = Helper::SemanticReleaseHelper.parse_commit(
83
- commit_subject: line.split("|")[0],
84
- commit_body: line.split("|")[1],
98
+ commit_subject: subject,
99
+ commit_body: parts[1],
85
100
  releases: releases
86
101
  )
87
102
 
103
+ unless commit[:scope].nil?
104
+ # if this commit has a scope, then we need to inspect to see if that is one of the scopes we're trying to exclude
105
+ scope = commit[:scope]
106
+ scopes_to_ignore = params[:ignore_scopes]
107
+ # if it is, we'll skip this commit when bumping versions
108
+ next if scopes_to_ignore.include?(scope) #=> true
109
+ end
110
+
88
111
  if commit[:release] == "major" || commit[:is_breaking_change]
89
112
  next_major += 1
90
113
  next_minor = 0
@@ -97,7 +120,7 @@ module Fastlane
97
120
  end
98
121
 
99
122
  next_version = "#{next_major}.#{next_minor}.#{next_patch}"
100
- UI.message("#{next_version}: #{line}")
123
+ UI.message("#{next_version}: #{subject}") if params[:show_version_path]
101
124
  end
102
125
 
103
126
  next_version = "#{next_major}.#{next_minor}.#{next_patch}"
@@ -122,15 +145,27 @@ module Fastlane
122
145
  end
123
146
 
124
147
  def self.is_codepush_friendly(params)
148
+ git_command = 'git rev-list --max-parents=0 HEAD'
125
149
  # Begining of the branch is taken for codepush analysis
126
- hash = Actions.sh('git rev-list --max-parents=0 HEAD', log: false).chomp
150
+ hash_lines = Actions.sh("#{git_command} | wc -l", log: params[:debug]).chomp
151
+ hash = Actions.sh(git_command, log: params[:debug]).chomp
127
152
  next_major = 0
128
153
  next_minor = 0
129
154
  next_patch = 0
130
155
  last_incompatible_codepush_version = '0.0.0'
131
156
 
157
+ if hash_lines.to_i > 1
158
+ UI.error("#{git_command} resulted to more than 1 hash")
159
+ UI.error('This usualy happens when you pull only part of a git history. Check out how you pull the repo! "git fetch" should be enough.')
160
+ Actions.sh(git_command, log: true).chomp
161
+ return false
162
+ end
163
+
132
164
  # Get commits log between last version and head
133
- splitted = get_commits_from_hash(hash: hash)
165
+ splitted = get_commits_from_hash(
166
+ hash: hash,
167
+ debug: params[:debug]
168
+ )
134
169
  releases = params[:releases]
135
170
  codepush_friendly = params[:codepush_friendly]
136
171
 
@@ -211,6 +246,27 @@ module Fastlane
211
246
  key: :tag_version_match,
212
247
  description: "To parse version number from tag name",
213
248
  default_value: '\d+\.\d+\.\d+'
249
+ ),
250
+ FastlaneCore::ConfigItem.new(
251
+ key: :ignore_scopes,
252
+ description: "To ignore certain scopes when calculating releases",
253
+ default_value: [],
254
+ type: Array,
255
+ optional: true
256
+ ),
257
+ FastlaneCore::ConfigItem.new(
258
+ key: :show_version_path,
259
+ description: "True if you want to print out the version calculated for each commit",
260
+ default_value: true,
261
+ type: Boolean,
262
+ optional: true
263
+ ),
264
+ FastlaneCore::ConfigItem.new(
265
+ key: :debug,
266
+ description: "True if you want to log out a debug info",
267
+ default_value: false,
268
+ type: Boolean,
269
+ optional: true
214
270
  )
215
271
  ]
216
272
  end
@@ -8,7 +8,11 @@ module Fastlane
8
8
 
9
9
  class ConventionalChangelogAction < Action
10
10
  def self.get_commits_from_hash(params)
11
- commits = Helper::SemanticReleaseHelper.git_log('%s|%b|%H|%h|%an|%at|>', params[:hash])
11
+ commits = Helper::SemanticReleaseHelper.git_log(
12
+ pretty: '%s|%b|%H|%h|%an|%at|>',
13
+ start: params[:hash],
14
+ debug: params[:debug]
15
+ )
12
16
  commits.split("|>")
13
17
  end
14
18
 
@@ -27,7 +31,10 @@ module Fastlane
27
31
  version = lane_context[SharedValues::RELEASE_NEXT_VERSION]
28
32
 
29
33
  # Get commits log between last version and head
30
- commits = get_commits_from_hash(hash: last_tag_hash)
34
+ commits = get_commits_from_hash(
35
+ hash: last_tag_hash,
36
+ debug: params[:debug]
37
+ )
31
38
  parsed = parse_commits(commits)
32
39
 
33
40
  commit_url = params[:commit_url]
@@ -263,6 +270,13 @@ module Fastlane
263
270
  default_value: true,
264
271
  type: Boolean,
265
272
  optional: true
273
+ ),
274
+ FastlaneCore::ConfigItem.new(
275
+ key: :debug,
276
+ description: "True if you want to log out a debug info",
277
+ default_value: false,
278
+ type: Boolean,
279
+ optional: true
266
280
  )
267
281
  ]
268
282
  end
@@ -8,9 +8,9 @@ module Fastlane
8
8
  # class methods that you define here become available in your action
9
9
  # as `Helper::SemanticReleaseHelper.your_method`
10
10
  #
11
- def self.git_log(pretty, start)
12
- command = "git log --pretty='#{pretty}' --reverse #{start}..HEAD"
13
- Actions.sh(command, log: false).chomp
11
+ def self.git_log(params)
12
+ command = "git log --pretty='#{params[:pretty]}' --reverse #{params[:start]}..HEAD"
13
+ Actions.sh(command, log: params[:debug]).chomp
14
14
  end
15
15
 
16
16
  def self.parse_commit(params)
@@ -1 +1 @@
1
- module Fastlane module SemanticRelease VERSION = "1.7.0" end end
1
+ module Fastlane module SemanticRelease VERSION = "1.11.0" 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.7.0
4
+ version: 1.11.0
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-22 00:00:00.000000000 Z
11
+ date: 2020-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry