fastlane 2.114.0.beta.20190115200110 → 2.114.0.beta.20190116200018

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
  SHA1:
3
- metadata.gz: ce412e8b3e2f6f853fb84786b51b5715e971769a
4
- data.tar.gz: 4cd640aa23816cc6b328979bb7e029f199c037b2
3
+ metadata.gz: 8823faa01f6b91b8f1d75874a92e31c24e5baf7b
4
+ data.tar.gz: 798b9258cdccc86dd157343f01948b7b64329a01
5
5
  SHA512:
6
- metadata.gz: 7f2d02755278043cc75b02eaaf0984131fafc84a7887f3b04bfbba267be04ae4e178dbab5f6207077addef3ccce5c6ce4002c27b0857a3e8993e2f840345868b
7
- data.tar.gz: f3e8e389e1c76bb3f68ad90948ebf6273e2b06f3c2841e9a8169061a83d353d6636e113fc0e46bb4f8ca4a7a35954fc6bef72cdc4cc63467a206badcb398a162
6
+ metadata.gz: eb89b5429909549a65ad93a6f2192de69a1d33834ffb3260d413adde31da4e1b072a72953a4b35938b97c19982d0afdef08e04bcdc98c9bfc2931abf8e341107
7
+ data.tar.gz: 7f60cd65995378cb001435f2a6202f45ce800b52d4607fe0b738b7be4aa45741d7100edf57537db568c1cccba18953612d0afae6328916840728d915a54cf722
@@ -132,7 +132,7 @@ module Fastlane
132
132
  end
133
133
 
134
134
  def self.return_value
135
- "The parsed JSON when successful"
135
+ "The pull request URL when successful"
136
136
  end
137
137
 
138
138
  def self.example_code
@@ -25,6 +25,7 @@ module Fastlane
25
25
  build_number = params[:build_number]
26
26
  platform = params[:platform]
27
27
  output_directory = params[:output_directory]
28
+ min_version = Gem::Version.new(params[:min_version]) if params[:min_version]
28
29
 
29
30
  # Set version if it is latest
30
31
  if version == 'latest'
@@ -51,21 +52,35 @@ module Fastlane
51
52
  UI.message(message.join(" "))
52
53
 
53
54
  app.tunes_all_build_trains(platform: platform).each do |train|
54
- UI.verbose("Found train: #{train.version_string}, comparing to supplied version: #{version}")
55
+ message = []
56
+ message << "Found train (version): #{train.version_string}"
57
+ message << ", comparing to supplied version: #{version}" if version
58
+ UI.verbose(message.join(" "))
59
+
55
60
  if version && version != train.version_string
56
61
  UI.verbose("Version #{version} doesn't match: #{train.version_string}")
57
62
  next
58
63
  end
64
+
65
+ if min_version && min_version > Gem::Version.new(train.version_string)
66
+ UI.verbose("Min version #{min_version} not reached: #{train.version_string}")
67
+ next
68
+ end
69
+
59
70
  app.tunes_all_builds_for_train(train: train.version_string, platform: platform).each do |build|
60
- UI.verbose("Found build version: #{build.build_version}, comparing to supplied build_number: #{build_number}")
71
+ message = []
72
+ message << "Found build version: #{build.build_version}"
73
+ message << ", comparing to supplied build_number: #{build_number}" if build_number
74
+ UI.verbose(message.join(" "))
75
+
61
76
  if build_number && build.build_version != build_number
62
77
  UI.verbose("build_version: #{build.build_version} doesn't match: #{build_number}")
63
78
  next
64
79
  end
65
80
 
66
81
  begin
67
- # need to call reload here or dsym_url is nil
68
- UI.verbose("Build_version: #{build.build_version} matches #{build_number}, grabbing dsym_url")
82
+ UI.verbose("Build_version: #{build.build_version} matches #{build_number}, grabbing dsym_url") if build_number
83
+
69
84
  build_details = app.tunes_build_details(train: train.version_string, build_number: build.build_version, platform: platform)
70
85
  download_url = build_details.dsym_url
71
86
  UI.verbose("dsym_url: #{download_url}")
@@ -207,6 +222,11 @@ module Fastlane
207
222
  env_name: "DOWNLOAD_DSYMS_BUILD_NUMBER",
