cocoapods-ppbuild 0.0.4 → 1.0.2

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: 7a60801b88a3a65f9772965dbb9f3902abb9359af6d13f22417f14b7e8473843
4
- data.tar.gz: cccc9a3f322b92e85832435a7b3deae1a79afc36d5651c9bdc48e174bd3453fc
3
+ metadata.gz: 5814aba56288624bef19f4bf6bbeb81ce9b588f649602c530d8de4f88ff4bdfa
4
+ data.tar.gz: 56020bd0dde6cade57650ec2c892ea2221408ed5b6c7a49e2a71e81cd94addba
5
5
  SHA512:
6
- metadata.gz: ed89338e7ec4b7a6695b2679c6ebe092550c51ad89b9c56b8b99bdfe6638f510ae58feb3528f8ff14c0ea5c02c3a3a559d746e9108f0b0eab1020f96a91c7e57
7
- data.tar.gz: 3722e1443ad0cdf5e0aebf029c3fd1cdd4cac946e5d8f17dc81fdbac16af96deef2f02ff9f067a1f5cd87e4140e76e8a7b0dedc5ed24ccded17b191b0481343c
6
+ metadata.gz: 860d510a8fb04429890d099d88fd953ff5d2c0b7b3c2991245bbe211da8efb4601a302c6174178d491d7fc60dc595139b6d5a198b1aab35e566e9aa4dad66294
7
+ data.tar.gz: ae896e12c09e34ec9cded032c303c14c9b383b9401e0c293cae9f082fbbe3f04f5720b71f267b1d46950496d30922afe320a5e9af808f22ea8a010cdd0ef3df0
@@ -51,7 +51,10 @@ module Pod
51
51
  FileUtils.cp_r source, target, :remove_destination => true
52
52
  else
53
53
  FileUtils.cp source, target
54
- end
54
+ end
55
+ if not target.exist?
56
+ raise "资源导入失败:#{target}"
57
+ end
55
58
  end
56
59
  end
57
60
 
@@ -61,7 +64,6 @@ module Pod
61
64
  end
62
65
 
63
66
  target_names.each do |name|
64
-
65
67
  # symbol link copy all substructure
66
68
  real_file_folder = prebuild_sandbox.framework_folder_path_for_target_name(name)
67
69
 
@@ -75,8 +77,7 @@ module Pod
75
77
  end
76
78
  target_folder.rmtree if target_folder.exist?
77
79
  target_folder.mkpath
78
-
79
-
80
+
80
81
  walk(real_file_folder) do |child|
81
82
  source = child
82
83
 
@@ -135,15 +136,18 @@ module Pod
135
136
  # Remove the old target files if prebuild frameworks changed
136
137
  def remove_target_files_if_needed
137
138
 
138
- changes = Pod::Prebuild::Passer.prebuild_pods_changes
139
+ changes = Pod::Prebuild::Passer.prebuild_pod_targets_changes
139
140
  updated_names = []
140
141
  if changes == nil
141
142
  updated_names = PrebuildSandbox.from_standard_sandbox(self.sandbox).exsited_framework_pod_names
142
143
  else
143
- added = changes.added
144
- changed = changes.changed
145
- deleted = changes.deleted
146
- updated_names = added + changed + deleted
144
+ t_changes = Pod::Prebuild::Passer.prebuild_pods_changes
145
+ added = t_changes.added
146
+ changed = t_changes.changed
147
+ deleted = t_changes.deleted
148
+ updated_names = (added + changed + deleted).to_a
149
+
150
+ updated_names = (changes + updated_names).uniq
147
151
  end
148
152
 
149
153
  updated_names.each do |name|
@@ -160,88 +164,138 @@ module Pod
160
164
 
161
165
  end
162
166
 
