cocoapods-binary-cache 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 939a85addd611d4a4bcd2b9ce1eeb7e036d58a937a14bdd4f772a6c8170e4394
4
- data.tar.gz: 0372d8f94f6e486259669f4db5431585a08645c1a23ad363258581fc5f679eff
3
+ metadata.gz: ffcf342c1552381e28baebabf84a328ee30b744beb832740d04b3125be23f2fe
4
+ data.tar.gz: 77d55d695ad65749fe94d2238361ac76b290e7f6873ceec2286b9020f236f804
5
5
  SHA512:
6
- metadata.gz: aa2bbc570dc6a1f462a85286578b8dc41a7ce189df2017177d083a70df9ac0d026c8ca8dea310eee2ae5b517b3418004045b8bcc782aa0440f755d8bab1dd0d4
7
- data.tar.gz: c98e55ae66d034897db4969bf9c12b0386a69a5139bc78ada10298875c5a9487d499852bb77195ffca42f11b0d2ab97fad940348da90d21296f6f0d6952b64af
6
+ metadata.gz: 00c13ec5a3bbc3df1ea0071cb1a90a91a85eb9a75f8a33853a5b60c4fcaf85dd6c5e3ac8aaaf0a6db6ceeb8e27d19bc6c5ede34b3d68e93cdeb4db2e808233b4
7
+ data.tar.gz: a39d29b292d9878fd808fb3aa61c7ae6c1b323b132dfa30810c71d32e3d6089cf80109f23fc1c4f57399df1d187c102ef78f23847ff97635b513a7f42a735702
@@ -1,7 +1,6 @@
1
1
  module Pod
2
2
  class Specification
3
3
  def empty_source_files?
4
-
5
4
  unless subspecs.empty?
6
5
  # return early if there are some files in subpec(s) but process the spec itself
7
6
  return false unless subspecs.all?(&:empty_source_files?)
@@ -5,7 +5,6 @@ module PodPrebuild
5
5
  end
6
6
 
7
7
  def run
8
- edit_scheme_for_code_coverage if PodPrebuild::Env.prebuild_stage?
9
8
  diagnose if PodPrebuild::Env.integration_stage?
10
9
  end
11
10
 
@@ -20,15 +19,5 @@ module PodPrebuild
20
19
  ).run
21
20
  end
22
21
  end
23
-
24
- def edit_scheme_for_code_coverage
25
- return unless PodPrebuild.config.dev_pods_enabled?
26
- return unless @installer_context.sandbox.instance_of?(Pod::PrebuildSandbox)
27
-
28
- # Modify pods scheme to support code coverage
29
- # If we don't prebuild dev pod -> no need to care about this in Pod project
30
- # because we setup in the main project (ex. DriverCI scheme)
31
- SchemeEditor.edit_to_support_code_coverage(@installer_context.sandbox)
32
- end
33
22
  end
34
23
  end
@@ -18,5 +18,4 @@ require_relative "pod-binary/prebuild_hook"
18
18
  require_relative "pod-binary/prebuild"
19
19
  require_relative "prebuild_output/metadata"
20
20
  require_relative "prebuild_output/output"
21
- require_relative "scheme_editor"
22
21
  require_relative "diagnosis/diagnosis"
@@ -4,26 +4,25 @@ require_relative "../../pod-rome/xcodebuild_command"
4
4
  module Pod
5
5
  class Prebuild
6
6
  def self.build(options)
7
- target = options[:target]
8
- return if target.nil?
7
+ targets = options[:targets] || []
8
+ return if targets.empty?
9
9
 
10
- Pod::UI.puts "Building target: #{target}...".magenta
11
10
  options[:sandbox] = Pod::Sandbox.new(Pathname(options[:sandbox])) unless options[:sandbox].is_a?(Pod::Sandbox)
12
11
  options[:build_dir] = build_dir(options[:sandbox].root)
13
12
 
14
- case target.platform.name
13
+ case targets[0].platform.name
15
14
  when :ios, :tvos, :watchos
16
15
  XcodebuildCommand.new(options).run
17
16
  when :osx