208
223
  description: "The app build_number for dSYMs you wish to download",
209
224
  optional: true),
225
+ FastlaneCore::ConfigItem.new(key: :min_version,
226
+ short_option: "-m",
227
+ env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
228
+ description: "The minimum app version for dSYMs you wish to download",
229
+ optional: true),
210
230
  FastlaneCore::ConfigItem.new(key: :output_directory,
211
231
  short_option: "-s",
212
232
  env_name: "DOWNLOAD_DSYMS_OUTPUT_DIRECTORY",
@@ -236,7 +256,8 @@ module Fastlane
236
256
  def self.example_code
237
257
  [
238
258
  'download_dsyms',
239
- 'download_dsyms(version: "1.0.0", build_number: "345")'
259
+ 'download_dsyms(version: "1.0.0", build_number: "345")',
260
+ 'download_dsyms(min_version: "1.2.3")'
240
261
  ]
241
262
  end
242
263
 
@@ -23,20 +23,25 @@ module Fastlane
23
23
  '&&'
24
24
  ].join(' ')
25
25
 
26
- current_version = `#{command_prefix} agvtool what-marketing-version -terse1`.split("\n").last || ''
26
+ begin
27
+ current_version = Actions
28
+ .sh("#{command_prefix} agvtool what-marketing-version -terse1", log: FastlaneCore::Globals.verbose?)
29
+ .split("\n")
30
+ .last
31
+ .strip
32
+ rescue
33
+ current_version = ''
34
+ end
27
35
 
36
+ version_regex = /^\d+\.\d+\.\d+$/
28
37
  if params[:version_number]