167
+ def save_change_targets!
168
+ sandbox_path = sandbox.root
169
+ existed_framework_folder = sandbox.generate_framework_path
170
+ if local_manifest != nil
171
+ changes = prebuild_pods_changes
172
+ added = changes.added
173
+ changed = changes.changed
174
+ unchanged = changes.unchanged
175
+ deleted = changes.deleted.to_a
176
+
177
+ existed_framework_folder.mkdir unless existed_framework_folder.exist?
178
+ exsited_framework_pod_names = sandbox.exsited_framework_pod_names
179
+
180
+ # additions
181
+ missing = unchanged.select do |pod_name|
182
+ not exsited_framework_pod_names.include?(pod_name)
183
+ end
184
+
185
+ # 保存有改变的target列表
186
+ root_names_to_update = (added + changed + missing).uniq
187
+ updates_target_names = (root_names_to_update + deleted).uniq
188
+ cache = []
189
+ updates_targets = []
190
+ updates_target_names.each do |pod_name|
191
+ tars = Pod.fast_get_targets_for_pod_name(pod_name, self.pod_targets, cache)
192
+ if tars.nil?
193
+ tars = []
194
+ end
195
+ updates_targets = (updates_targets + tars).uniq
196
+ end
197
+ updates_dependency_targets = updates_targets.map {|t|
198
+ t.recursive_dependent_targets
199
+ }.flatten.uniq || []
200
+ dependency_names = updates_dependency_targets.map { |e| e.pod_name }
201
+ if Pod::Prebuild::Passer.prebuild_pod_targets_changes.nil?
202
+ Pod::Prebuild::Passer.prebuild_pod_targets_changes = (updates_target_names + dependency_names).uniq
203
+ else
204
+ Pod::Prebuild::Passer.prebuild_pod_targets_changes = (Pod::Prebuild::Passer.prebuild_pod_targets_changes + updates_target_names + dependency_names).uniq
205
+ end
206
+ end
207
+ end
163
208
 
164
209
  # Modify specification to use only the prebuild framework after analyzing
165
210
  old_method2 = instance_method(:resolve_dependencies)
166
211
  define_method(:resolve_dependencies) do
212
+ if Pod::is_prebuild_stage
213
+ # call original
214
+ old_method2.bind(self).()
215
+ self.save_change_targets!
216
+ else
217
+ # Remove the old target files, else it will not notice file changes
218
+ self.remove_target_files_if_needed
219
+ # call original
220
+ old_method2.bind(self).()
221
+ # ...
222
+ # ...
223
+ # ...
224
+ # after finishing the very complex orginal function
225
+
226
+ # check the pods
227
+ # Although we have did it in prebuild stage, it's not sufficient.
228
+ # Same pod may appear in another target in form of source code.
229
+ # Prebuild.check_one_pod_should_have_only_one_target(self.prebuild_pod_targets)
230
+ self.validate_every_pod_only_have_one_form
231
+
232
+
233
+ # prepare
234
+ cache = []
167
235
 
168
- # Remove the old target files, else it will not notice file changes
169
- self.remove_target_files_if_needed
170
-
171
- # call original
172
- old_method2.bind(self).()
173
- # ...
174
- # ...
175
- # ...
176
- # after finishing the very complex orginal function
177
-
178
- # check the pods
179
- # Although we have did it in prebuild stage, it's not sufficient.
180
- # Same pod may appear in another target in form of source code.
181
- # Prebuild.check_one_pod_should_have_only_one_target(self.prebuild_pod_targets)
182
- self.validate_every_pod_only_have_one_form
183
-
184
-
185
- # prepare
186
- cache = []
187
-
188
- def add_vendered_framework(spec, platform, added_framework_file_path)
189
- if spec.attributes_hash[platform] == nil
190
- spec.attributes_hash[platform] = {}
236
+ def add_vendered_framework(spec, platform, added_framework_file_path)
237
+ if spec.attributes_hash[platform] == nil
238
+ spec.attributes_hash[platform] = {}
239
+ end
240
+ vendored_frameworks = spec.attributes_hash[platform]["vendored_frameworks"] || []
241
+ vendored_frameworks = [vendored_frameworks] if vendored_frameworks.kind_of?(String)
242
+ vendored_frameworks += [added_framework_file_path]
243
+ spec.attributes_hash[platform]["vendored_frameworks"] = vendored_frameworks
191
244
  end