18
17
  xcodebuild(
19
18
  sandbox: options[:sandbox],
20
- target: target.label,
19
+ targets: targets,
21
20
  configuration: options[:configuration],
22
21
  sdk: "macosx",
23
22
  args: options[:args]
24
23
  )
25
24
  else
26
- raise "Unsupported platform for '#{target.name}': '#{target.platform.name}'"
25
+ raise "Unsupported platform for '#{targets[0].name}': '#{targets[0].platform.name}'"
27
26
  end
28
27
  raise "The build directory was not found in the expected location" unless options[:build_dir].directory?
29
28
  end
@@ -3,17 +3,31 @@ require_relative "../source_installer"
3
3
  module Pod
4
4
  class Installer
5
5
  # Override the download step to skip download and prepare file in target folder
6
- define_method(:install_source_of_pod) do |pod_name|
7
- pod_installer = create_pod_installer(pod_name)
8
- # Injected code
9
- # ------------------------------------------
10
- if should_integrate_prebuilt_pod?(pod_name)
11
- pod_installer.install_for_prebuild!(sandbox)
6
+ alias original_create_pod_installer create_pod_installer
7
+ def create_pod_installer(name)
8
+ if should_integrate_prebuilt_pod?(name)
9
+ create_prebuilt_source_installer(name)
12
10
  else
13
- pod_installer.install!
11
+ create_normal_source_installer(name)
14
12
  end
15
- # ------------------------------------------
16
- @installed_specs.concat(pod_installer.specs_by_platform.values.flatten.uniq)
13
+ end
14
+
15
+ private
16
+
17
+ def create_normal_source_installer(name)
18
+ original_create_pod_installer(name)
19
+ end
20
+
21
+ def create_prebuilt_source_installer(name)
22
+ source_installer = PodSourceInstaller.new(sandbox, podfile, specs_for_pod(name))
23
+ pod_installer = PrebuiltSourceInstaller.new(
24
+ sandbox,
25
+ podfile,
26
+ specs_for_pod(name),
27
+ source_installer: source_installer
28
+ )
29
+ pod_installers << pod_installer
30
+ pod_installer
17
31
  end
18
32
 
19
33
  def should_integrate_prebuilt_pod?(name)
@@ -1,21 +1,27 @@
1
- # NOTE:
2
- # This file will only be loaded on normal pod install step
3
- # so there's no need to check is_prebuild_stage
4
-
5
- # Provide a special "download" process for prebuilded pods.
6
- #
7
- # As the frameworks is already exsited in local folder. We
8
- # just create a symlink to the original target folder.
9
- #
10
1
  module Pod
11
2
  class Installer
12
- class PodSourceInstaller
13
- def install_for_prebuild!(standard_sanbox)
14
- return if !PodPrebuild.config.dev_pods_enabled? && standard_sanbox.local?(name)
3
+ class PrebuiltSourceInstaller < PodSourceInstaller
4
+ def initialize(*args, **kwargs)
5
+ @source_installer = kwargs.delete(:source_installer)
6
+ super(*args, **kwargs)
7
+ end
8
+
9
+ def prebuild_sandbox
10
+ @prebuild_sandbox ||= Pod::PrebuildSandbox.from_standard_sandbox(sandbox)
11
+ end
12
+
13
+ def install!
14
+ @source_installer.install! if PodPrebuild.config.still_download_sources?(name)
15
+ install_prebuilt_framework!
16
+ end
17
+
18
+ private
19
+
20
+ def install_prebuilt_framework!
21
+ return if !PodPrebuild.config.dev_pods_enabled? && sandbox.local?(name)
15
22
 
16
23
  # make a symlink to target folder
17
24
  # TODO (bang): Unify to 1 sandbox to optimize and avoid inconsistency
18
- prebuild_sandbox = Pod::PrebuildSandbox.from_standard_sandbox(standard_sanbox)
19
25
  # if spec used in multiple platforms, it may return multiple paths
20
26
  target_names = prebuild_sandbox.existed_target_names_for_pod_name(name)
21
27
  target_names.each do |name|
@@ -24,7 +30,7 @@ module Pod
24
30
  # If have only one platform, just place int the root folder of this pod.