29
- UI.verbose("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ /\d.\d.\d/
38
+ UI.verbose("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ version_regex
30
39
 
31
40
  # Specific version
32
41
  next_version_number = params[:version_number]
33
42
  else
34
- if Helper.test?
35
- version_array = [1, 0, 0]
36
- else
37
- UI.user_error!("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ /\d+.\d+.\d+/
38
- version_array = current_version.split(".").map(&:to_i)
39
- end
43
+ UI.user_error!("Your current version (#{current_version}) does not respect the format A.B.C") unless current_version =~ version_regex
44
+ version_array = current_version.split(".").map(&:to_i)
40
45
 
41
46
  case params[:bump_type]
42
47
  when "patch"
@@ -15,7 +15,18 @@ module Fastlane
15
15
  # Multi line
16
16
  end_tag = params[:multi_line_end_keyword]
17
17
  UI.important("Submit inputs using \"#{params[:multi_line_end_keyword]}\"")
18
- user_input = STDIN.gets(end_tag).chomp.gsub(end_tag, "").strip
18
+ user_input = ""
19
+ loop do
20
+ line = STDIN.gets
21
+ end_tag_index = line.index(end_tag)
22
+ if end_tag_index.nil?
23
+ user_input << line
24
+ else
25
+ user_input << line.slice(0, end_tag_index)
26
+ user_input = user_input.strip
27
+ break
28
+ end
29
+ end
19
30
  else
20
31
  # Standard one line input
21
32
  if params[:secure_text]
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.114.0.beta.20190115200110'.freeze
2
+ VERSION = '2.114.0.beta.20190116200018'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -10,7 +10,7 @@ module FastlaneCore
10
10
  command << " -P #{certificate_password.shellescape}"
11
11
  command << " -T /usr/bin/codesign" # to not be asked for permission when running a tool like `gym` (before Sierra)
12
12
  command << " -T /usr/bin/security"
13
- command << " &> /dev/null" unless output
13
+ command << " 1> /dev/null" unless output
14
14
 
15
15
  Helper.backticks(command, print: output)
16
16
 
@@ -19,31 +19,37 @@ module FastlaneCore
19
19
  if Helper.backticks('security -h | grep set-key-partition-list', print: false).length > 0
20
20
  command = "security set-key-partition-list"
21
21
  command << " -S apple-tool:,apple:"
22
- command << " -l 'Imported Private Key'"
23
22
  command << " -k #{keychain_password.to_s.shellescape}"
24
23
  command << " #{keychain_path.shellescape}"
25
- command << " &> /dev/null" # always disable stdout. This can be very verbose, and leak potentially sensitive info
24
+ command << " 1> /dev/null" # always disable stdout. This can be very verbose, and leak potentially sensitive info
25
+
26
+ # Showing loading indicator as this can take some time if a lot of keys installed
27
+ Helper.show_loading_indicator("Setting key partition list... (this can take a minute if there are a lot of keys installed)")
26
28
 
27
29
  UI.command(command) if output
28
30
  Open3.popen3(command) do |stdin, stdout, stderr, thrd|
29
- if output
30
- Helper.show_loading_indicator("Importing keys...")
31
- UI.command(command)
32
- UI.command_output(stdout.read)
33
- Helper.hide_loading_indicator
34
- end
35
-
36
31
  unless thrd.value.success?
37
- UI.error("")
38
- UI.error("Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing\n" \
39
- "Check if you supplied the correct `keychain_password` for keychain: `#{keychain_path}`\n" \
40
- "#{stderr.read.to_s.strip}")
41
- UI.error("")
42
- UI.error("Please look at the following docs to see how to set a keychain password:")
43
- UI.error(" - https://docs.fastlane.tools/actions/sync_code_signing")
44
- UI.error(" - https://docs.fastlane.tools/actions/get_certificates")
32
+ err = stderr.read.to_s.strip
33
+
34
+ # Inform user when no/wrong password was used as its needed to prevent UI permission popup from Xcode when signing
35
+ if err.include?("SecKeychainItemSetAccessWithPassword")
36
+ UI.error("")
37
+ UI.error("Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing\n" \
38
+ "Check if you supplied the correct `keychain_password` for keychain: `#{keychain_path}`\n" \
39
+ "#{err}")
40
+ UI.error("")
41
+ UI.error("Please look at the following docs to see how to set a keychain password:")
42
+ UI.error(" - https://docs.fastlane.tools/actions/sync_code_signing")
43
+ UI.error(" - https://docs.fastlane.tools/actions/get_certificates")
44
+ else
45
+ UI.error(err)
46
+ end
45
47
  end
46
48
  end
49
+
50
+ # Hiding after Open3 finishes
51
+ Helper.hide_loading_indicator
52
+
47
53
  end
48
54
  end
49
55
  end
@@ -69,6 +69,13 @@ module Scan
69
69
  type: Boolean,
70
70
  optional: true),
71
71
 
72
+ # reset simulator
73
+ FastlaneCore::ConfigItem.new(key: :reset_simulator,
74
+ env_name: 'SCAN_RESET_SIMULATOR',
75
+ description: "Enabling this option will automatically erase the simulator before running the application",
76
+ default_value: false,
77
+ type: Boolean),
78
+
72
79
  # reinstall app
73
80
  FastlaneCore::ConfigItem.new(key: :reinstall_app,
74
81
  env_name: 'SCAN_REINSTALL_APP',
@@ -40,7 +40,11 @@ module Scan
40
40
  ]
41
41
  exit_status = 0
42
42
 
43
- if Scan.config[:reinstall_app]
43
+ if Scan.config[:reset_simulator]
44
+ Scan.devices.each do |device|
45
+ FastlaneCore::Simulator.reset(udid: device.udid)
46
+ end
47
+ elsif Scan.config[:reinstall_app]
44
48
  app_identifier = Scan.config[:app_identifier]
45
49
  app_identifier ||= UI.input("App Identifier: ")
46
50
 
@@ -21,6 +21,19 @@ module Sigh
21
21
 
22
22
  def resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
23
23
  resign_path = find_resign_path
24
+
25
+ if keychain_path
26
+ keychain_path_absolute = File.expand_path(keychain_path)
27
+
28
+ current_keychains = `security list-keychains`
29
+ current_keychains.delete!("\n")
30
+
31
+ unless current_keychains.include?(keychain_path_absolute)
32
+ previous_keychains = current_keychains
33
+ `security list-keychains -s #{current_keychains} '#{keychain_path_absolute}'`
34
+ end
35
+ end
36
+
24
37
  signing_identity = find_signing_identity(signing_identity)
25
38
 
26
39
  unless provisioning_profiles.kind_of?(Enumerable)
@@ -68,6 +81,8 @@ module Sigh
68
81
  UI.error("Something went wrong while code signing #{ipa}")
69
82
  false
70
83
  end
84
+ ensure
85
+ `security list-keychains -s #{previous_keychains}` if previous_keychains
71
86
  end
72
87
 
73
88
  def get_inputs(options, args)
@@ -103,9 +118,10 @@ module Sigh
103
118
  end
104
119
 
105
120
  def find_signing_identity(signing_identity)
106
- until (signing_identity = sha1_for_signing_identity(signing_identity))
107
- UI.error("Couldn't find signing identity '#{signing_identity}'.")
108
- signing_identity = ask_for_signing_identity
121
+ signing_identity_input = signing_identity
122
+ until (signing_identity = sha1_for_signing_identity(signing_identity_input))
123
+ UI.error("Couldn't find signing identity '#{signing_identity_input}'.")
124
+ signing_identity_input = ask_for_signing_identity
109
125
  end
110
126
 
111
127
  signing_identity
@@ -42,7 +42,9 @@ module Snapshot
42
42
 
43
43
  launch_arguments = Array(snapshot_config[:launch_arguments])
44
44
  # if more than 1 set of arguments, use a tuple with an index
45
- if launch_arguments.count == 1
45
+ if launch_arguments.count == 0
46
+ @launch_args_set = [[""]]
47
+ elsif launch_arguments.count == 1
46
48
  @launch_args_set = [launch_arguments]
47
49
  else
48
50
  @launch_args_set = launch_arguments.map.with_index { |e, i| [i, e] }
@@ -228,7 +228,17 @@ module Supply
228
228
  optional: true,
229
229
  description: "When promoting to a new track, deactivate the binary in the origin track",
230
230
  is_string: false,
231
- default_value: true)
231
+ default_value: true),
232
+ FastlaneCore::ConfigItem.new(key: :version_codes_to_retain,
233
+ optional: true,
234
+ type: Array,
235
+ description: "An array of version codes to retain when publishing a new APK",
236
+ verify_block: proc do |version_codes|
237
+ UI.user_error!("Could not evaluate array from '#{version_codes}'") unless version_codes.kind_of?(Array)
238
+ version_codes.each do |version_code|
239
+ UI.user_error!("Version code '#{version_code}' is not an integer") unless version_code.kind_of?(Integer)
240
+ end
241
+ end)
232
242
  ]