192
- vendored_frameworks = spec.attributes_hash[platform]["vendored_frameworks"] || []
193
- vendored_frameworks = [vendored_frameworks] if vendored_frameworks.kind_of?(String)
194
- vendored_frameworks += [added_framework_file_path]
195
- spec.attributes_hash[platform]["vendored_frameworks"] = vendored_frameworks
196
- end
197
- def empty_source_files(spec)
198
- spec.attributes_hash["source_files"] = []
199
- ["ios", "watchos", "tvos", "osx"].each do |plat|
200
- if spec.attributes_hash[plat] != nil
201
- spec.attributes_hash[plat]["source_files"] = []
245
+ def empty_source_files(spec)
246
+ spec.attributes_hash["source_files"] = []
247
+ ["ios", "watchos", "tvos", "osx"].each do |plat|
248
+ if spec.attributes_hash[plat] != nil
249
+ spec.attributes_hash[plat]["source_files"] = []
250
+ end
202
251
  end
203
252
  end
204
- end
205
253
 
206
254
 
207
- specs = self.analysis_result.specifications
208
- prebuilt_specs = (specs.select do |spec|
209
- self.prebuild_pod_names.include? spec.root.name
210
- end)
255
+ specs = self.analysis_result.specifications
256
+ prebuilt_specs = (specs.select do |spec|
257
+ self.prebuild_pod_names.include? spec.root.name
258
+ end)
211
259
 
212
- prebuilt_specs.each do |spec|
260
+ prebuilt_specs.each do |spec|
213
261
 
214
- # Use the prebuild framworks as vendered frameworks
215
- # get_corresponding_targets
216
- targets = Pod.fast_get_targets_for_pod_name(spec.root.name, self.pod_targets, cache)
217
- targets.each do |target|
218
- # the framework_file_path rule is decided when `install_for_prebuild`,
219
- # as to compitable with older version and be less wordy.
220
- framework_file_path = target.framework_name
221
- framework_file_path = target.name + "/" + framework_file_path if targets.count > 1
222
- add_vendered_framework(spec, target.platform.name.to_s, framework_file_path)
223
- end
224
- # Clean the source files
225
- # we just add the prebuilt framework to specific platform and set no source files
226
- # for all platform, so it doesn't support the sence that 'a pod perbuild for one
227
- # platform and not for another platform.'
228
- empty_source_files(spec)
229
-
230
- # to remove the resurce bundle target.
231
- # When specify the "resource_bundles" in podspec, xcode will generate a bundle
232
- # target after pod install. But the bundle have already built when the prebuit
233
- # phase and saved in the framework folder. We will treat it as a normal resource
234
- # file.
235
- if spec.attributes_hash["resource_bundles"]
236
- bundle_names = spec.attributes_hash["resource_bundles"].keys
237
- spec.attributes_hash["resource_bundles"] = nil
238
- spec.attributes_hash["resources"] ||= []
239
- spec.attributes_hash["resources"] += bundle_names.map{|n| n+".bundle"}
240
- end
262
+ # Use the prebuild framworks as vendered frameworks
263
+ # get_corresponding_targets
264
+ targets = Pod.fast_get_targets_for_pod_name(spec.root.name, self.pod_targets, cache)
265
+ targets.each do |target|
266
+ # the framework_file_path rule is decided when `install_for_prebuild`,
267
+ # as to compitable with older version and be less wordy.
268
+ framework_file_path = target.framework_name
269
+ framework_file_path = target.name + "/" + framework_file_path if targets.count > 1
270
+ add_vendered_framework(spec, target.platform.name.to_s, framework_file_path)
271
+ end
272
+ # Clean the source files
273
+ # we just add the prebuilt framework to specific platform and set no source files
274
+ # for all platform, so it doesn't support the sence that 'a pod perbuild for one
275
+ # platform and not for another platform.'
276
+ empty_source_files(spec)
277
+
278
+ # to remove the resurce bundle target.
279
+ # When specify the "resource_bundles" in podspec, xcode will generate a bundle
280
+ # target after pod install. But the bundle have already built when the prebuit
281
+ # phase and saved in the framework folder. We will treat it as a normal resource
282
+ # file.
283
+ if spec.attributes_hash["resource_bundles"]
284
+ bundle_names = spec.attributes_hash["resource_bundles"].keys
285
+ spec.attributes_hash["resource_bundles"] = nil
286
+ spec.attributes_hash["resources"] ||= []
287
+ spec.attributes_hash["resources"] += bundle_names.map{|n| n+".bundle"}
288
+ elsif spec.attributes_hash['ios']["resource_bundles"]
289
+ bundle_names = spec.attributes_hash['ios']["resource_bundles"].keys
290
+ spec.attributes_hash['ios']["resource_bundles"] = nil
291
+ spec.attributes_hash['ios']["resources"] ||= []
292
+ spec.attributes_hash['ios']["resources"] += bundle_names.map{|n| n+".bundle"}
293
+ end
241
294
 
