fastlane 2.86.0.beta.20180316050051 → 2.86.0.beta.20180317050040
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/deliver/app_screenshot.rb +4 -4
- data/deliver/lib/deliver/commands_generator.rb +1 -1
- data/deliver/lib/deliver/options.rb +5 -0
- data/deliver/lib/deliver/runner.rb +9 -1
- data/deliver/lib/deliver/submit_for_review.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +8 -2
- data/fastlane/lib/fastlane/actions/badge.rb +1 -1
- data/fastlane/lib/fastlane/actions/crashlytics.rb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +18 -15
- data/fastlane/lib/fastlane/actions/get_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +68 -84
- data/fastlane/lib/fastlane/actions/hockey.rb +4 -4
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/installr.rb +1 -1
- data/fastlane/lib/fastlane/actions/oclint.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +1 -1
- data/fastlane/lib/fastlane/actions/sonar.rb +1 -1
- data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
- data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
- data/fastlane/lib/fastlane/actions/tryouts.rb +2 -2
- data/fastlane/lib/fastlane/actions/typetalk.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +2 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +2 -2
- data/fastlane/lib/fastlane/actions/verify_xcode.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +1 -1
- data/fastlane/lib/fastlane/configuration_helper.rb +1 -1
- data/fastlane/lib/fastlane/lane_manager.rb +4 -4
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -1
- data/fastlane/lib/fastlane/runner.rb +2 -2
- data/fastlane/lib/fastlane/server/socket_server.rb +17 -3
- data/fastlane/lib/fastlane/setup/setup.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -4
- data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -5
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -2
- data/fastlane_core/lib/fastlane_core/project.rb +6 -5
- data/fastlane_core/lib/fastlane_core/tool_collector.rb +1 -1
- data/frameit/lib/frameit/editor.rb +2 -2
- data/gym/lib/gym/generators/build_command_generator.rb +0 -1
- data/match/lib/match/git_helper.rb +1 -1
- data/match/lib/match/options.rb +1 -1
- data/match/lib/match/runner.rb +3 -3
- data/pilot/lib/pilot/build_manager.rb +3 -3
- data/scan/lib/scan/slack_poster.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +0 -1
- data/scan/lib/scan/test_result_parser.rb +1 -1
- data/sigh/lib/sigh/runner.rb +1 -1
- data/snapshot/lib/snapshot/options.rb +8 -0
- data/snapshot/lib/snapshot/runner.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +28 -1
- data/spaceship/lib/spaceship/client.rb +4 -4
- data/spaceship/lib/spaceship/du/du_client.rb +1 -1
- data/spaceship/lib/spaceship/launcher.rb +1 -1
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +4 -4
- data/spaceship/lib/spaceship/tunes/application.rb +34 -0
- data/spaceship/lib/spaceship/tunes/build_train.rb +1 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -4
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da2c95e01cab5bb5882134041dd36ddc2032ec65
|
4
|
+
data.tar.gz: 4fda933db2786f9093f4706793e5ae11e817a8e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04611c3cebac2bed102627c2c3cdf6623193ec4bc944903076236a349b589e62b706d0947cd5b200b070b2e686e6297ebfd5734e75a7e947ffcf5cc724d89571
|
7
|
+
data.tar.gz: ff99f8a53d0ad99e2d41f77f1f93ba3ae399b69c5c02a8a243252dd573e7a041ca93d0974d8ef9e59f28f6de2265319e70237192ac29fcf57b220fbf68ccac20
|
@@ -29,7 +29,7 @@ module CredentialsManager
|
|
29
29
|
|
30
30
|
path ||= self.class.default_path
|
31
31
|
|
32
|
-
if path
|
32
|
+
if path && File.exist?(path) # it might not exist, we still want to use the default values
|
33
33
|
full_path = File.expand_path(path)
|
34
34
|
Dir.chdir(File.expand_path('..', path)) do
|
35
35
|
content = File.read(full_path, encoding: "utf-8")
|
@@ -232,7 +232,7 @@ module Deliver
|
|
232
232
|
def self.calculate_screen_size(path)
|
233
233
|
size = FastImage.size(path)
|
234
234
|
|
235
|
-
UI.user_error!("Could not find or parse file at path '#{path}'") if size.nil?
|
235
|
+
UI.user_error!("Could not find or parse file at path '#{path}'") if size.nil? || size.count == 0
|
236
236
|
|
237
237
|
# Walk up two directories and test if we need to handle a platform that doesn't support landscape
|
238
238
|
path_component = Pathname.new(path).each_filename.to_a[-3]
|
@@ -246,12 +246,12 @@ module Deliver
|
|
246
246
|
devices.each do |device_type, array|
|
247
247
|
array.each do |resolution|
|
248
248
|
if skip_landscape
|
249
|
-
if size[0] == resolution[0]
|
249
|
+
if size[0] == (resolution[0]) && size[1] == (resolution[1]) # portrait
|
250
250
|
return device_type
|
251
251
|
end
|
252
252
|
else
|
253
|
-
if (size[0] == resolution[0]
|
254
|
-
(size[1] == resolution[0]
|
253
|
+
if (size[0] == (resolution[0]) && size[1] == (resolution[1])) || # portrait
|
254
|
+
(size[1] == (resolution[0]) && size[0] == (resolution[1])) # landscape
|
255
255
|
return device_type
|
256
256
|
end
|
257
257
|
end
|
@@ -102,7 +102,7 @@ module Deliver
|
|
102
102
|
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
103
103
|
|
104
104
|
c.action do |args, options|
|
105
|
-
if File.exist?("Deliverfile")
|
105
|
+
if File.exist?("Deliverfile") || File.exist?("fastlane/Deliverfile")
|
106
106
|
UI.important("You already have a running deliver setup in this directory")
|
107
107
|
return 0
|
108
108
|
end
|
@@ -122,6 +122,11 @@ module Deliver
|
|
122
122
|
description: "Submit the new version for Review after uploading everything",
|
123
123
|
is_string: false,
|
124
124
|
default_value: false),
|
125
|
+
FastlaneCore::ConfigItem.new(key: :reject_if_possible,
|
126
|
+
env_name: "DELIVER_REJECT_IF_POSSIBLE",
|
127
|
+
description: "Rejects the previously submitted build if it's in a state where it's possible",
|
128
|
+
is_string: false,
|
129
|
+
default_value: false),
|
125
130
|
FastlaneCore::ConfigItem.new(key: :automatic_release,
|
126
131
|
description: "Should the app be automatically released once it's approved?",
|
127
132
|
is_string: false,
|
@@ -44,8 +44,9 @@ module Deliver
|
|
44
44
|
|
45
45
|
UI.success("Finished the upload to iTunes Connect") unless options[:skip_binary_upload]
|
46
46
|
|
47
|
-
|
47
|
+
reject_version_if_possible if options[:reject_if_possible]
|
48
48
|
|
49
|
+
precheck_success = precheck_app
|
49
50
|
submit_for_review if options[:submit_for_review] && precheck_success
|
50
51
|
end
|
51
52
|
|
@@ -160,6 +161,13 @@ module Deliver
|
|
160
161
|
UI.user_error!("Could not upload binary to iTunes Connect. Check out the error above", show_github_issues: true) unless result
|
161
162
|
end
|
162
163
|
|
164
|
+
def reject_version_if_possible
|
165
|
+
app = options[:app]
|
166
|
+
if app.reject_version_if_possible!
|
167
|
+
UI.success("Successfully rejected previous version!")
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
163
171
|
def submit_for_review
|
164
172
|
SubmitForReview.new.submit!(options)
|
165
173
|
end
|
@@ -33,7 +33,7 @@ module Deliver
|
|
33
33
|
app = options[:app]
|
34
34
|
v = app.edit_version
|
35
35
|
|
36
|
-
if options[:build_number]
|
36
|
+
if options[:build_number] && options[:build_number] != "latest"
|
37
37
|
UI.message("Selecting existing build-number: #{options[:build_number]}")
|
38
38
|
build = v.candidate_builds.detect { |a| a.build_version == options[:build_number] }
|
39
39
|
unless build
|
@@ -24,7 +24,8 @@ module Fastlane
|
|
24
24
|
unless version_number
|
25
25
|
# Automatically fetch the latest version in testflight
|
26
26
|
begin
|
27
|
-
|
27
|
+
train_numbers = app.all_build_train_numbers(platform: platform)
|
28
|
+
testflight_version = self.order_versions(train_numbers).last
|
28
29
|
rescue
|
29
30
|
testflight_version = params[:version]
|
30
31
|
end
|
@@ -40,7 +41,8 @@ module Fastlane
|
|
40
41
|
UI.message("Fetching the latest build number for version #{version_number}")
|
41
42
|
|
42
43
|
begin
|
43
|
-
|
44
|
+
build_numbers = app.all_builds_for_train(train: version_number, platform: platform).map(&:build_version)
|
45
|
+
build_nr = self.order_versions(build_numbers).last
|
44
46
|
if build_nr.nil? && params[:initial_build_number]
|
45
47
|
UI.message("Could not find a build on iTC. Using supplied 'initial_build_number' option")
|
46
48
|
build_nr = params[:initial_build_number]
|
@@ -54,6 +56,10 @@ module Fastlane
|
|
54
56
|
Actions.lane_context[SharedValues::LATEST_BUILD_NUMBER] = build_nr
|
55
57
|
end
|
56
58
|
|
59
|
+
def self.order_versions(versions)
|
60
|
+
versions.map(&:to_s).sort_by { |v| Gem::Version.new(v) }
|
61
|
+
end
|
62
|
+
|
57
63
|
#####################################################
|
58
64
|
# @!group Documentation
|
59
65
|
#####################################################
|
@@ -74,7 +74,7 @@ module Fastlane
|
|
74
74
|
description: "Add your custom overlay/badge image",
|
75
75
|
optional: true,
|
76
76
|
verify_block: proc do |value|
|
77
|
-
UI.user_error!("custom should be a valid file path") unless value
|
77
|
+
UI.user_error!("custom should be a valid file path") unless value && File.exist?(value)
|
78
78
|
end),
|
79
79
|
FastlaneCore::ConfigItem.new(key: :no_badge,
|
80
80
|
env_name: "FL_BADGE_NO_BADGE",
|
@@ -64,7 +64,7 @@ module Fastlane
|
|
64
64
|
def self.available_options
|
65
65
|
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
|
66
66
|
|
67
|
-
if platform == :ios
|
67
|
+
if platform == :ios || platform.nil?
|
68
68
|
ipa_path_default = Dir["*.ipa"].sort_by { |x| File.mtime(x) }.last
|
69
69
|
end
|
70
70
|
|
@@ -51,14 +51,13 @@ module Fastlane
|
|
51
51
|
message << "(#{build_number})" if build_number
|
52
52
|
UI.message(message.join(" "))
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
if version && version != train_number
|
54
|
+
app.tunes_all_build_trains(platform: platform).each do |train|
|
55
|
+
UI.verbose("Found train: #{train}, comparing to supplied version: #{version}")
|
56
|
+
if version && version != train.version_string
|
58
57
|
UI.verbose("Version #{version} doesn't match: #{train_number}")
|
59
58
|
next
|
60
59
|
end
|
61
|
-
app.
|
60
|
+
app.tunes_all_builds_for_train(train: train.version_string, platform: platform).each do |build|
|
62
61
|
UI.verbose("Found build version: #{build.build_version}, comparing to supplied build_number: #{build_number}")
|
63
62
|
if build_number && build.build_version != build_number
|
64
63
|
UI.verbose("build_version: #{build.build_version} doesn't match: #{build_number}")
|
@@ -68,23 +67,18 @@ module Fastlane
|
|
68
67
|
begin
|
69
68
|
# need to call reload here or dsym_url is nil
|
70
69
|
UI.verbose("Build_version: #{build.build_version} matches #{build_number}, grabbing dsym_url")
|
71
|
-
build.
|
72
|
-
download_url =
|
70
|
+
build_details = app.tunes_build_details(train: train.version_string, build_number: build.build_version, platform: platform)
|
71
|
+
download_url = build_details.dsym_url
|
73
72
|
UI.verbose("dsym_url: #{download_url}")
|
74
73
|
rescue Spaceship::TunesClient::ITunesConnectError => ex
|
75
74
|
UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
|
76
75
|
end
|
77
76
|
|
78
77
|
if download_url
|
79
|
-
|
80
|
-
path = write_dsym(result, app.bundle_id, train_number, build.build_version, output_directory)
|
81
|
-
UI.success("🔑 Successfully downloaded dSYM file for #{train_number} - #{build.build_version} to '#{path}'")
|
82
|
-
|
83
|
-
Actions.lane_context[SharedValues::DSYM_PATHS] ||= []
|
84
|
-
Actions.lane_context[SharedValues::DSYM_PATHS] << File.expand_path(path)
|
78
|
+
self.download(download_url, app.bundle_id, train.version_string, build.build_version, output_directory)
|
85
79
|
break if build_number
|
86
80
|
else
|
87
|
-
UI.message("No dSYM URL for #{build.build_version} (#{
|
81
|
+
UI.message("No dSYM URL for #{build.build_version} (#{train.version_string})")
|
88
82
|
end
|
89
83
|
end
|
90
84
|
end
|
@@ -95,6 +89,15 @@ module Fastlane
|
|
95
89
|
end
|
96
90
|
# rubocop:enable Metrics/PerceivedComplexity
|
97
91
|
|
92
|
+
def self.download(download_url, bundle_id, train_number, build_version, output_directory)
|
93
|
+
result = self.download_file(download_url)
|
94
|
+
path = write_dsym(result, bundle_id, train_number, build_version, output_directory)
|
95
|
+
UI.success("🔑 Successfully downloaded dSYM file for #{train_number} - #{build_version} to '#{path}'")
|
96
|
+
|
97
|
+
Actions.lane_context[SharedValues::DSYM_PATHS] ||= []
|
98
|
+
Actions.lane_context[SharedValues::DSYM_PATHS] << File.expand_path(path)
|
99
|
+
end
|
100
|
+
|
98
101
|
def self.write_dsym(data, bundle_id, train_number, build_number, output_directory)
|
99
102
|
file_name = "#{bundle_id}-#{train_number}-#{build_number}.dSYM.zip"
|
100
103
|
if output_directory
|
@@ -104,7 +107,7 @@ module Fastlane
|
|
104
107
|
file_name
|
105
108
|
end
|
106
109
|
|
107
|
-
def self.
|
110
|
+
def self.download_file(url)
|
108
111
|
uri = URI.parse(url)
|
109
112
|
http = Net::HTTP.new(uri.host, uri.port)
|
110
113
|
http.use_ssl = (uri.scheme == "https")
|
@@ -61,7 +61,7 @@ module Fastlane
|
|
61
61
|
optional: true,
|
62
62
|
verify_block: proc do |value|
|
63
63
|
UI.user_error!("Please pass the path to the project, not the workspace") if value.end_with?(".xcworkspace")
|
64
|
-
UI.user_error!("Could not find Xcode project") if !File.exist?(value)
|
64
|
+
UI.user_error!("Could not find Xcode project") if !File.exist?(value) && !Helper.test?
|
65
65
|
end),
|
66
66
|
FastlaneCore::ConfigItem.new(key: :hide_error_when_versioning_disabled,
|
67
67
|
env_name: "FL_BUILD_NUMBER_HIDE_ERROR_WHEN_VERSIONING_DISABLED",
|
@@ -4,89 +4,79 @@ module Fastlane
|
|
4
4
|
require 'shellwords'
|
5
5
|
|
6
6
|
def self.run(params)
|
7
|
-
# More information about how to set up your project and how it works:
|
8
|
-
# https://developer.apple.com/library/ios/qa/qa1827/_index.html
|
9
|
-
|
10
7
|
folder = params[:xcodeproj] ? File.join(params[:xcodeproj], '..') : '.'
|
8
|
+
target_name = params[:target]
|
9
|
+
configuration = params[:configuration]
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
# Get version_number
|
12
|
+
project = get_project!(folder)
|
13
|
+
target = get_target!(project, target_name)
|
14
|
+
plist_file = get_plist!(folder, target, configuration)
|
15
|
+
version_number = get_version_number!(plist_file)
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
# Store the number in the shared hash
|
18
|
+
Actions.lane_context[SharedValues::VERSION_NUMBER] = version_number
|
19
|
+
|
20
|
+
# Return the version number because Swift might need this return value
|
21
|
+
return version_number
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
if Helper.test?
|
31
|
-
results = [
|
32
|
-
'$(date +%s)n /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"n',
|
33
|
-
'"SampleProject.xcodeproj/../TargetA/TargetA-Info.plist"=4.3.2',
|
34
|
-
'"SampleProject.xcodeproj/../TargetATests/Info.plist"=4.3.2',
|
35
|
-
'"SampleProject.xcodeproj/../TargetB/TargetB-Info.plist"=5.4.3',
|
36
|
-
'"SampleProject.xcodeproj/../TargetBTests/Info.plist"=5.4.3',
|
37
|
-
'"SampleProject.xcodeproj/../SampleProject/supporting_files/TargetC_internal-Info.plist"=7.5.2',
|
38
|
-
'"SampleProject.xcodeproj/../SampleProject/supporting_files/TargetC_production-Info.plist"=6.4.9',
|
39
|
-
'"SampleProject.xcodeproj/../SampleProject_tests/Info.plist"=1.0'
|
40
|
-
]
|
24
|
+
def self.get_project!(folder)
|
25
|
+
require 'xcodeproj'
|
26
|
+
project_path = Dir.glob("#{folder}/*.xcodeproj").first
|
27
|
+
if project_path
|
28
|
+
return Xcodeproj::Project.open(project_path)
|
41
29
|
else
|
42
|
-
|
30
|
+
UI.user_error!("Unable to find Xcode project in folder: #{folder}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.get_target!(project, target_name)
|
35
|
+
targets = project.targets
|
36
|
+
|
37
|
+
# Prompt targets if no name
|
38
|
+
unless target_name
|
39
|
+
options = targets.map(&:name)
|
40
|
+
target_name = UI.select("What target would you like to use?", options)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Find target
|
44
|
+
target = targets.find do |t|
|
45
|
+
t.name == target_name
|
43
46
|
end
|
47
|
+
UI.user_error!("Cannot find target named '#{target_name}'") unless target
|
44
48
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
49
|
+
target
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.get_plist!(folder, target, configuration = nil)
|
53
|
+
plist_files = target.resolved_build_setting("INFOPLIST_FILE")
|
54
|
+
plist_files_count = plist_files.values.compact.uniq.count
|
55
|
+
|
56
|
+
# Get plist file for specified configuration
|
57
|
+
# Or: Prompt for configuration if plist has different files in each configurations
|
58
|
+
# Else: Get first(only) plist value
|
59
|
+
if configuration
|
60
|
+
plist_file = plist_files[configuration]
|
61
|
+
elsif plist_files_count > 1
|
62
|
+
options = plist_files.keys
|
63
|
+
selected = UI.select("What build configuration would you like to use?", options)
|
64
|
+
plist_file = plist_files[selected]
|
56
65
|
else
|
57
|
-
|
58
|
-
# matching the specified target
|
59
|
-
scheme_string = "/#{scheme}"
|
60
|
-
target_string = "/#{target}/"
|
61
|
-
plist_target_string = "/#{target}-"
|
62
|
-
results.any? do |result|
|
63
|
-
if !target.empty?
|
64
|
-
if result.include?(target_string)
|
65
|
-
line = result
|
66
|
-
break
|
67
|
-
elsif result.include?(plist_target_string)
|
68
|
-
line = result
|
69
|
-
break
|
70
|
-
end
|
71
|
-
else
|
72
|
-
if result.include?(scheme_string)
|
73
|
-
line = result
|
74
|
-
break
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
66
|
+
plist_file = plist_files.values.first
|
78
67
|
end
|
79
68
|
|
80
|
-
|
69
|
+
plist_file = File.absolute_path(File.join(folder, plist_file))
|
70
|
+
UI.user_error!("Cannot find plist file: #{plist_file}") unless File.exist?(plist_file)
|
81
71
|
|
82
|
-
|
83
|
-
|
72
|
+
plist_file
|
73
|
+
end
|
84
74
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
75
|
+
def self.get_version_number!(plist_file)
|
76
|
+
plist = Xcodeproj::Plist.read_from_path(plist_file)
|
77
|
+
UI.user_error!("Unable to read plist: #{plist_file}") unless plist
|
78
|
+
|
79
|
+
plist["CFBundleShortVersionString"]
|
90
80
|
end
|
91
81
|
|
92
82
|
#####################################################
|
@@ -99,9 +89,7 @@ module Fastlane
|
|
99
89
|
|
100
90
|
def self.details
|
101
91
|
[
|
102
|
-
"This action will return the current version number set on your project."
|
103
|
-
"You first have to set up your Xcode project, if you haven't done it already:",
|
104
|
-
"https://developer.apple.com/library/ios/qa/qa1827/_index.html"
|
92
|
+
"This action will return the current version number set on your project."
|
105
93
|
].join(' ')
|
106
94
|
end
|
107
95
|
|
@@ -113,19 +101,15 @@ module Fastlane
|
|
113
101
|
optional: true,
|
114
102
|
verify_block: proc do |value|
|
115
103
|
UI.user_error!("Please pass the path to the project, not the workspace") if value.end_with?(".xcworkspace")
|
116
|
-
UI.user_error!("Could not find Xcode project at path '#{File.expand_path(value)}'") if !File.exist?(value)
|
104
|
+
UI.user_error!("Could not find Xcode project at path '#{File.expand_path(value)}'") if !File.exist?(value) && !Helper.test?
|
117
105
|
end),
|
118
|
-
FastlaneCore::ConfigItem.new(key: :scheme,
|
119
|
-
env_name: "FL_VERSION_NUMBER_SCHEME",
|
120
|
-
description: "Specify a specific scheme if you have multiple per project, optional. " \
|
121
|
-
"This parameter is deprecated and will be removed in a future release. " \
|
122
|
-
"Please use the 'target' parameter instead. The behavior of this parameter " \
|
123
|
-
"is currently undefined if your scheme name doesn't match your target name",
|
124
|
-
optional: true,
|
125
|
-
deprecated: true),
|
126
106
|
FastlaneCore::ConfigItem.new(key: :target,
|
127
107
|
env_name: "FL_VERSION_NUMBER_TARGET",
|
128
108
|
description: "Specify a specific target if you have multiple per project, optional",
|
109
|
+
optional: true),
|
110
|
+
FastlaneCore::ConfigItem.new(key: :configuration,
|
111
|
+
env_name: "FL_VERSION_NUMBER_CONFIGURATION",
|
112
|
+
description: "Specify a specific configuration if you have multiple per target, optional",
|
129
113
|
optional: true)
|
130
114
|
]
|
131
115
|
end
|
@@ -137,7 +121,7 @@ module Fastlane
|
|
137
121
|
end
|
138
122
|
|
139
123
|
def self.authors
|
140
|
-
["Liquidsoul"]
|
124
|
+
["Liquidsoul", "joshdholtz"]
|
141
125
|
end
|
142
126
|
|
143
127
|
def self.is_supported?(platform)
|
@@ -39,7 +39,7 @@ module Fastlane
|
|
39
39
|
def self.upload_build(api_token, ipa, options)
|
40
40
|
connection = self.connection(options)
|
41
41
|
|
42
|
-
options[:ipa] = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa
|
42
|
+
options[:ipa] = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa && File.exist?(ipa)
|
43
43
|
|
44
44
|
dsym_filename = options.delete(:dsym_filename)
|
45
45
|
if dsym_filename
|
@@ -74,11 +74,11 @@ module Fastlane
|
|
74
74
|
options.delete(:apk)
|
75
75
|
app_id = options.delete(:public_identifier)
|
76
76
|
|
77
|
-
ipaio = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa
|
77
|
+
ipaio = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa && File.exist?(ipa)
|
78
78
|
dsym = options.delete(:dsym)
|
79
79
|
|
80
80
|
if dsym
|
81
|
-
dsym_io = Faraday::UploadIO.new(dsym, 'application/octet-stream') if dsym
|
81
|
+
dsym_io = Faraday::UploadIO.new(dsym, 'application/octet-stream') if dsym && File.exist?(dsym)
|
82
82
|
end
|
83
83
|
|
84
84
|
# https://support.hockeyapp.net/discussions/problems/83559
|
@@ -206,7 +206,7 @@ module Fastlane
|
|
206
206
|
sensitive: true,
|
207
207
|
description: "API Token for Hockey Access",
|
208
208
|
verify_block: proc do |value|
|
209
|
-
UI.user_error!("No API token for Hockey given, pass using `api_token: 'token'`") unless value
|
209
|
+
UI.user_error!("No API token for Hockey given, pass using `api_token: 'token'`") unless value && !value.empty?
|
210
210
|
end),
|
211
211
|
FastlaneCore::ConfigItem.new(key: :ipa,
|
212
212
|
env_name: "FL_HOCKEY_IPA",
|