25
31
  # If have multiple paths, we use a sperated folder to store different
26
32
  # platform frameworks. e.g. AFNetworking/AFNetworking-iOS/AFNetworking.framework
27
- target_folder = standard_sanbox.pod_dir(self.name)
33
+ target_folder = sandbox.pod_dir(self.name)
28
34
  target_folder += real_file_folder.basename if target_names.count > 1
29
35
  target_folder += PodPrebuild.config.prebuilt_path
30
36
  target_folder.rmtree if target_folder.exist?
@@ -73,8 +79,6 @@ module Pod
73
79
  end
74
80
  end
75
81
 
76
- private
77
-
78
82
  def walk(path, &action)
79
83
  return unless path.exist?
80
84
 
@@ -1,7 +1,6 @@
1
1
  require "fileutils"
2
2
  require_relative "../prebuild_output/output"
3
3
  require_relative "../helper/lockfile"
4
- require_relative "../helper/prebuild_order"
5
4
  require_relative "helper/target_checker"
6
5
  require_relative "helper/build"
7
6
 
@@ -38,27 +37,27 @@ module Pod
38
37
  def prebuild_frameworks!
39
38
  existed_framework_folder = sandbox.generate_framework_path
40
39
  sandbox_path = sandbox.root
40
+ targets = targets_to_prebuild
41
+ Pod::UI.puts "Prebuild frameworks (total #{targets.count}): #{targets.map(&:name)}".magenta
41
42
 
42
- targets = PodPrebuild::BuildOrder.order_targets(targets_to_prebuild)
43
- Pod::UI.puts "Prebuild frameworks (total #{targets.count}): #{targets.map(&:name)}"
44
- Pod::Prebuild.remove_build_dir(sandbox_path)
45
43
  run_code_gen!(targets)
44
+
45
+ Pod::Prebuild.remove_build_dir(sandbox_path)
46
+ Pod::Prebuild.build(
47
+ sandbox: sandbox_path,
48
+ targets: targets,
49
+ configuration: PodPrebuild.config.prebuild_config,
50
+ output_path: sandbox.generate_framework_path,
51
+ bitcode_enabled: PodPrebuild.config.bitcode_enabled?,
52
+ device_build_enabled: PodPrebuild.config.device_build_enabled?,
53
+ disable_dsym: PodPrebuild.config.disable_dsym?,
54
+ args: PodPrebuild.config.build_args
55
+ )
56
+ Pod::Prebuild.remove_build_dir(sandbox_path)
57
+
46
58
  targets.each do |target|
47
- output_path = sandbox.framework_folder_path_for_target_name(target.name)
48
- output_path.mkpath unless output_path.exist?
49
- Pod::Prebuild.build(
50
- sandbox: sandbox_path,
51
- target: target,
52
- configuration: PodPrebuild.config.prebuild_config,
53
- output_path: output_path,
54
- bitcode_enabled: PodPrebuild.config.bitcode_enabled?,
55
- device_build_enabled: PodPrebuild.config.device_build_enabled?,
56
- disable_dsym: PodPrebuild.config.disable_dsym?,
57
- args: PodPrebuild.config.build_args
58
- )
59
- collect_metadata(target, output_path)
59
+ collect_metadata(target, sandbox.framework_folder_path_for_target_name(target.name))
60
60
  end
61
- Pod::Prebuild.remove_build_dir(sandbox_path)
62
61
 
63
62
  # copy vendored libraries and frameworks
64
63
  targets.each do |target|
@@ -3,7 +3,7 @@ require_relative "xcodebuild_raw"
3
3
  class XcodebuildCommand # rubocop:disable Metrics/ClassLength
4
4
  def initialize(options)
5
5
  @options = options
6
- case options[:target].platform.name
6
+ case options[:targets][0].platform.name
7
7
  when :ios
8
8
  @options[:device] = "iphoneos"
9
9
  @options[:simulator] = "iphonesimulator"
@@ -21,16 +21,18 @@ class XcodebuildCommand # rubocop:disable Metrics/ClassLength
21
21
  build_for_sdk(simulator) if build_types.include?(:simulator)
