fastlane 2.42.0 → 2.43.0.beta.20170629010015
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane/actions/gym.rb +0 -7
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/gym/README.md +0 -12
- data/gym/lib/gym.rb +0 -4
- data/gym/lib/gym/detect_values.rb +0 -30
- data/gym/lib/gym/error_handler.rb +0 -10
- data/gym/lib/gym/generators/package_command_generator.rb +3 -6
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +7 -11
- data/gym/lib/gym/options.rb +0 -43
- data/gym/lib/gym/runner.rb +1 -21
- metadata +18 -28
- data/gym/lib/assets/package_application_patches/0001_codesign_args_patch.diff +0 -38
- data/gym/lib/assets/package_application_patches/0002_no_strict_parameter_patch.diff +0 -42
- data/gym/lib/assets/package_application_patches/PackageApplication_MD5 +0 -2
- data/gym/lib/gym/generators/package_command_generator_legacy.rb +0 -103
- data/gym/lib/gym/xcodebuild_fixes/package_application_fix.rb +0 -57
- data/gym/lib/gym/xcodebuild_fixes/swift_fix.rb +0 -100
- data/gym/lib/gym/xcodebuild_fixes/watchkit2_fix.rb +0 -35
- data/gym/lib/gym/xcodebuild_fixes/watchkit_fix.rb +0 -40
- data/spaceship/lib/spaceship/.DS_Store +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e4ae66159f3544c063527f89087b2f4233f7aa0
|
4
|
+
data.tar.gz: 4916ef06ab21011ae37ad106bb7faf6a8360ed63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfef9394fa9471d5a728c722af5c2dcb0ef2167f24bf648a0732788f52fed5ee7a47a4446787c1488f078453ae37ba698c457ba8b8c40d5b6e4cd78f336f1b86
|
7
|
+
data.tar.gz: 3fccdfe1ad1594465a243d4e4feb740fd4ce0a8c440b95e43e5c6f60bf7697de1cfc06a1415a40ff24390cb4f38cb49da592e692bb8a8b13fdaa8ffe0541cc4b
|
@@ -9,13 +9,6 @@ module Fastlane
|
|
9
9
|
def self.run(values)
|
10
10
|
require 'gym'
|
11
11
|
|
12
|
-
should_use_legacy_api = values[:use_legacy_build_api] || Gym::Xcode.pre_7?
|
13
|
-
|
14
|
-
if values[:provisioning_profile_path].to_s.length.zero? && should_use_legacy_api
|
15
|
-
sigh_path = Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] || ENV["SIGH_PROFILE_PATH"]
|
16
|
-
values[:provisioning_profile_path] = File.expand_path(sigh_path) if sigh_path
|
17
|
-
end
|
18
|
-
|
19
12
|
values[:export_method] ||= Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
|
20
13
|
|
21
14
|
if Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
|
data/gym/README.md
CHANGED
@@ -254,18 +254,6 @@ Using this method there are no workarounds for WatchKit or Swift required, as it
|
|
254
254
|
|
255
255
|
Note: the [xcbuild-safe.sh script](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh) wraps around xcodebuild to workaround some incompatibilities.
|
256
256
|
|
257
|
-
### Xcode 6 and below
|
258
|
-
|
259
|
-
```
|
260
|
-
/usr/bin/xcrun /path/to/PackageApplication4Gym -v \
|
261
|
-
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive/Products/Applications/name.app' -o \
|
262
|
-
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName.ipa' \
|
263
|
-
--sign "identity" --embed "provProfile"
|
264
|
-
```
|
265
|
-
|
266
|
-
Note: the official PackageApplication script is replaced by a custom PackageApplication4Gym script. This script is obtained by applying a [set of patches](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/package_application_patches) on the fly to fix some known issues in the official Xcode PackageApplication script.
|
267
|
-
|
268
|
-
Afterwards the `ipa` file is moved to the output folder. The `dSYM` file is compressed and moved to the output folder as well.
|
269
257
|
|
270
258
|
# Tips
|
271
259
|
## [`fastlane`](https://fastlane.tools) Toolchain
|
data/gym/lib/gym.rb
CHANGED
@@ -32,11 +32,7 @@ module Gym
|
|
32
32
|
|
33
33
|
def init_libs
|
34
34
|
# Import all the fixes
|
35
|
-
require 'gym/xcodebuild_fixes/swift_fix'
|
36
|
-
require 'gym/xcodebuild_fixes/watchkit_fix'
|
37
|
-
require 'gym/xcodebuild_fixes/watchkit2_fix'
|
38
35
|
require 'gym/xcodebuild_fixes/generic_archive_fix'
|
39
|
-
require 'gym/xcodebuild_fixes/package_application_fix'
|
40
36
|
end
|
41
37
|
end
|
42
38
|
|
@@ -13,20 +13,12 @@ module Gym
|
|
13
13
|
# Detect the project
|
14
14
|
FastlaneCore::Project.detect_projects(config)
|
15
15
|
Gym.project = FastlaneCore::Project.new(config)
|
16
|
-
detect_provisioning_profile
|
17
16
|
|
18
17
|
# Go into the project's folder, as there might be a Gymfile there
|
19
18
|
Dir.chdir(File.expand_path("..", Gym.project.path)) do
|
20
19
|
config.load_configuration_file(Gym.gymfile_name)
|
21
20
|
end
|
22
21
|
|
23
|
-
config[:use_legacy_build_api] = true if Xcode.pre_7?
|
24
|
-
|
25
|
-
if config[:use_legacy_build_api]
|
26
|
-
UI.deprecated("the use_legacy_build_api option is deprecated")
|
27
|
-
UI.deprecated("it should not be used anymore - e.g.: if you use app-extensions")
|
28
|
-
end
|
29
|
-
|
30
22
|
detect_scheme
|
31
23
|
detect_platform # we can only do that *after* we have the scheme
|
32
24
|
detect_configuration
|
@@ -62,28 +54,6 @@ module Gym
|
|
62
54
|
CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
|
63
55
|
end
|
64
56
|
|
65
|
-
def self.detect_provisioning_profile
|
66
|
-
if Gym.config[:provisioning_profile_path].nil?
|
67
|
-
return unless Gym.config[:use_legacy_build_api] # we only want to auto-detect the profile when using the legacy build API
|
68
|
-
|
69
|
-
Dir.chdir(File.expand_path("..", Gym.project.path)) do
|
70
|
-
profiles = Dir["*.mobileprovision"]
|
71
|
-
if profiles.count == 1
|
72
|
-
profile = File.expand_path(profiles.last)
|
73
|
-
elsif profiles.count > 1
|
74
|
-
UI.message "Found more than one provisioning profile in the project directory:"
|
75
|
-
profile = choose(*profiles)
|
76
|
-
end
|
77
|
-
|
78
|
-
Gym.config[:provisioning_profile_path] = profile
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
if Gym.config[:provisioning_profile_path]
|
83
|
-
FastlaneCore::ProvisioningProfile.install(Gym.config[:provisioning_profile_path])
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
57
|
def self.detect_scheme
|
88
58
|
Gym.project.select_scheme
|
89
59
|
end
|
@@ -54,7 +54,6 @@ module Gym
|
|
54
54
|
print_full_log_path
|
55
55
|
print_xcode_path_instructions
|
56
56
|
print_xcode_version
|
57
|
-
raise_legacy_build_api_error(output) if Gym.config[:use_legacy_build_api]
|
58
57
|
UI.build_failure!("Error building the application - see the log above", error_info: output)
|
59
58
|
end
|
60
59
|
|
@@ -104,15 +103,6 @@ module Gym
|
|
104
103
|
return File.join(m[1], 'IDEDistribution.standard.log') unless m.nil?
|
105
104
|
end
|
106
105
|
|
107
|
-
def raise_legacy_build_api_error(output)
|
108
|
-
UI.error("You enabled the legacy build API in _gym_")
|
109
|
-
UI.error("This option has been deprecated for about a year")
|
110
|
-
UI.error("and was removed with Xcode 8.3")
|
111
|
-
UI.error("Please update your Fastfile to include the export_method too")
|
112
|
-
UI.error("more information about how to migrate away: https://github.com/fastlane/fastlane/releases/tag/2.24.0")
|
113
|
-
UI.build_failure!("Build failed. Please remove the `use_legacy_build_api` option in your Fastfile and try again", error_info: output)
|
114
|
-
end
|
115
|
-
|
116
106
|
private
|
117
107
|
|
118
108
|
def read_standard_output(output)
|
@@ -7,7 +7,6 @@
|
|
7
7
|
require 'shellwords'
|
8
8
|
|
9
9
|
# The concrete implementations
|
10
|
-
require 'gym/generators/package_command_generator_legacy'
|
11
10
|
require 'gym/generators/package_command_generator_xcode7'
|
12
11
|
|
13
12
|
module Gym
|
@@ -47,12 +46,10 @@ module Gym
|
|
47
46
|
end
|
48
47
|
|
49
48
|
# The generator we need to use for the currently used Xcode version
|
49
|
+
# Since we dropped Xcode 6 support, it's just this class, but maybe we'll have
|
50
|
+
# new classes in the future
|
50
51
|
def generator
|
51
|
-
|
52
|
-
PackageCommandGeneratorLegacy
|
53
|
-
else
|
54
|
-
PackageCommandGeneratorXcode7
|
55
|
-
end
|
52
|
+
PackageCommandGeneratorXcode7
|
56
53
|
end
|
57
54
|
end
|
58
55
|
end
|
@@ -13,9 +13,7 @@ module Gym
|
|
13
13
|
DEFAULT_EXPORT_METHOD = "app-store"
|
14
14
|
|
15
15
|
def generate
|
16
|
-
|
17
|
-
|
18
|
-
parts = ["/usr/bin/xcrun #{XcodebuildFixes.wrap_xcodebuild.shellescape} -exportArchive"]
|
16
|
+
parts = ["/usr/bin/xcrun #{wrap_xcodebuild.shellescape} -exportArchive"]
|
19
17
|
parts += options
|
20
18
|
parts += pipe
|
21
19
|
|
@@ -46,6 +44,12 @@ module Gym
|
|
46
44
|
Gym.cache[:temporary_output_path] ||= Dir.mktmpdir('gym_output')
|
47
45
|
end
|
48
46
|
|
47
|
+
# Wrap xcodebuild to work-around ipatool dependency to system ruby
|
48
|
+
def wrap_xcodebuild
|
49
|
+
require 'fileutils'
|
50
|
+
@wrapped_xcodebuild_path ||= File.join(Gym::ROOT, "lib/assets/wrap_xcodebuild/xcbuild-safe.sh")
|
51
|
+
end
|
52
|
+
|
49
53
|
def ipa_path
|
50
54
|
unless Gym.cache[:ipa_path]
|
51
55
|
path = Dir[File.join(temporary_output_path, "*.ipa")].last
|
@@ -181,14 +185,6 @@ module Gym
|
|
181
185
|
def to_plist(hash)
|
182
186
|
Plist::Emit.dump(hash, true)
|
183
187
|
end
|
184
|
-
|
185
|
-
def print_legacy_information
|
186
|
-
return if Gym.config[:provisioning_profile_path].to_s.length == 0
|
187
|
-
|
188
|
-
UI.error "You're using Xcode 7 or above, the `provisioning_profile_path` value will be ignored"
|
189
|
-
UI.error "Please follow the Code Signing Guide: https://codesigning.guide (for match) or https://docs.fastlane.tools/codesigning/GettingStarted/"
|
190
|
-
UI.error "This is just a warning, gym will continue running just as expected, but the parameter will be ignored"
|
191
|
-
end
|
192
188
|
end
|
193
189
|
end
|
194
190
|
end
|
data/gym/lib/gym/options.rb
CHANGED
@@ -9,24 +9,6 @@ module Gym
|
|
9
9
|
@options = plain_options
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.legacy_api_note!
|
13
|
-
UI.important "Unfortunately the legacy build API was removed with Xcode 8.3."
|
14
|
-
UI.important "Please make sure to remove use_legacy_build_api from your ./fastlane/Fastfile"
|
15
|
-
UI.important "and update the gym call to include the export method like this:"
|
16
|
-
UI.important "== App Store Builds =="
|
17
|
-
UI.error ' gym(scheme: "MyScheme", export_method: "app-store")'
|
18
|
-
UI.important "== Ad Hoc Builds =="
|
19
|
-
UI.error ' gym(scheme: "MyScheme", export_method: "ad-hoc")'
|
20
|
-
UI.important "== Development Builds =="
|
21
|
-
UI.error ' gym(scheme: "MyScheme", export_method: "development")'
|
22
|
-
UI.important "== In-House Enterprise Builds =="
|
23
|
-
UI.error ' gym(scheme: "MyScheme", export_method: "enterprise")'
|
24
|
-
UI.important "If you run into a code signing error, please check out our troubleshooting guide for more information on how to solve the most common issues"
|
25
|
-
UI.error " https://docs.fastlane.tools/codesigning/troubleshooting/ 🚀"
|
26
|
-
UI.important ""
|
27
|
-
UI.user_error! "legacy_build_api removed!"
|
28
|
-
end
|
29
|
-
|
30
12
|
def self.plain_options
|
31
13
|
[
|
32
14
|
FastlaneCore::ConfigItem.new(key: :workspace,
|
@@ -117,20 +99,6 @@ module Gym
|
|
117
99
|
description: "Should the ipa include bitcode?",
|
118
100
|
is_string: false,
|
119
101
|
optional: true),
|
120
|
-
FastlaneCore::ConfigItem.new(key: :use_legacy_build_api,
|
121
|
-
deprecated: "Don't use this option any more, as it's deprecated by Apple",
|
122
|
-
env_name: "GYM_USE_LEGACY_BUILD_API",
|
123
|
-
description: "Don't use this option any more, as it's deprecated by Apple",
|
124
|
-
default_value: false,
|
125
|
-
is_string: false,
|
126
|
-
verify_block: proc do |value|
|
127
|
-
if value
|
128
|
-
UI.important "Don't use this option any more, as it's deprecated by Apple"
|
129
|
-
end
|
130
|
-
if Gym::Xcode.legacy_api_deprecated?
|
131
|
-
Gym::Options.legacy_api_note!
|
132
|
-
end
|
133
|
-
end),
|
134
102
|
FastlaneCore::ConfigItem.new(key: :export_method,
|
135
103
|
short_option: "-j",
|
136
104
|
env_name: "GYM_EXPORT_METHOD",
|
@@ -146,7 +114,6 @@ module Gym
|
|
146
114
|
description: "Specifies path to export options plist. User xcodebuild -help to print the full set of available options",
|
147
115
|
is_string: false,
|
148
116
|
optional: true,
|
149
|
-
conflicting_options: [:use_legacy_build_api],
|
150
117
|
conflict_block: proc do |value|
|
151
118
|
UI.user_error!("'#{value.key}' must be false to use 'export_options'")
|
152
119
|
end),
|
@@ -154,7 +121,6 @@ module Gym
|
|
154
121
|
env_name: "GYM_EXPORT_XCARGS",
|
155
122
|
description: "Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS=\"-ObjC -lstdc++\"",
|
156
123
|
optional: true,
|
157
|
-
conflicting_options: [:use_legacy_build_api],
|
158
124
|
conflict_block: proc do |value|
|
159
125
|
UI.user_error!("'#{value.key}' must be false to use 'export_xcargs'")
|
160
126
|
end,
|
@@ -200,15 +166,6 @@ module Gym
|
|
200
166
|
description: "The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)",
|
201
167
|
optional: true,
|
202
168
|
is_string: false),
|
203
|
-
FastlaneCore::ConfigItem.new(key: :provisioning_profile_path,
|
204
|
-
short_option: "-e",
|
205
|
-
env_name: "GYM_PROVISIONING_PROFILE_PATH",
|
206
|
-
description: "The path to the provisioning profile (optional)",
|
207
|
-
optional: true,
|
208
|
-
deprecated: 'Use target specific provisioning profiles instead',
|
209
|
-
verify_block: proc do |value|
|
210
|
-
UI.user_error!("Provisioning profile not found at path '#{File.expand_path(value)}'") unless File.exist?(File.expand_path(value))
|
211
|
-
end),
|
212
169
|
FastlaneCore::ConfigItem.new(key: :destination,
|
213
170
|
short_option: "-d",
|
214
171
|
env_name: "GYM_DESTINATION",
|
data/gym/lib/gym/runner.rb
CHANGED
@@ -8,7 +8,6 @@ module Gym
|
|
8
8
|
# @return (String) The path to the resulting ipa
|
9
9
|
def run
|
10
10
|
unless Gym.config[:skip_build_archive]
|
11
|
-
clear_old_files
|
12
11
|
build_app
|
13
12
|
end
|
14
13
|
verify_archive
|
@@ -19,7 +18,6 @@ module Gym
|
|
19
18
|
return BuildCommandGenerator.archive_path if Gym.config[:skip_package_ipa]
|
20
19
|
|
21
20
|
package_app
|
22
|
-
fix_package
|
23
21
|
compress_and_move_dsym
|
24
22
|
path = move_ipa
|
25
23
|
move_manifest
|
@@ -71,25 +69,11 @@ module Gym
|
|
71
69
|
# @!group The individual steps
|
72
70
|
#####################################################
|
73
71
|
|
74
|
-
def clear_old_files
|
75
|
-
return unless Gym.config[:use_legacy_build_api]
|
76
|
-
if File.exist?(PackageCommandGenerator.ipa_path)
|
77
|
-
File.delete(PackageCommandGenerator.ipa_path)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
72
|
def fix_generic_archive
|
82
73
|
return unless FastlaneCore::Env.truthy?("GYM_USE_GENERIC_ARCHIVE_FIX")
|
83
74
|
Gym::XcodebuildFixes.generic_archive_fix
|
84
75
|
end
|
85
76
|
|
86
|
-
def fix_package
|
87
|
-
return unless Gym.config[:use_legacy_build_api]
|
88
|
-
Gym::XcodebuildFixes.swift_library_fix
|
89
|
-
Gym::XcodebuildFixes.watchkit_fix
|
90
|
-
Gym::XcodebuildFixes.watchkit2_fix
|
91
|
-
end
|
92
|
-
|
93
77
|
def mark_archive_as_built_by_gym(archive_path)
|
94
78
|
escaped_archive_path = archive_path.shellescape
|
95
79
|
system("xattr -w info.fastlane.generated_by_gym 1 #{escaped_archive_path}")
|
@@ -239,11 +223,7 @@ module Gym
|
|
239
223
|
end
|
240
224
|
|
241
225
|
def find_archive_path
|
242
|
-
|
243
|
-
BuildCommandGenerator.archive_path
|
244
|
-
else
|
245
|
-
Dir.glob(File.join(BuildCommandGenerator.build_path, "*.ipa")).last
|
246
|
-
end
|
226
|
+
Dir.glob(File.join(BuildCommandGenerator.build_path, "*.ipa")).last
|
247
227
|
end
|
248
228
|
end
|
249
229
|
end
|
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.
|
4
|
+
version: 2.43.0.beta.20170629010015
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2017-06-
|
18
|
+
date: 2017-06-29 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|
@@ -259,7 +259,7 @@ dependencies:
|
|
259
259
|
requirements:
|
260
260
|
- - ">="
|
261
261
|
- !ruby/object:Gem::Version
|
262
|
-
version: 4.4.
|
262
|
+
version: 4.4.5
|
263
263
|
- - "<"
|
264
264
|
- !ruby/object:Gem::Version
|
265
265
|
version: 5.0.0
|
@@ -269,7 +269,7 @@ dependencies:
|
|
269
269
|
requirements:
|
270
270
|
- - ">="
|
271
271
|
- !ruby/object:Gem::Version
|
272
|
-
version: 4.4.
|
272
|
+
version: 4.4.5
|
273
273
|
- - "<"
|
274
274
|
- !ruby/object:Gem::Version
|
275
275
|
version: 5.0.0
|
@@ -1147,9 +1147,6 @@ files:
|
|
1147
1147
|
- frameit/lib/frameit/template_finder.rb
|
1148
1148
|
- gym/README.md
|
1149
1149
|
- gym/lib/assets/GymfileTemplate
|
1150
|
-
- gym/lib/assets/package_application_patches/0001_codesign_args_patch.diff
|
1151
|
-
- gym/lib/assets/package_application_patches/0002_no_strict_parameter_patch.diff
|
1152
|
-
- gym/lib/assets/package_application_patches/PackageApplication_MD5
|
1153
1150
|
- gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh
|
1154
1151
|
- gym/lib/gym.rb
|
1155
1152
|
- gym/lib/gym/commands_generator.rb
|
@@ -1158,7 +1155,6 @@ files:
|
|
1158
1155
|
- gym/lib/gym/generators/README.md
|
1159
1156
|
- gym/lib/gym/generators/build_command_generator.rb
|
1160
1157
|
- gym/lib/gym/generators/package_command_generator.rb
|
1161
|
-
- gym/lib/gym/generators/package_command_generator_legacy.rb
|
1162
1158
|
- gym/lib/gym/generators/package_command_generator_xcode7.rb
|
1163
1159
|
- gym/lib/gym/manager.rb
|
1164
1160
|
- gym/lib/gym/options.rb
|
@@ -1166,10 +1162,6 @@ files:
|
|
1166
1162
|
- gym/lib/gym/xcode.rb
|
1167
1163
|
- gym/lib/gym/xcodebuild_fixes/README.md
|
1168
1164
|
- gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb
|
1169
|
-
- gym/lib/gym/xcodebuild_fixes/package_application_fix.rb
|
1170
|
-
- gym/lib/gym/xcodebuild_fixes/swift_fix.rb
|
1171
|
-
- gym/lib/gym/xcodebuild_fixes/watchkit2_fix.rb
|
1172
|
-
- gym/lib/gym/xcodebuild_fixes/watchkit_fix.rb
|
1173
1165
|
- match/README.md
|
1174
1166
|
- match/lib/assets/MatchfileTemplate
|
1175
1167
|
- match/lib/assets/READMETemplate.md
|
@@ -1296,7 +1288,6 @@ files:
|
|
1296
1288
|
- spaceship/lib/assets/languageMapping.json
|
1297
1289
|
- spaceship/lib/assets/languageMappingReadable.json
|
1298
1290
|
- spaceship/lib/spaceship.rb
|
1299
|
-
- spaceship/lib/spaceship/.DS_Store
|
1300
1291
|
- spaceship/lib/spaceship/babosa_fix.rb
|
1301
1292
|
- spaceship/lib/spaceship/base.rb
|
1302
1293
|
- spaceship/lib/spaceship/client.rb
|
@@ -1398,24 +1389,24 @@ metadata:
|
|
1398
1389
|
post_install_message:
|
1399
1390
|
rdoc_options: []
|
1400
1391
|
require_paths:
|
1392
|
+
- snapshot/lib
|
1393
|
+
- spaceship/lib
|
1394
|
+
- scan/lib
|
1401
1395
|
- cert/lib
|
1402
|
-
-
|
1403
|
-
- deliver/lib
|
1396
|
+
- pilot/lib
|
1404
1397
|
- fastlane/lib
|
1405
|
-
-
|
1406
|
-
- frameit/lib
|
1398
|
+
- supply/lib
|
1407
1399
|
- gym/lib
|
1408
1400
|
- match/lib
|
1409
|
-
-
|
1410
|
-
- pilot/lib
|
1401
|
+
- sigh/lib
|
1411
1402
|
- precheck/lib
|
1412
1403
|
- produce/lib
|
1413
|
-
-
|
1404
|
+
- credentials_manager/lib
|
1414
1405
|
- screengrab/lib
|
1415
|
-
-
|
1416
|
-
-
|
1417
|
-
-
|
1418
|
-
-
|
1406
|
+
- pem/lib
|
1407
|
+
- fastlane_core/lib
|
1408
|
+
- deliver/lib
|
1409
|
+
- frameit/lib
|
1419
1410
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1420
1411
|
requirements:
|
1421
1412
|
- - ">="
|
@@ -1423,15 +1414,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1423
1414
|
version: 2.0.0
|
1424
1415
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1425
1416
|
requirements:
|
1426
|
-
- - "
|
1417
|
+
- - ">"
|
1427
1418
|
- !ruby/object:Gem::Version
|
1428
|
-
version:
|
1419
|
+
version: 1.3.1
|
1429
1420
|
requirements: []
|
1430
1421
|
rubyforge_project:
|
1431
|
-
rubygems_version: 2.
|
1422
|
+
rubygems_version: 2.4.5.2
|
1432
1423
|
signing_key:
|
1433
1424
|
specification_version: 4
|
1434
1425
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
1435
1426
|
Android apps
|
1436
1427
|
test_files: []
|
1437
|
-
has_rdoc:
|
@@ -1,38 +0,0 @@
|
|
1
|
-
From 13f2c76fd11b0d861ddf205d4d6ccc0c45a0d4b2 Mon Sep 17 00:00:00 2001
|
2
|
-
From: Fabio Milano
|
3
|
-
Date: Thu, 13 Aug 2015 15:02:41 +0200
|
4
|
-
Subject: [PATCH] Fixed codesign_args
|
5
|
-
|
6
|
-
Code signatures made in Mavericks and later do not support altering which files are sealed by a code signature.
|
7
|
-
The --resource-rules option to codesign isn't supported anymore
|
8
|
-
|
9
|
-
See https://developer.apple.com/library/mac/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG206
|
10
|
-
|
11
|
-
---
|
12
|
-
PackageApplication4Gym | 8 +++++++-
|
13
|
-
1 file changed, 7 insertions(+), 1 deletion(-)
|
14
|
-
|
15
|
-
diff --git a/PackageApplication4Gym b/PackageApplication4Gym
|
16
|
-
index fc4d7de..b97431f 100755
|
17
|
-
--- a/PackageApplication4Gym
|
18
|
-
+++ b/PackageApplication4Gym
|
19
|
-
@@ -152,9 +152,15 @@ if ( defined $opt{sign} ) {
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
- my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
|
24
|
-
+ my @codesign_args;
|
25
|
-
+ if (-e '$destApp/ResourceRules.plist') { # If ResourceRules.plist exists, include it in codesign arguments, for backwards compatability
|
26
|
-
+ @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
|
27
|
-
"--sign", $opt{sign},
|
28
|
-
"--resource-rules=$destApp/ResourceRules.plist");
|
29
|
-
+ } else { # If ResourceRules.plist isn't found, don't include it in the codesign arguments
|
30
|
-
+ @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
|
31
|
-
+ "--sign", $opt{sign});
|
32
|
-
+ }
|
33
|
-
|
34
|
-
if ( -e $entitlements_plist ) {
|
35
|
-
push(@codesign_args, '--entitlements');
|
36
|
-
--
|
37
|
-
2.2.1
|
38
|
-
|
@@ -1,42 +0,0 @@
|
|
1
|
-
From 38ea965869a436c4b60e7dbfd5a28d42232d82d6 Mon Sep 17 00:00:00 2001
|
2
|
-
From: Fabio Milano
|
3
|
-
Date: Thu, 13 Aug 2015 16:03:26 +0200
|
4
|
-
Subject: [PATCH] Added no-strict parameter
|
5
|
-
|
6
|
-
The command line tool “codesign” has changed in 10.9.5 and 10.10, you need to
|
7
|
-
pass “--no-strict” option to the command, (the problem has been reported and
|
8
|
-
will be fixed). To workaround the problem, please save a copy and modify
|
9
|
-
PackageApplication to pass “—no-strict” to codesign, you can locate PackageApplication
|
10
|
-
by running the following:- xcrun -sdk iphoneos -f PackageApplication
|
11
|
-
|
12
|
-
See https://stackoverflow.com/questions/26008449/xcodebuild-codesign-vvvv-saysresource-envelope-is-obsolete
|
13
|
-
|
14
|
-
---
|
15
|
-
PackageApplication4Gym | 4 ++--
|
16
|
-
1 file changed, 2 insertions(+), 2 deletions(-)
|
17
|
-
|
18
|
-
diff --git a/PackageApplication4Gym b/PackageApplication4Gym
|
19
|
-
index 3085608..54a4b9e 100755
|
20
|
-
--- a/PackageApplication4Gym
|
21
|
-
+++ b/PackageApplication4Gym
|
22
|
-
@@ -92,7 +92,7 @@ foreach $plugin (@plugins) {
|
23
|
-
chomp $pluginName;
|
24
|
-
my $destPlugin = "$destAppDir/$pluginName";
|
25
|
-
|
26
|
-
- my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $plugin );
|
27
|
-
+ my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict", "-vvvv", , $plugin );
|
28
|
-
if ( $result !~ /valid on disk/ ) {
|
29
|
-
fatal("Codesign check fails : $result\n");
|
30
|
-
}
|
31
|
-
@@ -111,7 +111,7 @@ if ( $opt{symbols} ) {
|
32
|
-
|
33
|
-
if ( $opt{verbose} ) {
|
34
|
-
print "### Checking original app\n";
|
35
|
-
- my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $origApp );
|
36
|
-
+ my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict", "-vvvv", , $origApp );
|
37
|
-
if ( $result !~ /valid on disk/ ) {
|
38
|
-
print "Codesign check fails : $result\n";
|
39
|
-
}
|
40
|
-
--
|
41
|
-
2.2.1
|
42
|
-
|
@@ -1,103 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# from https://stackoverflow.com/a/9857493/445598
|
4
|
-
# because of
|
5
|
-
# `incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError)`
|
6
|
-
|
7
|
-
module Gym
|
8
|
-
# Responsible for building the fully working xcodebuild command on Xcode < 7
|
9
|
-
#
|
10
|
-
# Because of a known bug in PackageApplication Perl script used by Xcode the packaging process is performed with
|
11
|
-
# a patched version of the script.
|
12
|
-
class PackageCommandGeneratorLegacy
|
13
|
-
class << self
|
14
|
-
def generate
|
15
|
-
print_legacy_information
|
16
|
-
|
17
|
-
parts = ["/usr/bin/xcrun #{XcodebuildFixes.patch_package_application.shellescape} -v"]
|
18
|
-
parts += options
|
19
|
-
parts += pipe
|
20
|
-
|
21
|
-
parts
|
22
|
-
end
|
23
|
-
|
24
|
-
def options
|
25
|
-
options = []
|
26
|
-
|
27
|
-
options << Shellwords.escape(appfile_path)
|
28
|
-
options << "-o '#{ipa_path}'"
|
29
|
-
options << "exportFormat ipa"
|
30
|
-
|
31
|
-
if Gym.config[:provisioning_profile_path]
|
32
|
-
options << "--embed '#{Gym.config[:provisioning_profile_path]}'"
|
33
|
-
end
|
34
|
-
|
35
|
-
if Gym.config[:codesigning_identity]
|
36
|
-
options << "--sign #{Gym.config[:codesigning_identity].shellescape}"
|
37
|
-
end
|
38
|
-
|
39
|
-
options
|
40
|
-
end
|
41
|
-
|
42
|
-
def pipe
|
43
|
-
[""]
|
44
|
-
end
|
45
|
-
|
46
|
-
# Place where the IPA file will be created, so it can be safely moved to the destination folder
|
47
|
-
def temporary_output_path
|
48
|
-
Gym.cache[:temporary_output_path] ||= Dir.mktmpdir('gym_output')
|
49
|
-
end
|
50
|
-
|
51
|
-
def appfile_path
|
52
|
-
path = Dir.glob("#{BuildCommandGenerator.archive_path}/Products/Applications/*.app").first
|
53
|
-
path ||= Dir[BuildCommandGenerator.archive_path + "/**/*.app"].first
|
54
|
-
|
55
|
-
return path
|
56
|
-
end
|
57
|
-
|
58
|
-
# We export it to the temporary folder and move it over to the actual output once it's finished and valid
|
59
|
-
def ipa_path
|
60
|
-
File.join(temporary_output_path, "#{Gym.config[:output_name]}.ipa")
|
61
|
-
end
|
62
|
-
|
63
|
-
# The path the the dsym file for this app. Might be nil
|
64
|
-
def dsym_path
|
65
|
-
Dir[BuildCommandGenerator.archive_path + "/**/*.app.dSYM"].last
|
66
|
-
end
|
67
|
-
|
68
|
-
def manifest_path
|
69
|
-
""
|
70
|
-
end
|
71
|
-
|
72
|
-
def app_thinning_path
|
73
|
-
""
|
74
|
-
end
|
75
|
-
|
76
|
-
def app_thinning_size_report_path
|
77
|
-
""
|
78
|
-
end
|
79
|
-
|
80
|
-
def apps_path
|
81
|
-
""
|
82
|
-
end
|
83
|
-
|
84
|
-
def print_legacy_information
|
85
|
-
if Gym.config[:include_bitcode]
|
86
|
-
UI.important "Legacy build api is enabled, the `include_bitcode` value will be ignored"
|
87
|
-
end
|
88
|
-
|
89
|
-
if Gym.config[:include_symbols]
|
90
|
-
UI.important "Legacy build api is enabled, the `include_symbols` value will be ignored"
|
91
|
-
end
|
92
|
-
|
93
|
-
if Gym.config[:export_team_id].to_s.length > 0
|
94
|
-
UI.important "Legacy build api is enabled, the `export_team_id` value will be ignored"
|
95
|
-
end
|
96
|
-
|
97
|
-
if Gym.config[:export_method].to_s.length > 0
|
98
|
-
UI.important "Legacy build api is enabled, the `export_method` value will be ignored"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module Gym
|
2
|
-
class XcodebuildFixes
|
3
|
-
class << self
|
4
|
-
# Fix PackageApplication Perl script by Xcode to create the IPA from the archive
|
5
|
-
def patch_package_application
|
6
|
-
require 'fileutils'
|
7
|
-
|
8
|
-
# Initialization
|
9
|
-
@patched_package_application_path = File.join("/tmp", "PackageApplication4Gym")
|
10
|
-
|
11
|
-
return @patched_package_application_path if File.exist?(@patched_package_application_path)
|
12
|
-
|
13
|
-
Dir.mktmpdir do |tmpdir|
|
14
|
-
# Check current set of PackageApplication MD5 hashes
|
15
|
-
require 'digest'
|
16
|
-
|
17
|
-
path = File.join(Gym::ROOT, "lib/assets/package_application_patches/PackageApplication_MD5")
|
18
|
-
expected_md5_hashes = File.read(path).split("\n")
|
19
|
-
|
20
|
-
# If that location changes, search it using xcrun --sdk iphoneos -f PackageApplication
|
21
|
-
package_application_path = "#{Xcode.xcode_path}/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication"
|
22
|
-
|
23
|
-
unless File.exist?(package_application_path)
|
24
|
-
ErrorHandler.raise_legacy_build_api_error("")
|
25
|
-
end
|
26
|
-
|
27
|
-
UI.crash!("Unable to patch the `PackageApplication` script bundled in Xcode. This is not supported.") unless expected_md5_hashes.include?(Digest::MD5.file(package_application_path).hexdigest)
|
28
|
-
|
29
|
-
# Duplicate PackageApplication script to PackageApplication4Gym
|
30
|
-
FileUtils.copy_file(package_application_path, @patched_package_application_path)
|
31
|
-
|
32
|
-
# Apply patches to PackageApplication4Gym from patches folder
|
33
|
-
Dir[File.join(Gym::ROOT, "lib/assets/package_application_patches/*.diff")].each do |patch|
|
34
|
-
UI.verbose "Applying Package Application patch: #{File.basename(patch)}"
|
35
|
-
command = ["patch '#{@patched_package_application_path}' < '#{patch}'"]
|
36
|
-
Runner.new.print_command(command, "Applying Package Application patch: #{File.basename(patch)}") if FastlaneCore::Globals.verbose?
|
37
|
-
|
38
|
-
FastlaneCore::CommandExecutor.execute(command: command,
|
39
|
-
print_all: false,
|
40
|
-
print_command: FastlaneCore::Globals.verbose?,
|
41
|
-
error: proc do |output|
|
42
|
-
ErrorHandler.handle_package_error(output)
|
43
|
-
end)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
return @patched_package_application_path # Return path to the patched PackageApplication
|
48
|
-
end
|
49
|
-
|
50
|
-
# Wrap xcodebuild to work-around ipatool dependecy to system ruby
|
51
|
-
def wrap_xcodebuild
|
52
|
-
require 'fileutils'
|
53
|
-
@wrapped_xcodebuild_path ||= File.join(Gym::ROOT, "lib/assets/wrap_xcodebuild/xcbuild-safe.sh")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# from https://stackoverflow.com/a/9857493/445598
|
4
|
-
# because of
|
5
|
-
# `incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError)`
|
6
|
-
require 'zip'
|
7
|
-
|
8
|
-
module Gym
|
9
|
-
class XcodebuildFixes
|
10
|
-
class << self
|
11
|
-
# Determine whether it is a Swift project and, eventually, include all required libraries to copy from Xcode's toolchain directory.
|
12
|
-
# Since there's no "xcodebuild" target to do just that, it is done post-build when exporting an archived build.
|
13
|
-
def swift_library_fix
|
14
|
-
require 'fileutils'
|
15
|
-
|
16
|
-
return if check_for_swift(PackageCommandGenerator)
|
17
|
-
|
18
|
-
UI.verbose "Packaging up the Swift Framework as the current app is a Swift app"
|
19
|
-
ipa_swift_frameworks = Dir["#{PackageCommandGenerator.appfile_path}/Frameworks/libswift*"]
|
20
|
-
|
21
|
-
Dir.mktmpdir do |tmpdir|
|
22
|
-
# Copy all necessary Swift libraries to a temporary "SwiftSupport" directory so that we can
|
23
|
-
# easily add it to the .ipa later.
|
24
|
-
swift_support = File.join(tmpdir, "SwiftSupport")
|
25
|
-
|
26
|
-
Dir.mkdir(swift_support)
|
27
|
-
|
28
|
-
ipa_swift_frameworks.each do |path|
|
29
|
-
framework = File.basename(path)
|
30
|
-
|
31
|
-
begin
|
32
|
-
toolchain_dir = toolchain_dir_name_for_toolchain(Gym.config[:toolchain])
|
33
|
-
|
34
|
-
from = File.join(Xcode.xcode_path, "Toolchains/#{toolchain_dir}/usr/lib/swift/iphoneos/#{framework}")
|
35
|
-
to = File.join(swift_support, framework)
|
36
|
-
|
37
|
-
UI.verbose("Copying Swift framework from '#{from}'")
|
38
|
-
FileUtils.copy_file(from, to)
|
39
|
-
rescue => ex
|
40
|
-
UI.error("Error copying over framework file. Please try running gym without the legacy build API enabled")
|
41
|
-
UI.error("For more information visit https://github.com/fastlane/fastlane/issues/5863")
|
42
|
-
UI.error("Missing file #{path} inside #{Xcode.xcode_path}")
|
43
|
-
|
44
|
-
if Gym.config[:toolchain].nil?
|
45
|
-
UI.important("If you're using Swift 2.3, but already updated to Xcode 8")
|
46
|
-
UI.important("try adding the following parameter to your gym call:")
|
47
|
-
UI.success("gym(toolchain: :swift_2_3)")
|
48
|
-
UI.message("or")
|
49
|
-
UI.success("fastlane gym --toolchain swift_2_3")
|
50
|
-
end
|
51
|
-
|
52
|
-
UI.user_error!(ex)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Add "SwiftSupport" to the .ipa archive
|
57
|
-
Dir.chdir(tmpdir) do
|
58
|
-
command_parts = ["zip --recurse-paths '#{PackageCommandGenerator.ipa_path}' SwiftSupport"]
|
59
|
-
command_parts << "> /dev/null" unless FastlaneCore::Globals.verbose?
|
60
|
-
|
61
|
-
FastlaneCore::CommandExecutor.execute(command: command_parts,
|
62
|
-
print_all: false,
|
63
|
-
print_command: !Gym.config[:silent],
|
64
|
-
error: proc do |output|
|
65
|
-
ErrorHandler.handle_package_error(output)
|
66
|
-
end)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def toolchain_dir_name_for_toolchain(toolchain)
|
72
|
-
return "Swift_2.3.xctoolchain" if toolchain == "com.apple.dt.toolchain.Swift_2_3"
|
73
|
-
|
74
|
-
UI.error("No specific folder was found for toolchain #{toolchain}. Using the default toolchain location.") if toolchain
|
75
|
-
return "XcodeDefault.xctoolchain"
|
76
|
-
end
|
77
|
-
|
78
|
-
# @param the PackageCommandGenerator
|
79
|
-
# @return true if swift
|
80
|
-
def check_for_swift(pcg)
|
81
|
-
UI.verbose "Checking for Swift framework"
|
82
|
-
default_swift_libs = "#{pcg.appfile_path}/Frameworks/libswift.*" # note the extra ., this is a string representation of a regexp
|
83
|
-
zip_entries_matching(pcg.ipa_path, /#{default_swift_libs}/).count > 0
|
84
|
-
end
|
85
|
-
|
86
|
-
# return the entries (files or directories) in the zip matching the pattern
|
87
|
-
# @param zipfile a zipfile
|
88
|
-
# @return the files or directories matching the pattern
|
89
|
-
def zip_entries_matching(zipfile, file_pattern)
|
90
|
-
files = []
|
91
|
-
Zip::File.open(zipfile) do |zip_file|
|
92
|
-
zip_file.each do |entry|
|
93
|
-
files << entry.name if entry.name.force_encoding("utf-8").match file_pattern
|
94
|
-
end
|
95
|
-
end
|
96
|
-
files
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Gym
|
2
|
-
class XcodebuildFixes
|
3
|
-
class << self
|
4
|
-
# Determine whether this app has WatchKit2 support and manually package up the WatchKit2 framework
|
5
|
-
def watchkit2_fix
|
6
|
-
return unless watchkit2?
|
7
|
-
|
8
|
-
UI.verbose "Adding WatchKit2 support"
|
9
|
-
|
10
|
-
Dir.mktmpdir do |tmpdir|
|
11
|
-
# Make watchkit support directory
|
12
|
-
watchkit_support = File.join(tmpdir, "WatchKitSupport2")
|
13
|
-
Dir.mkdir(watchkit_support)
|
14
|
-
|
15
|
-
# Copy WK from Xcode into WatchKitSupport2
|
16
|
-
FileUtils.copy_file("#{Xcode.xcode_path}/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/Library/Application Support/WatchKit/WK", File.join(watchkit_support, "WK"))
|
17
|
-
|
18
|
-
# Add "WatchKitSupport2" to the .ipa archive
|
19
|
-
Dir.chdir(tmpdir) do
|
20
|
-
abort unless system %(zip --recurse-paths "#{PackageCommandGenerator.ipa_path}" "WatchKitSupport2" > /dev/null)
|
21
|
-
end
|
22
|
-
|
23
|
-
UI.verbose "Successfully added WatchKit2 support"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# Does this application have a WatchKit target
|
28
|
-
def watchkit2?
|
29
|
-
Dir["#{PackageCommandGenerator.appfile_path}/**/*.plist"].any? do |plist_path|
|
30
|
-
`/usr/libexec/PlistBuddy -c 'Print DTSDKName' '#{plist_path}' 2>&1`.match(/^\s*watchos2\.\d+\s*$/)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Gym
|
2
|
-
class XcodebuildFixes
|
3
|
-
class << self
|
4
|
-
# Determine whether this app has WatchKit support and manually package up the WatchKit framework
|
5
|
-
def watchkit_fix
|
6
|
-
return unless should_apply_watchkit1_fix?
|
7
|
-
|
8
|
-
UI.verbose "Adding WatchKit support"
|
9
|
-
|
10
|
-
Dir.mktmpdir do |tmpdir|
|
11
|
-
# Make watchkit support directory
|
12
|
-
watchkit_support = File.join(tmpdir, "WatchKitSupport")
|
13
|
-
Dir.mkdir(watchkit_support)
|
14
|
-
|
15
|
-
# Copy WK from Xcode into WatchKitSupport
|
16
|
-
FileUtils.copy_file("#{Xcode.xcode_path}/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/Library/Application Support/WatchKit/WK", File.join(watchkit_support, "WK"))
|
17
|
-
|
18
|
-
# Add "WatchKitSupport" to the .ipa archive
|
19
|
-
Dir.chdir(tmpdir) do
|
20
|
-
abort unless system %(zip --recurse-paths "#{PackageCommandGenerator.ipa_path}" "WatchKitSupport" > /dev/null)
|
21
|
-
end
|
22
|
-
|
23
|
-
UI.verbose "Successfully added WatchKit support"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# Does this application have a WatchKit target
|
28
|
-
def watchkit?
|
29
|
-
Dir["#{PackageCommandGenerator.appfile_path}/**/*.plist"].any? do |plist_path|
|
30
|
-
`/usr/libexec/PlistBuddy -c 'Print WKWatchKitApp' '#{plist_path}' 2>&1`.strip == 'true'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Should only be applied if watchkit app is not a watchkit2 app
|
35
|
-
def should_apply_watchkit1_fix?
|
36
|
-
watchkit? && !Gym::XcodebuildFixes.watchkit2?
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
Binary file
|