242
- # to avoid the warning of missing license
243
- spec.attributes_hash["license"] = {}
295
+ # to avoid the warning of missing license
296
+ spec.attributes_hash["license"] = {}
244
297
 
298
+ end
245
299
  end
246
300
 
247
301
  end
@@ -250,23 +304,25 @@ module Pod
250
304
  # Override the download step to skip download and prepare file in target folder
251
305
  old_method = instance_method(:install_source_of_pod)
252
306
  define_method(:install_source_of_pod) do |pod_name|
253
-
254
- # copy from original
255
- pod_installer = create_pod_installer(pod_name)
256
- # \copy from original
257
-
258
- if self.prebuild_pod_names.include? pod_name
259
- pod_installer.install_for_prebuild!(self.sandbox)
307
+ if Pod::is_prebuild_stage
308
+ tmp = old_method.bind(self).(pod_name)
260
309
  else
261
- pod_installer.install!
262
- end
310
+ # copy from original
311
+ pod_installer = create_pod_installer(pod_name)
312
+ # \copy from original
313
+
314
+ if self.prebuild_pod_names.include? pod_name
315
+ pod_installer.install_for_prebuild!(self.sandbox)
316
+ else
317
+ pod_installer.install!
318
+ end
263
319
 
264
- # copy from original
265
- @installed_specs.concat(pod_installer.specs_by_platform.values.flatten.uniq)
266
- # \copy from original
320
+ # copy from original
321
+ return @installed_specs.concat(pod_installer.specs_by_platform.values.flatten.uniq)
322
+ # \copy from original
323
+ end
267
324
  end
268
325
 
269
-
270
326
  end
271
327
  end
272
328
 
@@ -279,33 +335,34 @@ end
279
335
  module Pod
280
336
  module Generator
281
337
  class EmbedFrameworksScript
282
-
283
338
  old_method = instance_method(:script)
284
339
  define_method(:script) do
285
-
286
340
  script = old_method.bind(self).()
287
- patch = <<-SH.strip_heredoc
288
- #!/bin/sh
289
-
290
- # ---- this is added by cocoapods-ppbuild ---
291
- # Readlink cannot handle relative symlink well, so we override it to a new one
292
- # If the path isn't an absolute path, we add a realtive prefix.
293
- old_read_link=`which readlink`
294
- readlink () {
295
- path=`$old_read_link "$1"`;
296
- if [ $(echo "$path" | cut -c 1-1) = '/' ]; then
297
- echo $path;
298
- else
299
- echo "`dirname $1`/$path";
300
- fi
301
- }
302
- # ---
303
- SH
304
-
305
- # patch the rsync for copy dSYM symlink
306
- script = script.gsub "rsync --delete", "rsync --copy-links --delete"
307
-
308
- patch + script
341
+ if not Pod::is_prebuild_stage
342
+ patch = <<-SH.strip_heredoc
343
+ #!/bin/sh
344
+
345
+ # ---- this is added by cocoapods-ppbuild ---
346
+ # Readlink cannot handle relative symlink well, so we override it to a new one
347
+ # If the path isn't an absolute path, we add a realtive prefix.
348
+ old_read_link=`which readlink`
349
+ readlink () {
350
+ path=`$old_read_link "$1"`;
351
+ if [ $(echo "$path" | cut -c 1-1) = '/' ]; then
352
+ echo $path;
353
+ else
354
+ echo "`dirname $1`/$path";
355
+ fi
356
+ }
357
+ # ---
358
+ SH
359
+
360
+ # patch the rsync for copy dSYM symlink
361
+ script = script.gsub "rsync --delete", "rsync --copy-links --delete"
362
+
363
+ script = patch + script
364
+ end
365
+ script
309
366
  end