22
22
  build_for_sdk(device) if build_types.include?(:device)
23
23
 
24
- case build_types
25
- when [:simulator]
26
- collect_output(Dir[target_products_dir_of(simulator) + "/*"])
27
- when [:device]
28
- collect_output(Dir[target_products_dir_of(device) + "/*"])
29
- else
30
- # When merging contents of `simulator` & `device`, prefer contents of `device` over `simulator`
31
- # https://github.com/grab/cocoapods-binary-cache/issues/25
32
- collect_output(Dir[target_products_dir_of(device) + "/*"])
33
- create_universal_framework
24
+ targets.each do |target|
25
+ case build_types
26
+ when [:simulator]
27
+ collect_output(target, Dir[target_products_dir_of(target, simulator) + "/*"])
28
+ when [:device]
29
+ collect_output(target, Dir[target_products_dir_of(target, device) + "/*"])
30
+ else
31
+ # When merging contents of `simulator` & `device`, prefer contents of `device` over `simulator`
32
+ # https://github.com/grab/cocoapods-binary-cache/issues/25
33
+ collect_output(target, Dir[target_products_dir_of(target, device) + "/*"])
34
+ create_universal_framework(target)
35
+ end
34
36
  end
35
37
  end
36
38
 
@@ -59,40 +61,34 @@ class XcodebuildCommand # rubocop:disable Metrics/ClassLength
59
61
  end
60
62
 
61
63
  def build_for_sdk(sdk)
