fastlane 2.79.0.beta.20180124010003 → 2.79.0.beta.20180125010002
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 +4 -4
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/deliver/loader.rb +1 -1
- data/fastlane/lib/fastlane/actions/apteligent.rb +1 -1
- data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +1 -1
- 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 +1 -1
- data/fastlane/lib/fastlane/actions/hg_add_tag.rb +1 -1
- data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +5 -5
- data/fastlane/lib/fastlane/actions/hg_push.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/is_ci.rb +1 -1
- data/fastlane/lib/fastlane/actions/make_changelog_from_jenkins.rb +1 -1
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -1
- data/fastlane/lib/fastlane/actions/reset_git_repo.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_build_number_repository.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_jenkins.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/actions/splunkmint.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/command_line_handler.rb +1 -1
- data/fastlane/lib/fastlane/commands_generator.rb +1 -1
- data/fastlane/lib/fastlane/configuration_helper.rb +1 -1
- data/fastlane/lib/fastlane/environment_printer.rb +2 -2
- data/fastlane/lib/fastlane/fast_file.rb +1 -1
- data/fastlane/lib/fastlane/helper/gem_helper.rb +1 -1
- data/fastlane/lib/fastlane/setup/setup.rb +1 -1
- data/fastlane/lib/fastlane/swift_lane_manager.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +1 -1
- data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -3
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +2 -2
- data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +1 -1
- data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +22 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +122 -89
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +7 -7
- data/fastlane_core/lib/fastlane_core/project.rb +1 -1
- data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
- data/fastlane_core/lib/fastlane_core/tool_collector.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +1 -1
- data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +3 -3
- data/gym/lib/gym/runner.rb +0 -1
- data/match/lib/match/encrypt.rb +1 -1
- data/scan/lib/scan/runner.rb +1 -2
- data/screengrab/lib/screengrab/android_environment.rb +2 -1
- data/snapshot/lib/snapshot/screenshot_rotate.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11e6756a9c895869f254e318c69c43ed3baaa59e
|
4
|
+
data.tar.gz: 8055f34b7f3e1867796fb9b3c7f843f7357d5b60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a5e32e2274caace14cb5077d37800c5127ed8387d9c02f49692b2153c7fdd4ec84fb4e64d97d93ea2f8f3114de16d048eae3550e824afc130c6a487f00e81c1
|
7
|
+
data.tar.gz: 7533072ceaa9eacb2008edcfc70703bb9c4a3e67adfead9d3d5655a8bc258285d79a51675987d37c841ce240a7b4b46e12a3823f89838ed33e3034cf338ce1cb
|
@@ -32,7 +32,7 @@ module CredentialsManager
|
|
32
32
|
if path and 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
|
-
content = File.read(full_path)
|
35
|
+
content = File.read(full_path, encoding: "utf-8")
|
36
36
|
|
37
37
|
# From https://github.com/orta/danger/blob/master/lib/danger/danger_core/dangerfile.rb
|
38
38
|
if content.tr!('“”‘’‛', %(""'''))
|
@@ -22,7 +22,7 @@ module Deliver
|
|
22
22
|
def self.language_folders(root, ignore_validation)
|
23
23
|
folders = Dir.glob(File.join(root, '*'))
|
24
24
|
|
25
|
-
if Helper.
|
25
|
+
if Helper.test?
|
26
26
|
available_languages = FastlaneCore::Languages::ALL_LANGUAGES
|
27
27
|
else
|
28
28
|
available_languages = Spaceship::Tunes.client.available_languages.sort
|
@@ -11,7 +11,7 @@ module Fastlane
|
|
11
11
|
# will reanable it when it is fixed
|
12
12
|
# result = Fastlane::Actions.sh(command.join(' '), log: false)
|
13
13
|
shell_command = command.join(' ')
|
14
|
-
return shell_command if Helper.
|
14
|
+
return shell_command if Helper.test?
|
15
15
|
result = Actions.sh(shell_command)
|
16
16
|
fail_on_error(result)
|
17
17
|
end
|
@@ -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) and !Helper.
|
64
|
+
UI.user_error!("Could not find Xcode project") if !File.exist?(value) and !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",
|
@@ -113,7 +113,7 @@ module Fastlane
|
|
113
113
|
optional: true,
|
114
114
|
verify_block: proc do |value|
|
115
115
|
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) and !Helper.
|
116
|
+
UI.user_error!("Could not find Xcode project at path '#{File.expand_path(value)}'") if !File.exist?(value) and !Helper.test?
|
117
117
|
end),
|
118
118
|
FastlaneCore::ConfigItem.new(key: :scheme,
|
119
119
|
env_name: "FL_VERSION_NUMBER_SCHEME",
|
@@ -10,17 +10,17 @@ module Fastlane
|
|
10
10
|
|
11
11
|
xcodeproj_path = params[:xcodeproj] ? File.expand_path(File.join('.', params[:xcodeproj])) : nil
|
12
12
|
|
13
|
-
if Helper.
|
13
|
+
if Helper.test?
|
14
14
|
xcodeproj_path = "/tmp/Test.xcodeproj"
|
15
15
|
end
|
16
16
|
|
17
17
|
# get the repo root path
|
18
|
-
repo_path = Helper.
|
18
|
+
repo_path = Helper.test? ? '/tmp/repo' : Actions.sh('hg root').strip
|
19
19
|
repo_pathname = Pathname.new(repo_path)
|
20
20
|
|
21
21
|
if xcodeproj_path
|
22
22
|
# ensure that the xcodeproj passed in was OK
|
23
|
-
unless Helper.
|
23
|
+
unless Helper.test?
|
24
24
|
UI.user_error!("Could not find the specified xcodeproj: #{xcodeproj_path}") unless File.directory?(xcodeproj_path)
|
25
25
|
end
|
26
26
|
else
|
@@ -42,7 +42,7 @@ module Fastlane
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# find the pbxproj path, relative to hg directory
|
45
|
-
if Helper.
|
45
|
+
if Helper.test?
|
46
46
|
hg_dirty_files = params[:test_dirty_files].split(",")
|
47
47
|
expected_changed_files = params[:test_expected_files].split(",")
|
48
48
|
else
|
@@ -94,7 +94,7 @@ module Fastlane
|
|
94
94
|
|
95
95
|
# create a commit with a message
|
96
96
|
command = "hg commit -m '#{params[:message]}'"
|
97
|
-
return command if Helper.
|
97
|
+
return command if Helper.test?
|
98
98
|
begin
|
99
99
|
Actions.sh(command)
|
100
100
|
|
@@ -8,7 +8,7 @@ module Fastlane
|
|
8
8
|
command << '--force' if params[:force]
|
9
9
|
command << params[:destination] unless params[:destination].empty?
|
10
10
|
|
11
|
-
return command.join(' ') if Helper.
|
11
|
+
return command.join(' ') if Helper.test?
|
12
12
|
|
13
13
|
Actions.sh(command.join(' '))
|
14
14
|
UI.success('Successfully pushed changes to remote 🚀.')
|
@@ -74,7 +74,7 @@ module Fastlane
|
|
74
74
|
optional: true,
|
75
75
|
verify_block: proc do |value|
|
76
76
|
UI.user_error!("Please pass the path to the project, not the workspace") if value.end_with?(".xcworkspace")
|
77
|
-
UI.user_error!("Could not find Xcode project") if !File.exist?(value) and !Helper.
|
77
|
+
UI.user_error!("Could not find Xcode project") if !File.exist?(value) and !Helper.test?
|
78
78
|
end)
|
79
79
|
]
|
80
80
|
end
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
7
7
|
|
8
8
|
changelog = ""
|
9
9
|
|
10
|
-
if Helper.
|
10
|
+
if Helper.ci? || Helper.test?
|
11
11
|
# The "BUILD_URL" environment variable is set automatically by Jenkins in every build
|
12
12
|
jenkins_api_url = URI(ENV["BUILD_URL"] + "api/json\?wrapper\=changes\&xpath\=//changeSet//comment")
|
13
13
|
begin
|
@@ -50,7 +50,7 @@ module Fastlane
|
|
50
50
|
verify_block: proc do |value|
|
51
51
|
path = File.expand_path(value)
|
52
52
|
UI.user_error!("Please pass the path to the project, not the workspace") if path.end_with?(".xcworkspace")
|
53
|
-
UI.user_error!("Could not find Xcode project at #{path}") unless Helper.
|
53
|
+
UI.user_error!("Could not find Xcode project at #{path}") unless Helper.test? || File.exist?(path)
|
54
54
|
end)
|
55
55
|
]
|
56
56
|
end
|
@@ -3,7 +3,7 @@ module Fastlane
|
|
3
3
|
class SetupTravisAction < Action
|
4
4
|
def self.run(params)
|
5
5
|
# Stop if not executed by CI
|
6
|
-
if !Helper.
|
6
|
+
if !Helper.ci? && !params[:force]
|
7
7
|
UI.message("Currently not running on CI system, skipping travis setup")
|
8
8
|
return
|
9
9
|
end
|
@@ -37,7 +37,7 @@ module Fastlane
|
|
37
37
|
|
38
38
|
slack_attachment = generate_slack_attachments(options)
|
39
39
|
|
40
|
-
return [notifier, slack_attachment] if Helper.
|
40
|
+
return [notifier, slack_attachment] if Helper.test? # tests will verify the slack attachments and other properties
|
41
41
|
|
42
42
|
begin
|
43
43
|
results = notifier.ping('', icon_url: icon_url, attachments: [slack_attachment])
|
@@ -14,7 +14,7 @@ module Fastlane
|
|
14
14
|
# will reanable it when it is fixed
|
15
15
|
# result = Fastlane::Actions.sh(command.join(' '), log: false)
|
16
16
|
shell_command = command.join(' ')
|
17
|
-
result = Helper.
|
17
|
+
result = Helper.test? ? shell_command : `#{shell_command}`
|
18
18
|
fail_on_error(result)
|
19
19
|
|
20
20
|
result
|
@@ -48,7 +48,7 @@ module Fastlane
|
|
48
48
|
description: "The path to the entitlement file which contains the app group identifiers", # a short description of this parameter
|
49
49
|
verify_block: proc do |value|
|
50
50
|
UI.user_error!("Please pass a path to an entitlements file. ") unless value.include?(".entitlements")
|
51
|
-
UI.user_error!("Could not find entitlements file") if !File.exist?(value) and !Helper.
|
51
|
+
UI.user_error!("Could not find entitlements file") if !File.exist?(value) and !Helper.test?
|
52
52
|
end),
|
53
53
|
FastlaneCore::ConfigItem.new(key: :app_group_identifiers,
|
54
54
|
env_name: "FL_UPDATE_APP_GROUP_IDENTIFIER_APP_GROUP_IDENTIFIERS",
|
@@ -56,7 +56,7 @@ module Fastlane
|
|
56
56
|
description: "The path to the entitlement file which contains the iCloud container identifiers",
|
57
57
|
verify_block: proc do |value|
|
58
58
|
UI.user_error!("Please pass a path to an entitlements file. ") unless value.include?(".entitlements")
|
59
|
-
UI.user_error!("Could not find entitlements file") if !File.exist?(value) and !Helper.
|
59
|
+
UI.user_error!("Could not find entitlements file") if !File.exist?(value) and !Helper.test?
|
60
60
|
end),
|
61
61
|
FastlaneCore::ConfigItem.new(key: :icloud_container_identifiers,
|
62
62
|
env_name: "FL_UPDATE_ICLOUD_CONTAINER_IDENTIFIERS_IDENTIFIERS",
|
@@ -26,7 +26,7 @@ module Fastlane
|
|
26
26
|
lane = platform_lane_info[0]
|
27
27
|
end
|
28
28
|
|
29
|
-
dot_env = Helper.
|
29
|
+
dot_env = Helper.test? ? nil : options.env
|
30
30
|
|
31
31
|
if FastlaneCore::FastlaneFolder.swift?
|
32
32
|
disable_runner_upgrades = options.disable_runner_upgrades || false
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
7
7
|
# default use case
|
8
8
|
return FastlaneCore::Configuration.create(action.available_options, params)
|
9
9
|
elsif first_element
|
10
|
-
UI.error("Old configuration format for action '#{action}'") if Helper.
|
10
|
+
UI.error("Old configuration format for action '#{action}'") if Helper.test?
|
11
11
|
return params
|
12
12
|
else
|
13
13
|
|
@@ -258,7 +258,7 @@ module Fastlane
|
|
258
258
|
env_output << "<summary>`#{fastlane_path}`</summary>\n"
|
259
259
|
env_output << "\n"
|
260
260
|
env_output << "```ruby\n"
|
261
|
-
env_output << File.read(fastlane_path)
|
261
|
+
env_output << File.read(fastlane_path, encoding: "utf-8")
|
262
262
|
env_output << "\n```\n"
|
263
263
|
env_output << "</details>"
|
264
264
|
else
|
@@ -272,7 +272,7 @@ module Fastlane
|
|
272
272
|
env_output << "<summary>`#{appfile_path}`</summary>\n"
|
273
273
|
env_output << "\n"
|
274
274
|
env_output << "```ruby\n"
|
275
|
-
env_output << File.read(appfile_path)
|
275
|
+
env_output << File.read(appfile_path, encoding: "utf-8")
|
276
276
|
env_output << "\n```\n"
|
277
277
|
env_output << "</details>"
|
278
278
|
else
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
return unless (path || '').length > 0
|
17
17
|
UI.user_error!("Could not find Fastfile at path '#{path}'") unless File.exist?(path)
|
18
18
|
@path = File.expand_path(path)
|
19
|
-
content = File.read(path)
|
19
|
+
content = File.read(path, encoding: "utf-8")
|
20
20
|
|
21
21
|
# From https://github.com/orta/danger/blob/master/lib/danger/Dangerfile.rb
|
22
22
|
if content.tr!('“”‘’‛', %(""'''))
|
@@ -18,7 +18,7 @@ module Fastlane
|
|
18
18
|
UI.important(" gem '#{gem_name}'")
|
19
19
|
UI.error("and run `bundle install`")
|
20
20
|
|
21
|
-
UI.user_error!("You have to install the `#{gem_name}` gem on this machine") unless Helper.
|
21
|
+
UI.user_error!("You have to install the `#{gem_name}` gem on this machine") unless Helper.test?
|
22
22
|
end
|
23
23
|
true
|
24
24
|
end
|
@@ -34,7 +34,7 @@ module Fastlane
|
|
34
34
|
# Start the setup process
|
35
35
|
# rubocop:disable Metrics/BlockNesting
|
36
36
|
def self.start(user: nil, is_swift_fastfile: false)
|
37
|
-
if FastlaneCore::FastlaneFolder.setup? and !Helper.
|
37
|
+
if FastlaneCore::FastlaneFolder.setup? and !Helper.test?
|
38
38
|
require 'fastlane/lane_list'
|
39
39
|
Fastlane::LaneList.output(FastlaneCore::FastlaneFolder.fastfile_path)
|
40
40
|
UI.important("------------------")
|
@@ -26,7 +26,7 @@ module Fastlane
|
|
26
26
|
display_upgraded_message = false
|
27
27
|
if disable_runner_upgrades
|
28
28
|
UI.verbose("disable_runner_upgrades is true, not attempting to update the FastlaneRunner project".yellow)
|
29
|
-
elsif Helper.
|
29
|
+
elsif Helper.ci?
|
30
30
|
UI.verbose("Running in CI, not attempting to update the FastlaneRunner project".yellow)
|
31
31
|
else
|
32
32
|
display_upgraded_message = self.ensure_runner_up_to_date_fastlane!
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.79.0.beta.
|
2
|
+
VERSION = '2.79.0.beta.20180125010002'.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
|
@@ -39,6 +39,7 @@ require_relative 'fastlane_core/analytics/analytics_event_builder'
|
|
39
39
|
require_relative 'fastlane_core/analytics/analytics_ingester_client'
|
40
40
|
require_relative 'fastlane_core/analytics/analytics_session'
|
41
41
|
require_relative 'fastlane_core/tag_version'
|
42
|
+
require_relative 'fastlane_core/fastlane_pty'
|
42
43
|
|
43
44
|
# Third Party code
|
44
45
|
require 'colored'
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'ui/ui'
|
2
2
|
require_relative 'globals'
|
3
|
+
require_relative 'fastlane_pty'
|
3
4
|
|
4
5
|
module FastlaneCore
|
5
6
|
# Executes commands and takes care of error handling and more
|
@@ -19,7 +20,7 @@ module FastlaneCore
|
|
19
20
|
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
20
21
|
exts.each do |ext|
|
21
22
|
cmd_path = File.join(path, "#{cmd}#{ext}")
|
22
|
-
return cmd_path if
|
23
|
+
return cmd_path if Helper.executable?(cmd_path)
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
@@ -46,8 +47,7 @@ module FastlaneCore
|
|
46
47
|
end
|
47
48
|
|
48
49
|
begin
|
49
|
-
|
50
|
-
PTY.spawn(command) do |stdin, stdout, pid|
|
50
|
+
FastlaneCore::FastlanePty.spawn(command) do |stdin, stdout, pid|
|
51
51
|
begin
|
52
52
|
stdin.each do |l|
|
53
53
|
line = l.strip # strip so that \n gets removed
|
@@ -198,7 +198,7 @@ module FastlaneCore
|
|
198
198
|
paths += Dir["./fastlane/#{config_file_name}"]
|
199
199
|
paths += Dir["./.fastlane/#{config_file_name}"]
|
200
200
|
paths += Dir["./#{config_file_name}"]
|
201
|
-
paths += Dir["./fastlane_core/spec/fixtures/#{config_file_name}"] if Helper.
|
201
|
+
paths += Dir["./fastlane_core/spec/fixtures/#{config_file_name}"] if Helper.test?
|
202
202
|
return nil if paths.count == 0
|
203
203
|
return paths.first
|
204
204
|
end
|
@@ -231,7 +231,7 @@ module FastlaneCore
|
|
231
231
|
return value unless value.nil? and !option.optional and ask
|
232
232
|
|
233
233
|
# fallback to asking
|
234
|
-
if Helper.
|
234
|
+
if Helper.test? or !UI.interactive?
|
235
235
|
# Since we don't want to be asked on tests, we'll just call the verify block with no value
|
236
236
|
# to raise the exception that is shown when the user passes an invalid value
|
237
237
|
set(key, '')
|
@@ -31,7 +31,7 @@ module FastlaneCore
|
|
31
31
|
self.options = {}
|
32
32
|
|
33
33
|
@block_for_missing = block_for_missing
|
34
|
-
content = File.read(path)
|
34
|
+
content = File.read(path, encoding: "utf-8")
|
35
35
|
|
36
36
|
# From https://github.com/orta/danger/blob/master/lib/danger/Dangerfile.rb
|
37
37
|
if content.tr!('“”‘’‛', %(""'''))
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Source: Mix of https://github.com/fastlane/fastlane/pull/7202/files,
|
2
|
+
# https://github.com/fastlane/fastlane/pull/11384#issuecomment-356084518 and
|
3
|
+
# https://github.com/DragonBox/u3d/blob/59e471ad78ac00cb629f479dbe386c5ad2dc5075/lib/u3d_core/command_runner.rb#L88-L96
|
4
|
+
module FastlaneCore
|
5
|
+
class FastlanePty
|
6
|
+
def self.spawn(*command, &block)
|
7
|
+
require 'pty'
|
8
|
+
PTY.spawn(command) do |stdout, stdin, pid|
|
9
|
+
block.call(stdin, stdout, pid)
|
10
|
+
end
|
11
|
+
rescue LoadError
|
12
|
+
require 'open3'
|
13
|
+
Open3.popen2e(command) do |r, w, p|
|
14
|
+
yield(w, r, p.value.pid) # note the inversion
|
15
|
+
|
16
|
+
r.close
|
17
|
+
w.close
|
18
|
+
p.value.exitstatus
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -9,48 +9,21 @@ require_relative 'env'
|
|
9
9
|
|
10
10
|
module FastlaneCore
|
11
11
|
module Helper
|
12
|
-
#
|
13
|
-
#
|
14
|
-
def self.log
|
15
|
-
UI.deprecated("Helper.log is deprecated. Use `UI` class instead")
|
16
|
-
UI.current.log
|
17
|
-
end
|
18
|
-
|
19
|
-
# Runs a given command using backticks (`)
|
20
|
-
# and prints them out using the UI.command method
|
21
|
-
def self.backticks(command, print: true)
|
22
|
-
UI.command(command) if print
|
23
|
-
result = `#{command}`
|
24
|
-
UI.command_output(result) if print
|
25
|
-
return result
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return true if the currently running program is a unit test
|
29
|
-
def self.test?
|
30
|
-
Object.const_defined?("SpecHelper")
|
31
|
-
end
|
12
|
+
# fastlane
|
13
|
+
#
|
32
14
|
|
33
|
-
|
34
|
-
|
35
|
-
!
|
15
|
+
def self.fastlane_enabled?
|
16
|
+
# This is called from the root context on the first start
|
17
|
+
@enabled ||= !FastlaneCore::FastlaneFolder.path.nil?
|
36
18
|
end
|
37
19
|
|
38
|
-
#
|
39
|
-
def self.
|
40
|
-
|
20
|
+
# Checks if fastlane is enabled for this project and returns the folder where the configuration lives
|
21
|
+
def self.fastlane_enabled_folder_path
|
22
|
+
fastlane_enabled? ? FastlaneCore::FastlaneFolder.path : '.'
|
41
23
|
end
|
42
24
|
|
43
|
-
#
|
44
|
-
#
|
45
|
-
def self.json_file?(filename)
|
46
|
-
return false unless File.exist?(filename)
|
47
|
-
begin
|
48
|
-
JSON.parse(File.read(filename))
|
49
|
-
return true
|
50
|
-
rescue JSON::ParserError
|
51
|
-
return false
|
52
|
-
end
|
53
|
-
end
|
25
|
+
# fastlane installation method
|
26
|
+
#
|
54
27
|
|
55
28
|
# @return [boolean] true if executing with bundler (like 'bundle exec fastlane [action]')
|
56
29
|
def self.bundler?
|
@@ -83,6 +56,19 @@ module FastlaneCore
|
|
83
56
|
!self.bundler? && !self.contained_fastlane? && !self.homebrew? && !self.mac_app?
|
84
57
|
end
|
85
58
|
|
59
|
+
# environment
|
60
|
+
#
|
61
|
+
|
62
|
+
# @return true if the currently running program is a unit test
|
63
|
+
def self.test?
|
64
|
+
Object.const_defined?("SpecHelper")
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return true if it is enabled to execute external commands
|
68
|
+
def self.sh_enabled?
|
69
|
+
!self.test?
|
70
|
+
end
|
71
|
+
|
86
72
|
# @return [boolean] true if building in a known CI environment
|
87
73
|
def self.ci?
|
88
74
|
# Check for Jenkins, Travis CI, ... environment variables
|
@@ -113,23 +99,6 @@ module FastlaneCore
|
|
113
99
|
(/darwin/ =~ RUBY_PLATFORM) != nil
|
114
100
|
end
|
115
101
|
|
116
|
-
# Use Helper.test? and Helper.ci? instead (legacy calls)
|
117
|
-
def self.is_test?
|
118
|
-
self.test?
|
119
|
-
end
|
120
|
-
|
121
|
-
def self.is_ci?
|
122
|
-
ci?
|
123
|
-
end
|
124
|
-
|
125
|
-
def self.is_mac?
|
126
|
-
self.mac?
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.is_windows?
|
130
|
-
self.windows?
|
131
|
-
end
|
132
|
-
|
133
102
|
# Do we want to disable the colored output?
|
134
103
|
def self.colors_disabled?
|
135
104
|
FastlaneCore::Env.truthy?("FASTLANE_DISABLE_COLORS")
|
@@ -145,13 +114,13 @@ module FastlaneCore
|
|
145
114
|
return ENV["FL_BUILDLOG_PATH"] || "~/Library/Logs"
|
146
115
|
end
|
147
116
|
|
148
|
-
#
|
117
|
+
# Xcode
|
149
118
|
#
|
150
119
|
|
151
120
|
# @return the full path to the Xcode developer tools of the currently
|
152
121
|
# running system
|
153
122
|
def self.xcode_path
|
154
|
-
return "" unless self.
|
123
|
+
return "" unless self.mac?
|
155
124
|
|
156
125
|
if self.xcode_server?
|
157
126
|
# Xcode server always creates a link here
|
@@ -170,7 +139,7 @@ module FastlaneCore
|
|
170
139
|
|
171
140
|
# @return The version of the currently used Xcode installation (e.g. "7.0")
|
172
141
|
def self.xcode_version
|
173
|
-
return nil unless self.
|
142
|
+
return nil unless self.mac?
|
174
143
|
return @xcode_version if @xcode_version && @developer_dir == ENV['DEVELOPER_DIR']
|
175
144
|
|
176
145
|
xcodebuild_path = "#{xcode_path}/usr/bin/xcodebuild"
|
@@ -199,6 +168,9 @@ module FastlaneCore
|
|
199
168
|
Gem::Version.new(v) >= Gem::Version.new(version)
|
200
169
|
end
|
201
170
|
|
171
|
+
# iTMSTransporter
|
172
|
+
#
|
173
|
+
|
202
174
|
def self.transporter_java_executable_path
|
203
175
|
return File.join(self.transporter_java_path, 'bin', 'java')
|
204
176
|
end
|
@@ -224,6 +196,24 @@ module FastlaneCore
|
|
224
196
|
return File.join(self.itms_path, 'bin', 'iTMSTransporter')
|
225
197
|
end
|
226
198
|
|
199
|
+
# @return the full path to the iTMSTransporter executable
|
200
|
+
def self.itms_path
|
201
|
+
return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
|
202
|
+
return '' unless self.mac? # so tests work on Linux and Windows too
|
203
|
+
|
204
|
+
[
|
205
|
+
"../Applications/Application Loader.app/Contents/MacOS/itms",
|
206
|
+
"../Applications/Application Loader.app/Contents/itms"
|
207
|
+
].each do |path|
|
208
|
+
result = File.expand_path(File.join(self.xcode_path, path))
|
209
|
+
return result if File.exist?(result)
|
210
|
+
end
|
211
|
+
UI.user_error!("Could not find transporter at #{self.xcode_path}. Please make sure you set the correct path to your Xcode installation.")
|
212
|
+
end
|
213
|
+
|
214
|
+
# keychain
|
215
|
+
#
|
216
|
+
|
227
217
|
def self.keychain_path(keychain_name)
|
228
218
|
# Existing code expects that a keychain name will be expanded into a default path to Library/Keychains
|
229
219
|
# in the user's home directory. However, this will not allow the user to pass an absolute path
|
@@ -259,44 +249,25 @@ module FastlaneCore
|
|
259
249
|
keychain_path
|
260
250
|
end
|
261
251
|
|
262
|
-
#
|
263
|
-
|
264
|
-
return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
|
265
|
-
return '' unless self.is_mac? # so tests work on Linx too
|
266
|
-
|
267
|
-
[
|
268
|
-
"../Applications/Application Loader.app/Contents/MacOS/itms",
|
269
|
-
"../Applications/Application Loader.app/Contents/itms"
|
270
|
-
].each do |path|
|
271
|
-
result = File.expand_path(File.join(self.xcode_path, path))
|
272
|
-
return result if File.exist?(result)
|
273
|
-
end
|
274
|
-
UI.user_error!("Could not find transporter at #{self.xcode_path}. Please make sure you set the correct path to your Xcode installation.")
|
275
|
-
end
|
252
|
+
# helper methods
|
253
|
+
#
|
276
254
|
|
277
|
-
|
278
|
-
|
279
|
-
|
255
|
+
# Runs a given command using backticks (`)
|
256
|
+
# and prints them out using the UI.command method
|
257
|
+
def self.backticks(command, print: true)
|
258
|
+
UI.command(command) if print
|
259
|
+
result = `#{command}`
|
260
|
+
UI.command_output(result) if print
|
261
|
+
return result
|
280
262
|
end
|
281
263
|
|
282
|
-
#
|
283
|
-
def self.
|
284
|
-
|
264
|
+
# removes ANSI colors from string
|
265
|
+
def self.strip_ansi_colors(str)
|
266
|
+
str.gsub(/\e\[([;\d]+)?m/, '')
|
285
267
|
end
|
286
268
|
|
287
|
-
#
|
288
|
-
# e.g. File.join(Sigh::ROOT, 'lib', 'assets', 'resign.sh')
|
269
|
+
# loading indicator
|
289
270
|
#
|
290
|
-
# Path to the installed gem to load resources (e.g. resign.sh)
|
291
|
-
def self.gem_path(gem_name)
|
292
|
-
UI.deprecated('`Helper.gem_path` is deprecated. Use the `ROOT` constant from the appropriate tool module instead.')
|
293
|
-
|
294
|
-
if !Helper.is_test? and Gem::Specification.find_all_by_name(gem_name).any?
|
295
|
-
return Gem::Specification.find_by_name(gem_name).gem_dir
|
296
|
-
else
|
297
|
-
return './'
|
298
|
-
end
|
299
|
-
end
|
300
271
|
|
301
272
|
def self.should_show_loading_indicator?
|
302
273
|
return false if FastlaneCore::Env.truthy?("FASTLANE_DISABLE_ANIMATION")
|
@@ -322,5 +293,67 @@ module FastlaneCore
|
|
322
293
|
@require_fastlane_spinner.success
|
323
294
|
end
|
324
295
|
end
|
296
|
+
|
297
|
+
# files
|
298
|
+
#
|
299
|
+
|
300
|
+
# checks if a given path is an executable file
|
301
|
+
def self.executable?(cmd_path)
|
302
|
+
# no executable files on Windows, so existing is enough there
|
303
|
+
cmd_path && !File.directory?(cmd_path) && (File.executable?(cmd_path) || (self.windows? && File.exist?(cmd_path)))
|
304
|
+
end
|
305
|
+
|
306
|
+
# checks if given file is a valid json file
|
307
|
+
# base taken from: http://stackoverflow.com/a/26235831/1945875
|
308
|
+
def self.json_file?(filename)
|
309
|
+
return false unless File.exist?(filename)
|
310
|
+
begin
|
311
|
+
JSON.parse(File.read(filename))
|
312
|
+
return true
|
313
|
+
rescue JSON::ParserError
|
314
|
+
return false
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
# deprecated
|
319
|
+
#
|
320
|
+
|
321
|
+
# Use Helper.test?, Helper.ci?, Helper.mac? or Helper.windows? instead (legacy calls)
|
322
|
+
def self.is_test?
|
323
|
+
self.test?
|
324
|
+
end
|
325
|
+
|
326
|
+
def self.is_ci?
|
327
|
+
ci?
|
328
|
+
end
|
329
|
+
|
330
|
+
def self.is_mac?
|
331
|
+
self.mac?
|
332
|
+
end
|
333
|
+
|
334
|
+
def self.is_windows?
|
335
|
+
self.windows?
|
336
|
+
end
|
337
|
+
|
338
|
+
# <b>DEPRECATED:</b> Use the `ROOT` constant from the appropriate tool module instead
|
339
|
+
# e.g. File.join(Sigh::ROOT, 'lib', 'assets', 'resign.sh')
|
340
|
+
#
|
341
|
+
# Path to the installed gem to load resources (e.g. resign.sh)
|
342
|
+
def self.gem_path(gem_name)
|
343
|
+
UI.deprecated('`Helper.gem_path` is deprecated. Use the `ROOT` constant from the appropriate tool module instead.')
|
344
|
+
|
345
|
+
if !Helper.test? and Gem::Specification.find_all_by_name(gem_name).any?
|
346
|
+
return Gem::Specification.find_by_name(gem_name).gem_dir
|
347
|
+
else
|
348
|
+
return './'
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
# This method is deprecated, use the `UI` class
|
353
|
+
# https://docs.fastlane.tools/advanced/#user-input-and-output
|
354
|
+
def self.log
|
355
|
+
UI.deprecated("Helper.log is deprecated. Use `UI` class instead")
|
356
|
+
UI.current.log
|
357
|
+
end
|
325
358
|
end
|
326
359
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'pty'
|
2
1
|
require 'shellwords'
|
3
2
|
require 'fileutils'
|
4
3
|
require 'credentials_manager/account_manager'
|
5
4
|
|
6
5
|
require_relative 'features'
|
7
6
|
require_relative 'helper'
|
7
|
+
require_relative 'fastlane_pty'
|
8
8
|
|
9
9
|
module FastlaneCore
|
10
10
|
# The TransporterInputError occurs when you passed wrong inputs to the {Deliver::ItunesTransporter}
|
@@ -31,7 +31,7 @@ module FastlaneCore
|
|
31
31
|
private_constant :ERROR_REGEX, :WARNING_REGEX, :OUTPUT_REGEX, :RETURN_VALUE_REGEX, :SKIP_ERRORS
|
32
32
|
|
33
33
|
def execute(command, hide_output)
|
34
|
-
return command if Helper.
|
34
|
+
return command if Helper.test?
|
35
35
|
|
36
36
|
@errors = []
|
37
37
|
@warnings = []
|
@@ -44,7 +44,7 @@ module FastlaneCore
|
|
44
44
|
end
|
45
45
|
|
46
46
|
begin
|
47
|
-
|
47
|
+
FastlaneCore::FastlanePty.spawn(command) do |stdin, stdout, pid|
|
48
48
|
begin
|
49
49
|
stdin.each do |line|
|
50
50
|
@all_lines << line
|
@@ -113,7 +113,7 @@ module FastlaneCore
|
|
113
113
|
if $1.include?("Your Apple ID or password was entered incorrectly") or
|
114
114
|
$1.include?("This Apple ID has been locked for security reasons")
|
115
115
|
|
116
|
-
unless Helper.
|
116
|
+
unless Helper.test?
|
117
117
|
CredentialsManager::AccountManager.new(user: @user).invalid_credentials
|
118
118
|
UI.error("Please run this tool again to apply the new password")
|
119
119
|
end
|
@@ -255,7 +255,7 @@ module FastlaneCore
|
|
255
255
|
end
|
256
256
|
|
257
257
|
def java_code_option
|
258
|
-
if Helper.
|
258
|
+
if Helper.mac? && Helper.xcode_at_least?(9)
|
259
259
|
return "-jar #{Helper.transporter_java_jar_path.shellescape}"
|
260
260
|
else
|
261
261
|
return "-classpath #{Helper.transporter_java_jar_path.shellescape} com.apple.transporter.Application"
|
@@ -337,7 +337,7 @@ module FastlaneCore
|
|
337
337
|
return download(app_id, dir)
|
338
338
|
end
|
339
339
|
|
340
|
-
return result if Helper.
|
340
|
+
return result if Helper.test?
|
341
341
|
|
342
342
|
itmsp_path = File.join(dir, "#{app_id}.itmsp")
|
343
343
|
successful = result && File.directory?(itmsp_path)
|
@@ -376,7 +376,7 @@ module FastlaneCore
|
|
376
376
|
if result
|
377
377
|
UI.header("Successfully uploaded package to iTunes Connect. It might take a few minutes until it's visible online.")
|
378
378
|
|
379
|
-
FileUtils.rm_rf(actual_dir) unless Helper.
|
379
|
+
FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package any more, since the upload was successful
|
380
380
|
else
|
381
381
|
handle_error(@password)
|
382
382
|
end
|
@@ -131,7 +131,7 @@ module FastlaneCore
|
|
131
131
|
elsif automated_scheme_selection? && schemes.include?(project_name)
|
132
132
|
UI.important("Using scheme matching project name (#{project_name}).")
|
133
133
|
options[:scheme] = project_name
|
134
|
-
elsif Helper.
|
134
|
+
elsif Helper.ci?
|
135
135
|
UI.error("Multiple schemes found but you haven't specified one.")
|
136
136
|
UI.error("Since this is a CI, please pass one using the `scheme` option")
|
137
137
|
show_scheme_shared_information
|
@@ -15,7 +15,7 @@ module FastlaneCore
|
|
15
15
|
|
16
16
|
$stdout.sync = true
|
17
17
|
|
18
|
-
if Helper.
|
18
|
+
if Helper.test? && !ENV.key?('DEBUG')
|
19
19
|
$stdout.puts("Logging disabled while running tests. Force them by setting the DEBUG environment variable")
|
20
20
|
@log ||= Logger.new(nil) # don't show any logs when running tests
|
21
21
|
else
|
@@ -10,7 +10,7 @@ module FastlaneCore
|
|
10
10
|
# Verifies, the user runs the latest version of this gem
|
11
11
|
class UpdateChecker
|
12
12
|
def self.start_looking_for_update(gem_name)
|
13
|
-
return if Helper.
|
13
|
+
return if Helper.test?
|
14
14
|
return if FastlaneCore::Env.truthy?("FASTLANE_SKIP_UPDATE_CHECK")
|
15
15
|
|
16
16
|
@start_time = Time.now
|
@@ -124,7 +124,7 @@ module FastlaneCore
|
|
124
124
|
|
125
125
|
def self.send_launch_analytic_events_for(gem_name)
|
126
126
|
return if FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
|
127
|
-
ci = Helper.
|
127
|
+
ci = Helper.ci?.to_s
|
128
128
|
app_id_guesser = FastlaneCore::AppIdentifierGuesser.new(args: ARGV, gem_name: gem_name)
|
129
129
|
project_hash = app_id_guesser.p_hash
|
130
130
|
p_hash = project_hash if project_hash
|
@@ -198,7 +198,7 @@ module FastlaneCore
|
|
198
198
|
def self.send_completion_events_for(gem_name)
|
199
199
|
return if FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
|
200
200
|
|
201
|
-
ci = Helper.
|
201
|
+
ci = Helper.ci?.to_s
|
202
202
|
install_method = if Helper.rubygems?
|
203
203
|
'gem'
|
204
204
|
elsif Helper.bundler?
|
data/gym/lib/gym/runner.rb
CHANGED
data/match/lib/match/encrypt.rb
CHANGED
@@ -108,7 +108,7 @@ module Match
|
|
108
108
|
|
109
109
|
# On non-Mac systems (more specific Ubuntu Linux) it might take some time for the file to actually be there (see #11182).
|
110
110
|
# To try to circumvent this flakyness (in tests), we wait a bit until the file appears (max 2s) (usually only 0.1 is actually waited)
|
111
|
-
unless FastlaneCore::Helper.
|
111
|
+
unless FastlaneCore::Helper.mac?
|
112
112
|
count = 0
|
113
113
|
# sleep until file exists or 20*0.1s (=2s) passed
|
114
114
|
until File.exist?(tmpfile) || count == 20
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'pty'
|
2
1
|
require 'open3'
|
3
2
|
require 'fileutils'
|
4
3
|
require 'terminal-table'
|
@@ -88,7 +87,7 @@ module Scan
|
|
88
87
|
UI.test_failure!("Test execution failed. Exit status: #{tests_exit_status}")
|
89
88
|
end
|
90
89
|
|
91
|
-
if !Helper.
|
90
|
+
if !Helper.ci? && Scan.cache[:open_html_report_path]
|
92
91
|
`open --hide '#{Scan.cache[:open_html_report_path]}'`
|
93
92
|
end
|
94
93
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative 'module'
|
1
2
|
require 'fastlane_core/command_executor'
|
2
3
|
|
3
4
|
module Screengrab
|
@@ -84,7 +85,7 @@ module Screengrab
|
|
84
85
|
end
|
85
86
|
|
86
87
|
def executable_command?(cmd_path)
|
87
|
-
|
88
|
+
Helper.executable?(cmd_path)
|
88
89
|
end
|
89
90
|
end
|
90
91
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require_relative 'module'
|
2
|
+
require 'fastlane_core/fastlane_pty'
|
2
3
|
|
3
4
|
module Snapshot
|
4
5
|
# This class takes care of rotating images
|
5
6
|
class ScreenshotRotate
|
6
7
|
require 'shellwords'
|
7
|
-
require 'pty'
|
8
8
|
|
9
9
|
# @param (String) The path in which the screenshots are located in
|
10
10
|
def run(path)
|
@@ -28,7 +28,7 @@ module Snapshot
|
|
28
28
|
next unless command
|
29
29
|
|
30
30
|
# Only rotate if we need to
|
31
|
-
|
31
|
+
FastlaneCore::FastlanePty.spawn(command) do |r, w, pid|
|
32
32
|
r.sync
|
33
33
|
r.each do |line|
|
34
34
|
# We need to read this otherwise things hang
|
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.79.0.beta.
|
4
|
+
version: 2.79.0.beta.20180125010002
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Holtz
|
@@ -25,7 +25,7 @@ authors:
|
|
25
25
|
autorequire:
|
26
26
|
bindir: bin
|
27
27
|
cert_chain: []
|
28
|
-
date: 2018-01-
|
28
|
+
date: 2018-01-25 00:00:00.000000000 Z
|
29
29
|
dependencies:
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: slack-notifier
|
@@ -1270,6 +1270,7 @@ files:
|
|
1270
1270
|
- fastlane_core/lib/fastlane_core/device_manager.rb
|
1271
1271
|
- fastlane_core/lib/fastlane_core/env.rb
|
1272
1272
|
- fastlane_core/lib/fastlane_core/fastlane_folder.rb
|
1273
|
+
- fastlane_core/lib/fastlane_core/fastlane_pty.rb
|
1273
1274
|
- fastlane_core/lib/fastlane_core/feature/feature.rb
|
1274
1275
|
- fastlane_core/lib/fastlane_core/features.rb
|
1275
1276
|
- fastlane_core/lib/fastlane_core/globals.rb
|