310
367
  end
311
368
  end
@@ -25,6 +25,7 @@ module Pod
25
25
  DSL.dont_remove_source_code = true
26
26
  end
27
27
 
28
+ # 设置是否保存源码,默认 true
28
29
  def remove_source_code_for_prebuilt_frameworks!
29
30
  DSL.dont_remove_source_code = false
30
31
  end
@@ -115,7 +116,7 @@ Pod::HooksManager.register('cocoapods-ppbuild', :pre_install) do |installer_cont
115
116
  require_relative 'helper/prebuild_sandbox'
116
117
  require_relative 'Prebuild'
117
118
 
118
- Pod::UI.puts "火速编译中..."
119
+ # Pod::UI.puts "火速编译中..."
119
120
 
120
121
  # Fetch original installer (which is running this pre-install hook) options,
121
122
  # then pass them to our installer to perform update if needed
@@ -147,7 +148,8 @@ Pod::HooksManager.register('cocoapods-ppbuild', :pre_install) do |installer_cont
147
148
  # install
148
149
  lockfile = installer_context.lockfile
149
150
  binary_installer = Pod::Installer.new(prebuild_sandbox, prebuild_podfile, lockfile)
150
-
151
+
152
+ require_relative 'Integration'
151
153
  if binary_installer.have_exact_prebuild_cache? && !update
152
154
  binary_installer.install_when_cache_hit!
153
155
  else
@@ -169,7 +171,6 @@ Pod::HooksManager.register('cocoapods-ppbuild', :pre_install) do |installer_cont
169
171
  # install
170
172
  Pod::UI.puts "\n"
171
173
  Pod::UI.puts "🤖 Pod Install"
172
- require_relative 'Integration'
173
174
  # go on the normal install step ...
174
175
  end
175
176
 
@@ -62,7 +62,6 @@ module Pod
62
62
  UI.puts "Using #{name}"
63
63
  end
64
64
  end
65
-
66
65
 
67
66
  # Build the needed framework files
68
67
  def prebuild_frameworks!
@@ -87,22 +86,22 @@ module Pod
87
86
  missing = unchanged.select do |pod_name|
88
87
  not exsited_framework_pod_names.include?(pod_name)
89
88
  end
90
-
91
-
92
- root_names_to_update = (added + changed + missing)
93
-
94
- # transform names to targets
89
+ root_names_to_update = (added + changed + missing).uniq
90
+ # 生成预编译target
95
91
  cache = []
96
92
  targets = root_names_to_update.map do |pod_name|
97
93
  tars = Pod.fast_get_targets_for_pod_name(pod_name, self.pod_targets, cache)
98
- if tars.nil? || tars.empty?
99
- raise "There's no target named (#{pod_name}) in Pod.xcodeproj.\n #{self.pod_targets.map(&:name)}" if t.nil?
94
+ if tars.nil?
95
+ tars = []
100
96
  end
101
97
  tars
102
98
  end.flatten
103
99
 
104
- # add the dendencies
100
+ # 添加依赖
105
101
  dependency_targets = targets.map {|t| t.recursive_dependent_targets }.flatten.uniq || []
102
+ dependency_targets = dependency_targets.select do |tar|
103
+ sandbox.existed_target_version_for_pod_name(tar.pod_name) != tar.version
104
+ end
106
105
  targets = (targets + dependency_targets).uniq
107
106
  else
108
107
  targets = self.pod_targets
@@ -121,6 +120,7 @@ module Pod
121
120
  end
122
121
 
123
122
  output_path = sandbox.framework_folder_path_for_target_name(target.name)
123
+ output_path.rmtree if output_path.exist?
124
124
  output_path.mkpath unless output_path.exist?
125
125
  Pod::Prebuild.build(sandbox_path, target, output_path, bitcode_enabled, Podfile::DSL.custom_build_options, Podfile::DSL.custom_build_options_simulator)
126
126
 
@@ -225,15 +225,13 @@ module Pod
225
225
  end
226
226
  end
227
227
 
228
- # patch the post install hook
229
- old_method2 = instance_method(:run_plugins_post_install_hooks)
228
+ # hook run_plugins_post_install_hooks 方法
229
+ install_hooks_method = instance_method(:run_plugins_post_install_hooks)
230
230
  define_method(:run_plugins_post_install_hooks) do
