cocoapods-xcremotecache 0.0.1 → 0.0.5
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/README.md +14 -0
- data/lib/cocoapods-xcremotecache/command/hooks.rb +129 -62
- data/lib/cocoapods-xcremotecache/gem_version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 073bb6eb42ef3ca4b2911ecf1a22f57d3fee56b4ca151446b542c1e2a8ea95bd
|
4
|
+
data.tar.gz: 3baa31150bb89f06635781eaae290b9b998776f0e0d5f099fa93197a84034de9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a1a857abfdd8231b6eeaaeb626bd0b446bd58176b03143e0d1c292c78b2bd56c8f1e567293708f71518c91f6869326f726b20582286172b68de6f657198bebc
|
7
|
+
data.tar.gz: 987ecea74817a95bf1b1bda403e17d2494d65cc6e5c8c24666f239ae3fd83721474405e5fe3daa87112bb725346432019f6892f0a0ce327741890d449554aa58
|
data/README.md
CHANGED
@@ -4,6 +4,14 @@ The CocoaPods plugin that integrates XCRemoteCache with the project.
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
### Using RubyGems
|
8
|
+
|
9
|
+
```bash
|
10
|
+
gem install cocoapods-xcremotecache
|
11
|
+
```
|
12
|
+
|
13
|
+
### From sources
|
14
|
+
|
7
15
|
Build & install the plugin
|
8
16
|
|
9
17
|
```bash
|
@@ -44,6 +52,8 @@ An object that is passed to the `xcremotecache` can contain all properties suppo
|
|
44
52
|
| `modify_lldb_init` | Controls if the pod integration should modify `~/.lldbinit` | `true` | ⬜️ |
|
45
53
|
| `xccc_file` | The path where should be placed the `xccc` binary (in the pod installation phase) | `{podfile_dir}/.rc/xccc` | ⬜️ |
|
46
54
|
| `remote_commit_file` | The path of the file with the remote commit sha (in the pod installation phase) | `{podfile_dir}/.rc/arc.rc`| ⬜️ |
|
55
|
+
| `prettify_meta_files` | A Boolean value that opts-in pretty JSON formatting for meta files | `false` | ⬜️ |
|
56
|
+
| `disable_certificate_verification` | A Boolean value that opts-in SSL certificate validation is disabled | `false` | ⬜️ |
|
47
57
|
|
48
58
|
## Uninstalling
|
49
59
|
|
@@ -52,3 +62,7 @@ To fully uninstall the plugin, call:
|
|
52
62
|
```bash
|
53
63
|
gem uninstall cocoapods-xcremotecache
|
54
64
|
```
|
65
|
+
|
66
|
+
## Limitations
|
67
|
+
|
68
|
+
* When `generate_multiple_pod_projects` mode is enabled, only first-party targets are cached by XCRemoteCache (all dependencies are compiled locally).
|
@@ -17,6 +17,7 @@ require 'cocoapods/resolver'
|
|
17
17
|
require 'open-uri'
|
18
18
|
require 'yaml'
|
19
19
|
require 'json'
|
20
|
+
require 'pathname'
|
20
21
|
|
21
22
|
|
22
23
|
module CocoapodsXCRemoteCacheModifier
|
@@ -26,7 +27,9 @@ module CocoapodsXCRemoteCacheModifier
|
|
26
27
|
FAKE_SRCROOT = "/#{'x' * 10 }"
|
27
28
|
LLDB_INIT_COMMENT="#RemoteCacheCustomSourceMap"
|
28
29
|
LLDB_INIT_PATH = "#{ENV['HOME']}/.lldbinit"
|
30
|
+
FAT_ARCHIVE_NAME_INFIX = 'arm64-x86_64'
|
29
31
|
|
32
|
+
# List of plugins' user properties that should be copied to .rcinfo
|
30
33
|
CUSTOM_CONFIGURATION_KEYS = [
|
31
34
|
'enabled',
|
32
35
|
'xcrc_location',
|
@@ -35,7 +38,9 @@ module CocoapodsXCRemoteCacheModifier
|
|
35
38
|
'final_target',
|
36
39
|
'check_build_configuration',
|
37
40
|
'check_platform',
|
38
|
-
'modify_lldb_init'
|
41
|
+
'modify_lldb_init',
|
42
|
+
'prettify_meta_files',
|
43
|
+
'disable_certificate_verification'
|
39
44
|
]
|
40
45
|
|
41
46
|
class XCRemoteCache
|
@@ -45,18 +50,20 @@ module CocoapodsXCRemoteCacheModifier
|
|
45
50
|
@@configuration = c
|
46
51
|
end
|
47
52
|
|
48
|
-
def self.set_configuration_default_values
|
53
|
+
def self.set_configuration_default_values
|
49
54
|
default_values = {
|
50
55
|
'mode' => 'consumer',
|
51
56
|
'enabled' => true,
|
52
|
-
'xcrc_location' => "
|
57
|
+
'xcrc_location' => "XCRC",
|
53
58
|
'exclude_build_configurations' => [],
|
54
59
|
'check_build_configuration' => 'Debug',
|
55
60
|
'check_platform' => 'iphonesimulator',
|
56
61
|
'modify_lldb_init' => true,
|
57
|
-
'xccc_file' => "#{
|
58
|
-
'remote_commit_file' => "#{
|
62
|
+
'xccc_file' => "#{BIN_DIR}/xccc",
|
63
|
+
'remote_commit_file' => "#{BIN_DIR}/arc.rc",
|
59
64
|
'exclude_targets' => [],
|
65
|
+
'prettify_meta_files' => false,
|
66
|
+
'disable_certificate_verification' => false
|
60
67
|
}
|
61
68
|
@@configuration.merge! default_values.select { |k, v| !@@configuration.key?(k) }
|
62
69
|
end
|
@@ -88,61 +95,96 @@ module CocoapodsXCRemoteCacheModifier
|
|
88
95
|
@@configuration.select { |key, value| !CUSTOM_CONFIGURATION_KEYS.include?(key) }
|
89
96
|
end
|
90
97
|
|
91
|
-
def self.
|
92
|
-
|
93
|
-
|
94
|
-
next if exclude_build_configurations.include?(config.name)
|
95
|
-
if mode == 'consumer'
|
96
|
-
config.build_settings['CC'] = [xc_cc_path]
|
97
|
-
end
|
98
|
-
config.build_settings['SWIFT_EXEC'] = ["#{xc_location}/xcswiftc"]
|
99
|
-
config.build_settings['LIBTOOL'] = ["#{xc_location}/xclibtool"]
|
100
|
-
config.build_settings['LD'] = ["#{xc_location}/xcld"]
|
98
|
+
def self.parent_dir(path, parent_count)
|
99
|
+
"../" * parent_count + path
|
100
|
+
end
|
101
101
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
102
|
+
# @param target [Target] target to apply XCRemoteCache
|
103
|
+
# @param repo_distance [Integer] distance from the git repo root to the target's $SRCROOT
|
104
|
+
# @param xc_location [String] path to the dir with all XCRemoteCache binaries, relative to the repo root
|
105
|
+
# @param xc_cc_path [String] path to the XCRemoteCache clang wrapper, relative to the repo root
|
106
|
+
# @param mode [String] mode name ('consumer', 'producer' etc.)
|
107
|
+
# @param exclude_build_configurations [String[]] list of targets that should have disabled remote cache
|
108
|
+
# @param final_target [String] name of target that should trigger marking
|
109
|
+
def self.enable_xcremotecache(target, repo_distance, xc_location, xc_cc_path, mode, exclude_build_configurations, final_target)
|
110
|
+
srcroot_relative_xc_location = parent_dir(xc_location, repo_distance)
|
107
111
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
if
|
112
|
-
|
112
|
+
target.build_configurations.each do |config|
|
113
|
+
# apply only for relevant Configurations
|
114
|
+
next if exclude_build_configurations.include?(config.name)
|
115
|
+
if mode == 'consumer'
|
116
|
+
config.build_settings['CC'] = ["$SRCROOT/#{parent_dir(xc_cc_path, repo_distance)}"]
|
113
117
|
end
|
114
|
-
|
118
|
+
config.build_settings['SWIFT_EXEC'] = ["$SRCROOT/#{srcroot_relative_xc_location}/xcswiftc"]
|
119
|
+
config.build_settings['LIBTOOL'] = ["$SRCROOT/#{srcroot_relative_xc_location}/xclibtool"]
|
120
|
+
config.build_settings['LD'] = ["$SRCROOT/#{srcroot_relative_xc_location}/xcld"]
|
121
|
+
|
122
|
+
config.build_settings['XCREMOTE_CACHE_FAKE_SRCROOT'] = FAKE_SRCROOT
|
123
|
+
config.build_settings['XCRC_PLATFORM_PREFERRED_ARCH'] = ["$(LINK_FILE_LIST_$(CURRENT_VARIANT)_$(PLATFORM_PREFERRED_ARCH):dir:standardizepath:file:default=arm64)"]
|
124
|
+
debug_prefix_map_replacement = '$(SRCROOT' + ':dir:standardizepath' * repo_distance + ')'
|
125
|
+
add_cflags!(config.build_settings, '-fdebug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)")
|
126
|
+
add_swiftflags!(config.build_settings, '-debug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)")
|
127
|
+
end
|
115
128
|
|
116
129
|
# Prebuild
|
117
130
|
if mode == 'consumer'
|
118
|
-
|
131
|
+
existing_prebuild_script = target.build_phases.detect do |phase|
|
132
|
+
if phase.respond_to?(:name)
|
133
|
+
phase.name != nil && phase.name.start_with?("[XCRC] Prebuild")
|
134
|
+
end
|
135
|
+
end
|
136
|
+
prebuild_script = existing_prebuild_script || target.new_shell_script_build_phase("[XCRC] Prebuild")
|
119
137
|
prebuild_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\""
|
120
|
-
prebuild_script.input_paths = ["
|
138
|
+
prebuild_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcprebuild"]
|
121
139
|
prebuild_script.output_paths = [
|
122
|
-
"$(TARGET_TEMP_DIR)/rc.enabled",
|
140
|
+
"$(TARGET_TEMP_DIR)/rc.enabled",
|
123
141
|
"$(DWARF_DSYM_FOLDER_PATH)/$(DWARF_DSYM_FILE_NAME)"
|
124
142
|
]
|
125
143
|
prebuild_script.dependency_file = "$(TARGET_TEMP_DIR)/prebuild.d"
|
126
144
|
|
127
145
|
# Move prebuild (last element) to the first position (to make it real 'prebuild')
|
128
|
-
target.build_phases.rotate!(-1)
|
146
|
+
target.build_phases.rotate!(-1) if existing_prebuild_script.nil?
|
147
|
+
elsif mode == 'producer'
|
148
|
+
# Delete existing prebuild build phase (to support switching between modes)
|
149
|
+
target.build_phases.delete_if do |phase|
|
150
|
+
if phase.respond_to?(:name)
|
151
|
+
phase.name != nil && phase.name.start_with?("[XCRC] Prebuild")
|
152
|
+
end
|
153
|
+
end
|
129
154
|
end
|
130
155
|
|
131
156
|
# Postbuild
|
132
|
-
|
157
|
+
existing_postbuild_script = target.build_phases.detect do |phase|
|
158
|
+
if phase.respond_to?(:name)
|
159
|
+
phase.name != nil && phase.name.start_with?("[XCRC] Postbuild")
|
160
|
+
end
|
161
|
+
end
|
162
|
+
postbuild_script = existing_postbuild_script || target.new_shell_script_build_phase("[XCRC] Postbuild")
|
133
163
|
postbuild_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\""
|
134
|
-
postbuild_script.input_paths = ["
|
164
|
+
postbuild_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcpostbuild"]
|
135
165
|
postbuild_script.output_paths = [
|
136
|
-
"$(TARGET_BUILD_DIR)/$(MODULES_FOLDER_PATH)/$(PRODUCT_MODULE_NAME).swiftmodule/$(
|
137
|
-
"$(TARGET_BUILD_DIR)/$(MODULES_FOLDER_PATH)/$(PRODUCT_MODULE_NAME).swiftmodule/$(
|
166
|
+
"$(TARGET_BUILD_DIR)/$(MODULES_FOLDER_PATH)/$(PRODUCT_MODULE_NAME).swiftmodule/$(XCRC_PLATFORM_PREFERRED_ARCH).swiftmodule.md5",
|
167
|
+
"$(TARGET_BUILD_DIR)/$(MODULES_FOLDER_PATH)/$(PRODUCT_MODULE_NAME).swiftmodule/$(XCRC_PLATFORM_PREFERRED_ARCH)-$(LLVM_TARGET_TRIPLE_VENDOR)-$(SWIFT_PLATFORM_TARGET_PREFIX)$(LLVM_TARGET_TRIPLE_SUFFIX).swiftmodule.md5"
|
138
168
|
]
|
139
169
|
postbuild_script.dependency_file = "$(TARGET_TEMP_DIR)/postbuild.d"
|
140
170
|
|
141
171
|
# Mark a sha as ready for a given platform and configuration when building the final_target
|
142
172
|
if mode == 'producer' && target.name == final_target
|
143
|
-
|
173
|
+
existing_mark_script = target.build_phases.detect do |phase|
|
174
|
+
if phase.respond_to?(:name)
|
175
|
+
phase.name != nil && phase.name.start_with?("[XCRC] Mark")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
mark_script = existing_mark_script || target.new_shell_script_build_phase("[XCRC] Mark")
|
144
179
|
mark_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\" mark --configuration $CONFIGURATION --platform $PLATFORM_NAME"
|
145
|
-
mark_script.input_paths = ["
|
180
|
+
mark_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcprepare"]
|
181
|
+
else
|
182
|
+
# Delete existing mark build phase (to support switching between modes or changing the final target)
|
183
|
+
target.build_phases.delete_if do |phase|
|
184
|
+
if phase.respond_to?(:name)
|
185
|
+
phase.name != nil && phase.name.start_with?("[XCRC] Mark")
|
186
|
+
end
|
187
|
+
end
|
146
188
|
end
|
147
189
|
end
|
148
190
|
|
@@ -196,15 +238,18 @@ module CocoapodsXCRemoteCacheModifier
|
|
196
238
|
release_url = 'https://api.github.com/repos/spotify/XCRemoteCache/releases/latest'
|
197
239
|
asset_url = nil
|
198
240
|
|
199
|
-
open(release_url
|
200
|
-
|
241
|
+
URI.open(release_url) do |f|
|
242
|
+
assets_array = JSON.parse(f.read)['assets']
|
243
|
+
# Pick fat archive
|
244
|
+
asset_array = assets_array.detect{|arr| arr['name'].include?(FAT_ARCHIVE_NAME_INFIX)}
|
245
|
+
asset_url = asset_array['url']
|
201
246
|
end
|
202
247
|
|
203
248
|
if asset_url.nil?
|
204
249
|
throw "Downloading XCRemoteCache failed"
|
205
250
|
end
|
206
251
|
|
207
|
-
open(asset_url,
|
252
|
+
URI.open(asset_url, "accept" => 'application/octet-stream') do |f|
|
208
253
|
File.open(local_package_location, "wb") do |file|
|
209
254
|
file.puts f.read
|
210
255
|
end
|
@@ -247,6 +292,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
247
292
|
# Returns the content (array of lines) of the lldbinit with stripped XCRemoteCache rewrite
|
248
293
|
def self.clean_lldbinit_content(lldbinit_path)
|
249
294
|
all_lines = []
|
295
|
+
return all_lines unless File.exist?(lldbinit_path)
|
250
296
|
File.open(lldbinit_path) { |file|
|
251
297
|
while(line = file.gets) != nil
|
252
298
|
line = line.strip
|
@@ -286,7 +332,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
286
332
|
|
287
333
|
begin
|
288
334
|
user_proj_directory = File.dirname(user_project.path)
|
289
|
-
set_configuration_default_values
|
335
|
+
set_configuration_default_values
|
290
336
|
|
291
337
|
unless @@configuration['enabled']
|
292
338
|
Pod::UI.puts "[XCRC] XCRemoteCache disabled"
|
@@ -295,7 +341,6 @@ module CocoapodsXCRemoteCacheModifier
|
|
295
341
|
end
|
296
342
|
|
297
343
|
validate_configuration()
|
298
|
-
|
299
344
|
mode = @@configuration['mode']
|
300
345
|
xccc_location = @@configuration['xccc_file']
|
301
346
|
remote_commit_file = @@configuration['remote_commit_file']
|
@@ -306,22 +351,59 @@ module CocoapodsXCRemoteCacheModifier
|
|
306
351
|
check_build_configuration = @@configuration['check_build_configuration']
|
307
352
|
check_platform = @@configuration['check_platform']
|
308
353
|
|
354
|
+
xccc_location_absolute = "#{user_proj_directory}/#{xccc_location}"
|
355
|
+
xcrc_location_absolute = "#{user_proj_directory}/#{xcrc_location}"
|
356
|
+
remote_commit_file_absolute = "#{user_proj_directory}/#{remote_commit_file}"
|
357
|
+
|
309
358
|
# Download XCRC
|
310
|
-
download_xcrc_if_needed(
|
359
|
+
download_xcrc_if_needed(xcrc_location_absolute)
|
311
360
|
|
312
361
|
# Save .rcinfo
|
313
|
-
|
362
|
+
root_rcinfo = generate_rcinfo()
|
363
|
+
save_rcinfo(root_rcinfo, user_proj_directory)
|
314
364
|
|
315
365
|
# Create directory for xccc & arc.rc location
|
316
366
|
Dir.mkdir(BIN_DIR) unless File.exist?(BIN_DIR)
|
317
367
|
|
318
368
|
# Remove previous xccc & arc.rc
|
319
|
-
File.delete(
|
320
|
-
File.delete(
|
369
|
+
File.delete(remote_commit_file_absolute) if File.exist?(remote_commit_file_absolute)
|
370
|
+
File.delete(xccc_location_absolute) if File.exist?(xccc_location_absolute)
|
321
371
|
|
322
372
|
# Prepare XCRC
|
373
|
+
|
374
|
+
# Pods projects can be generated only once (if incremental_installation is enabled)
|
375
|
+
# Always integrate XCRemoteCache to all Pods, in case it will be needed later
|
376
|
+
unless installer_context.pods_project.nil?
|
377
|
+
# Attach XCRemoteCache to Pods targets
|
378
|
+
installer_context.pods_project.targets.each do |target|
|
379
|
+
next if target.name.start_with?("Pods-")
|
380
|
+
next if target.name.end_with?("Tests")
|
381
|
+
next if exclude_targets.include?(target.name)
|
382
|
+
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target)
|
383
|
+
end
|
384
|
+
|
385
|
+
# Create .rcinfo into `Pods` directory as that .xcodeproj reads configuration from .xcodeproj location
|
386
|
+
pods_proj_directory = installer_context.sandbox_root
|
387
|
+
|
388
|
+
# Manual Pods/.rcinfo generation
|
389
|
+
|
390
|
+
# all paths in .rcinfo are relative to the root so paths used in Pods.xcodeproj need to be aligned
|
391
|
+
pods_path = Pathname.new(pods_proj_directory)
|
392
|
+
root_path = Pathname.new(user_proj_directory)
|
393
|
+
root_path_to_pods = root_path.relative_path_from(pods_path)
|
394
|
+
|
395
|
+
pods_rcinfo = root_rcinfo.merge({
|
396
|
+
'remote_commit_file' => "#{root_path_to_pods}/#{remote_commit_file}",
|
397
|
+
'xccc_file' => "#{root_path_to_pods}/#{xccc_location}"
|
398
|
+
})
|
399
|
+
save_rcinfo(pods_rcinfo, pods_proj_directory)
|
400
|
+
|
401
|
+
installer_context.pods_project.save()
|
402
|
+
end
|
403
|
+
|
404
|
+
# Enabled/disable XCRemoteCache for the main (user) project
|
323
405
|
begin
|
324
|
-
prepare_result = YAML.load`#{
|
406
|
+
prepare_result = YAML.load`#{xcrc_location_absolute}/xcprepare --configuration #{check_build_configuration} --platform #{check_platform}`
|
325
407
|
unless prepare_result['result'] || mode != 'consumer'
|
326
408
|
# Uninstall the XCRemoteCache for the consumer mode
|
327
409
|
disable_xcremotecache(user_project)
|
@@ -334,26 +416,11 @@ module CocoapodsXCRemoteCacheModifier
|
|
334
416
|
next
|
335
417
|
end
|
336
418
|
|
337
|
-
# Attach XCRemoteCache to Pods targets
|
338
|
-
installer_context.pods_project.targets.each do |target|
|
339
|
-
next if target.name.start_with?("Pods-")
|
340
|
-
next if target.name.end_with?("Tests")
|
341
|
-
next if exclude_targets.include?(target.name)
|
342
|
-
enable_xcremotecache(target, user_proj_directory, xcrc_location, xccc_location, mode, exclude_build_configurations, check_build_configuration, check_platform, final_target)
|
343
|
-
end
|
344
|
-
|
345
|
-
# Create .rcinfo into `Pods` directory as that .xcodeproj reads configuration from .xcodeproj location
|
346
|
-
pods_proj_directory = installer_context.sandbox_root
|
347
|
-
|
348
|
-
# Manual .rcinfo generation (in YAML format)
|
349
|
-
save_rcinfo({'extra_configuration_file' => "#{user_proj_directory}/.rcinfo"}, pods_proj_directory)
|
350
|
-
|
351
|
-
installer_context.pods_project.save()
|
352
419
|
|
353
420
|
# Attach XCRC to the app targets
|
354
421
|
user_project.targets.each do |target|
|
355
422
|
next if exclude_targets.include?(target.name)
|
356
|
-
enable_xcremotecache(target,
|
423
|
+
enable_xcremotecache(target, 0, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target)
|
357
424
|
end
|
358
425
|
|
359
426
|
# Set Target sourcemap
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-xcremotecache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bartosz Polaczyk
|
8
8
|
- Mark Vasiv
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: CocoaPods plugin that enables XCRemoteCache with the project.
|
15
15
|
email:
|
@@ -34,7 +34,7 @@ homepage: https://github.com/spotify/XCRemoteCache
|
|
34
34
|
licenses:
|
35
35
|
- Apache-2.0
|
36
36
|
metadata: {}
|
37
|
-
post_install_message:
|
37
|
+
post_install_message:
|
38
38
|
rdoc_options: []
|
39
39
|
require_paths:
|
40
40
|
- lib
|
@@ -49,8 +49,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '0'
|
51
51
|
requirements: []
|
52
|
-
rubygems_version: 3.2.
|
53
|
-
signing_key:
|
52
|
+
rubygems_version: 3.2.32
|
53
|
+
signing_key:
|
54
54
|
specification_version: 4
|
55
55
|
summary: A simple plugin that attaches to the post_install hook and modifies the generated
|
56
56
|
project to use XCRemoteCache. Supports both producing anc consuming parts.
|