233
243
  end
234
244
  # rubocop:enable Metrics/PerceivedComplexity
@@ -28,6 +28,8 @@ module Supply
28
28
  apk_version_codes.concat(upload_bundles) unless Supply.config[:skip_upload_aab]
29
29
  upload_mapping(apk_version_codes)
30
30
 
31
+ apk_version_codes.concat(Supply.config[:version_codes_to_retain]) if Supply.config[:version_codes_to_retain]
32
+
31
33
  # Only update tracks if we have version codes
32
34
  # Updating a track with empty version codes can completely clear out a track
33
35
  update_track(apk_version_codes) unless apk_version_codes.empty?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.114.0.beta.20190115200110
4
+ version: 2.114.0.beta.20190116200018
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Natchev
@@ -27,7 +27,7 @@ authors:
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2019-01-15 00:00:00.000000000 Z
30
+ date: 2019-01-16 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -1683,23 +1683,23 @@ post_install_message:
1683
1683
  rdoc_options: []
1684
1684
  require_paths:
1685
1685
  - frameit/lib
1686
- - precheck/lib
1686
+ - pilot/lib
1687
+ - fastlane/lib
1688
+ - snapshot/lib
1687
1689
  - gym/lib
1688
- - deliver/lib
1690
+ - precheck/lib
1691
+ - scan/lib
1692
+ - pem/lib
1689
1693
  - produce/lib
1690
- - snapshot/lib
1691
- - sigh/lib
1692
- - screengrab/lib
1693
- - pilot/lib
1694
+ - spaceship/lib
1694
1695
  - fastlane_core/lib
1695
1696
  - supply/lib
1697
+ - deliver/lib
1698
+ - credentials_manager/lib
1696
1699
  - match/lib
1697
- - fastlane/lib
1700
+ - screengrab/lib
1701
+ - sigh/lib
1698
1702
  - cert/lib
1699
- - scan/lib
1700
- - spaceship/lib
1701
- - pem/lib
1702
- - credentials_manager/lib
1703
1703
  required_ruby_version: !ruby/object:Gem::Requirement
1704
1704
  requirements:
1705
1705
  - - ">="