231
- old_method2.bind(self).()
231
+ install_hooks_method.bind(self).()
232
232
  if Pod::is_prebuild_stage
233
233
  self.prebuild_frameworks!
234
234
  end
235
235
  end
236
-
237
-
238
236
  end
239
237
  end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsPpbuild
2
- VERSION = "0.0.4"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -14,7 +14,7 @@ module Pod
14
14
  # @return [Analyzer::SpecsState]
15
15
  #
16
16
  class_attr_accessor :prebuild_pods_changes
17
-
17
+ class_attr_accessor :prebuild_pod_targets_changes
18
18
 
19
19
  # represent the path of resurces to copy
20
20
  class ResourcePath
@@ -77,9 +77,10 @@ module Pod
77
77
 
78
78
  # filter prebuild
79
79
  prebuild_names = target_definition.prebuild_framework_pod_names
80
- if not Podfile::DSL.prebuild_all
81
- targets = targets.select { |pod_target| prebuild_names.include?(pod_target.pod_name) }
82
- end
80
+ # if not Podfile::DSL.prebuild_all
81
+ # targets = targets.select { |pod_target| prebuild_names.include?(pod_target.pod_name) }
82
+ # end
83
+ targets = targets.select { |pod_target| prebuild_names.include?(pod_target.pod_name) }
83
84
  dependency_targets = targets.map {|t| t.recursive_dependent_targets }.flatten.uniq || []
84
85
  targets = (targets + dependency_targets).uniq
85
86
 
@@ -67,13 +67,20 @@ module Pod
67
67
  exsited_framework_name_pairs.select {|pair| pair[1] == pod_name }.map { |pair| pair[0]}
68
68
  end
69
69
 
70
-
70
+ def existed_target_version_for_pod_name(pod_name)
71
+ folder = framework_folder_path_for_target_name(pod_name)
72
+ return "" unless folder.exist?
73
+ flag_file_path = folder + "#{pod_name}.pod_name"
74
+ return "" unless flag_file_path.exist?
75
+ version = File.read(flag_file_path)
76
+ version
77
+ end
71
78
 
72
79
  def save_pod_name_for_target(target)
73
80
  folder = framework_folder_path_for_target_name(target.name)
74
81
  return unless folder.exist?
75
82
  flag_file_path = folder + "#{target.pod_name}.pod_name"
76
- File.write(flag_file_path.to_s, "")
83
+ File.write(flag_file_path.to_s, "#{target.version}")
77
84
  end
78
85
 
79
86
  def real_bundle_path_for_pod(path)
@@ -107,3 +114,22 @@ module Pod
107
114
  end
108
115
  end
109
116
  end
117
+
118
+ module Pod
119
+ class Sandbox
120
+ # hook 清除pod方法,得到删除的pod,通知主pod更新
121
+ clean_method = instance_method(:clean_pod)
122
+ define_method(:clean_pod) do |pod_name|
123
+ if Pod::is_prebuild_stage
124
+ if Pod::Prebuild::Passer.prebuild_pod_targets_changes.nil?
125
+ Pod::Prebuild::Passer.prebuild_pod_targets_changes = [pod_name]
126
+ else
127
+ Pod::Prebuild::Passer.prebuild_pod_targets_changes = (Pod::Prebuild::Passer.prebuild_pod_targets_changes + [pod_name]).uniq
128
+ end
129
+ end
130
+ clean_method.bind(self).(pod_name)
131
+ end
132
+ end
133
+ end
134
+
135
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-ppbuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - 彭懂
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-27 00:00:00.000000000 Z
11
+ date: 2021-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,7 +61,7 @@ files:
61
61
  - lib/cocoapods-ppbuild/rome/build_framework.rb
62
62
  - lib/cocoapods-ppbuild/tool/tool.rb
63
63
  - lib/cocoapods_plugin.rb
64
- homepage: https://github.com/EXAMPLE/cocoapods-ppbuild
64
+ homepage: https://github.com/pdcodeunder/cocoapods-ppbuild.git
65
65
  licenses:
66
66
  - MIT
67
67
  metadata: {}