62
- framework_path = framework_path_of(sdk)
63
- if Dir.exist?(framework_path)
64
- Pod::UI.puts_indented "--> Framework already exists at: #{framework_path}"
65
- return
66
- end
67
-
68
- succeeded, = xcodebuild(
64
+ xcodebuild(
69
65
  sandbox: sandbox,
70
- target: target.label,
66
+ scheme: scheme,
67
+ targets: targets.map(&:label),
71
68
  configuration: configuration,
72
69
  sdk: sdk,
73
- deployment_target: target.platform.deployment_target.to_s,
70
+ deployment_target: targets.map { |t| t.platform.deployment_target }.max.to_s,
74
71
  args: sdk == simulator ? @build_args[:simulator] : @build_args[:device]
75
72
  )
76
- raise "Build framework failed: #{target.label}" unless succeeded
77
73
  end
78
74
 
79
- def create_universal_framework
80
- merge_framework_binary
81
- merge_framework_dsym
82
- merge_swift_headers
83
- merge_swift_modules
75
+ def create_universal_framework(target)
76
+ merge_framework_binary(target)
77
+ merge_framework_dsym(target)
78
+ merge_swift_headers(target)
79
+ merge_swift_modules(target)
84
80
  end
85
81
 
86
- def merge_framework_binary
87
- merge_contents("/#{module_name}", &method(:create_fat_binary))
82
+ def merge_framework_binary(target)
83
+ merge_contents(target, "/#{target.product_module_name}", &method(:create_fat_binary))
88
84
  end
89
85
 
90
- def merge_framework_dsym
91
- merge_contents(".dSYM/Contents/Resources/DWARF/#{module_name}", &method(:create_fat_binary))
86
+ def merge_framework_dsym(target)
87
+ merge_contents(target, ".dSYM/Contents/Resources/DWARF/#{target.product_module_name}", &method(:create_fat_binary))
92
88
  end
93
89
 
94
- def merge_swift_headers
95
- merge_contents("/Headers/#{module_name}-Swift.h") do |options|
90
+ def merge_swift_headers(target)
91
+ merge_contents(target, "/Headers/#{target.product_module_name}-Swift.h") do |options|
96
92
  merged_header = <<~HEREDOC
97
93
  #if TARGET_OS_SIMULATOR // merged by cocoapods-binary
98
94
  #{File.read(options[:simulator])}
@@ -104,19 +100,19 @@ class XcodebuildCommand # rubocop:disable Metrics/ClassLength
104
100
  end
105
101
  end
106
102
 
107
- def merge_swift_modules
108
- merge_contents("/Modules/#{module_name}.swiftmodule") do |options|
103
+ def merge_swift_modules(target)
104
+ merge_contents(target, "/Modules/#{target.product_module_name}.swiftmodule") do |options|
109
105
  # Note: swiftmodules of `device` were copied beforehand,
110
106
  # here, we only need to copy swiftmodules of `simulator`
111
107
  FileUtils.cp_r(options[:simulator] + "/.", options[:output])
112
108
  end
113
109
  end
114
110
 
115
- def merge_contents(path_suffix, &merger)
111
+ def merge_contents(target, path_suffix, &merger)
116
112
  simulator_, device_, output_ = [
117
- framework_path_of(simulator),
118
- framework_path_of(device),
119
- "#{output_path}/#{module_name}.framework"
113
+ framework_path_of(target, simulator),
114
+ framework_path_of(target, device),
115
+ "#{output_path(target)}/#{target.product_module_name}.framework"
120
116
  ].map { |p| p + path_suffix }
121
117
  return unless File.exist?(simulator_) && File.exist?(device_)
122
118
 
@@ -127,27 +123,24 @@ class XcodebuildCommand # rubocop:disable Metrics/ClassLength
127
123
  cmd = ["lipo", " -create"]
128
124
  cmd << "-output" << options[:output]
129
125
  cmd << options[:simulator] << options[:device]
130
- Pod::UI.puts `#{cmd.join(" ")}`
126
+ `#{cmd.join(" ")}`
131
127
  end
132
128
 
133
- def collect_output(paths)
129
+ def collect_output(target, paths)
130
+ FileUtils.mkdir_p(output_path(target))
134
131
  paths = [paths] unless paths.is_a?(Array)
135
132
  paths.each do |path|
136
- FileUtils.rm_rf(File.join(output_path, File.basename(path)))
137
- FileUtils.cp_r(path, output_path)
133
+ FileUtils.rm_rf(File.join(output_path(target), File.basename(path)))
134
+ FileUtils.cp_r(path, output_path(target))
138
135
  end
139
136
  end
140
137
 
141
- def target_products_dir_of(sdk)
138
+ def target_products_dir_of(target, sdk)
142
139
  "#{build_dir}/#{configuration}-#{sdk}/#{target.name}"
143
140
  end
144
141
 
145
- def framework_path_of(sdk)
146
- "#{target_products_dir_of(sdk)}/#{module_name}.framework"
147
- end
148
-
149
- def module_name
150
- target.product_module_name
142
+ def framework_path_of(target, sdk)
143
+ "#{target_products_dir_of(target, sdk)}/#{target.product_module_name}.framework"
151
144
  end
152
145
 
153
146
  def sandbox
@@ -158,12 +151,16 @@ class XcodebuildCommand # rubocop:disable Metrics/ClassLength
158
151
  @options[:build_dir]
159
152
  end
160
153
 
161
- def output_path
162
- @options[:output_path]
154
+ def output_path(target)
155
+ "#{@options[:output_path]}/#{target.label}"
156
+ end
157
+
158
+ def scheme
159
+ @options[:scheme]
163
160
  end
164
161
 
165
- def target
166
- @options[:target]
162
+ def targets
163
+ @options[:targets]
167
164
  end
168
165
 
169
166
  def configuration
@@ -8,36 +8,35 @@ PLATFORM_OF_SDK = {
8
8
 
9
9
  def xcodebuild(options)
10
10
  sdk = options[:sdk] || "iphonesimulator"
11
+ targets = options[:targets] || [options[:target]]
11
12
  platform = PLATFORM_OF_SDK[sdk]
12
13
 
13
14
  cmd = ["xcodebuild"]
14
15
  cmd << "-project" << options[:sandbox].project_path.realdirpath
15
- cmd << "-scheme" << options[:target]
16
+ targets.each { |target| cmd << "-target" << target }
16
17
  cmd << "-configuration" << options[:configuration]
17
18
  cmd << "-sdk" << sdk
18
19
  cmd << Fourflusher::SimControl.new.destination(:oldest, platform, options[:deployment_target]) unless platform.nil?
19
20
  cmd += options[:args] if options[:args]
21
+ cmd << "build"
20
22
  cmd << "2>&1"
21
23
  cmd = cmd.join(" ")
22
24
 
23
25
  Pod::UI.puts_indented "$ #{cmd}"
24
26
  log = `#{cmd}`
27
+ return if $?.exitstatus.zero? # rubocop:disable Style/SpecialGlobalVars
25
28
 
26
- succeeded = $?.exitstatus.zero? # rubocop:disable Style/SpecialGlobalVars
27
- unless succeeded
28
- begin
29
- raise "Unexpected error" unless log.include?("** BUILD FAILED **")
30
-
31
- require "xcpretty" # TODO (thuyen): Revise this dependency
32
- # use xcpretty to print build log
33
- # 64 represent command invalid. http://www.manpagez.com/man/3/sysexits/
34
- printer = XCPretty::Printer.new({:formatter => XCPretty::Simple, :colorize => "auto"})
35
- log.each_line do |line|
36
- printer.pretty_print(line)
37
- end
38
- rescue
39
- Pod::UI.puts log.red
29
+ begin
30
+ require "xcpretty" # TODO (thuyen): Revise this dependency
31
+ # use xcpretty to print build log
32
+ # 64 represent command invalid. http://www.manpagez.com/man/3/sysexits/
33
+ printer = XCPretty::Printer.new({:formatter => XCPretty::Simple, :colorize => "auto"})
34
+ log.each_line do |line|
35
+ printer.pretty_print(line)
40
36
  end
37
+ rescue
38
+ Pod::UI.puts log.red
39
+ ensure
40
+ raise "Fail to build targets: #{targets}"
41
41
  end
42
- [succeeded, log]
43
42
  end
@@ -103,6 +103,11 @@ module PodPrebuild
103
103
  @dsl_config[:disable_dsym]
104
104
  end
105
105
 
106
+ def still_download_sources?(name)
107
+ option = @dsl_config[:still_download_sources]
108
+ option.is_a?(Array) ? option.include?(name) : option
109
+ end
110
+
106
111
  def dont_remove_source_code?
107
112
  @dsl_config[:dont_remove_source_code]
108
113
  end
@@ -162,6 +167,7 @@ module PodPrebuild
162
167
  :bitcode_enabled,
163
168
  :device_build_enabled,
164
169
  :disable_dsym,
170
+ :still_download_sources,
165
171
  :dont_remove_source_code,
166
172
  :build_args,
167
173
  :save_cache_validation_to,
@@ -17,7 +17,8 @@ module PodPrebuild
17
17
  comps << cmd
18
18
  comps << "&> /dev/null" if options[:ignore_output]
19
19
  comps << "|| true" if options[:can_fail]
20
- `#{comps.join(" ")}`
20
+ cmd = comps.join(" ")
21
+ raise "Fail to run command '#{cmd}'" unless system(cmd)
21
22
  end
22
23
 
23
24
  def git_clone(cmd, options = {})
@@ -8,6 +8,7 @@ module PodPrebuild
8
8
  super(options)
9
9
  @cache_branch = options[:cache_branch]
10
10
  @push_cache = options[:push_cache]
11
+ @repo_update = options[:repo_update]
11
12
  @fetcher = PodPrebuild::CacheFetcher.new(options)
12
13
  @pusher = PodPrebuild::CachePusher.new(options)
13
14
  end
@@ -26,6 +27,7 @@ module PodPrebuild
26
27
 
27
28
  def prebuild
28
29
  Pod::UI.step("Installation") do
30
+ installer.repo_update = @repo_update
29
31
  installer.install!
30
32
  end
31
33
  end
@@ -9,6 +9,7 @@ module Pod
9
9
  def self.options
10
10
  [
11
11
  ["--config", "Config (Debug, Test...) to prebuild"],
12
+ ["--repo-update", "Update pod repo before installing"],
12
13
  ["--push", "Push cache to repo upon completion"],
13
14
  ["--all", "Prebuild all binary pods regardless of cache validation"],
14
15
  ["--targets", "Targets to prebuild. Use comma (,) to specify a list of targets"]
@@ -28,6 +29,7 @@ module Pod
28
29
  @prebuilder = PodPrebuild::CachePrebuilder.new(
29
30
  config: prebuild_config,
30
31
  cache_branch: argv.shift_argument || "master",
32
+ repo_update: argv.flag?("repo-update"),
31
33
  push_cache: argv.flag?("push")
32
34
  )
33
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-binary-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bang Nguyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-09 00:00:00.000000000 Z
11
+ date: 2020-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -125,7 +125,6 @@ files:
125
125
  - lib/cocoapods-binary-cache/helper/lockfile.rb
126
126
  - lib/cocoapods-binary-cache/helper/path_utils.rb
127
127
  - lib/cocoapods-binary-cache/helper/podspec.rb
128
- - lib/cocoapods-binary-cache/helper/prebuild_order.rb
129
128
  - lib/cocoapods-binary-cache/hooks/post_install.rb
130
129
  - lib/cocoapods-binary-cache/hooks/pre_install.rb
131
130
  - lib/cocoapods-binary-cache/main.rb
@@ -153,7 +152,6 @@ files:
153
152
  - lib/cocoapods-binary-cache/pod-rome/xcodebuild_raw.rb
154
153
  - lib/cocoapods-binary-cache/prebuild_output/metadata.rb
155
154
  - lib/cocoapods-binary-cache/prebuild_output/output.rb
156
- - lib/cocoapods-binary-cache/scheme_editor.rb
157
155
  - lib/cocoapods-binary-cache/state_store.rb
158
156
  - lib/cocoapods-binary-cache/ui.rb
159
157
  - lib/cocoapods_plugin.rb
@@ -1,12 +0,0 @@
1
- module PodPrebuild
2
- module BuildOrder
3
- def self.order_targets(targets)
4
- # It's more efficient to build frameworks that have more dependencies first
5
- # so that the build parallelism is ultilized
6
- # >> --- MyFramework ----------------------------------|
7
- # >> --- ADependency ---|
8
- # >> --- AnotherADependency ---|
9
- targets.sort_by { |t| -t.recursive_dependent_targets.count }
10
- end
11
- end
12
- end
@@ -1,36 +0,0 @@
1
- # Copyright 2019 Grabtaxi Holdings PTE LTE (GRAB), All rights reserved.
2
- # Use of this source code is governed by an MIT-style license that can be found in the LICENSE file
3
-
4
- require "rexml/document"
5
-
6
- class SchemeEditor
7
- def self.edit_to_support_code_coverage(sandbox)
8
- pod_proj_path = sandbox.project_path
9
- Pod::UI.message "Modify schemes of pod project to support code coverage of prebuilt local pod: #{pod_proj_path}"
10
- scheme_files = Dir["#{pod_proj_path}/**/*.xcscheme"]
11
- scheme_files.each do |file_path|
12
- scheme_name = File.basename(file_path, ".*")
13
- next unless sandbox.local?(scheme_name)
14
-
15
- Pod::UI.message "Modify scheme to enable coverage symbol when prebuild: #{scheme_name}"
16
-
17
- doc = File.open(file_path, "r") { |f| REXML::Document.new(f) }
18
- scheme = doc.elements["Scheme"]
19
- test_action = scheme.elements["TestAction"]
20
- next if test_action.attributes["codeCoverageEnabled"] == "YES"
21
-
22
- test_action.add_attribute("codeCoverageEnabled", "YES")
23
- test_action.add_attribute("onlyGenerateCoverageForSpecifiedTargets", "YES")
24
- coverage_targets = REXML::Element.new("CodeCoverageTargets")
25
- buildable_ref = scheme
26
- .elements["BuildAction"]
27
- .elements["BuildActionEntries"]
28
- .elements["BuildActionEntry"]
29
- .elements["BuildableReference"]
30
- new_buildable_ref = buildable_ref.clone # Need to clone, otherwise the original one will be move to new place
31
- coverage_targets.add_element(new_buildable_ref)
32
- test_action.add_element(coverage_targets)
33
- File.open(file_path, "w") { |f| doc.write(f) }
34
- end
35
- end
36
- end