pod-builder 4.4.2 → 4.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +9 -0
- data/exe/pod_builder +36 -0
- data/lib/pod_builder/command/switch.rb +17 -2
- data/lib/pod_builder/command/switch_all.rb +15 -0
- data/lib/pod_builder/command.rb +1 -0
- data/lib/pod_builder/configuration.rb +9 -0
- data/lib/pod_builder/podfile.rb +15 -1
- data/lib/pod_builder/rome/post_install.rb +8 -1
- data/lib/pod_builder/templates/build_podfile.template +10 -0
- data/lib/pod_builder/version.rb +1 -1
- data/pod-builder.gemspec +2 -2
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 206523829a1e643a482035efc05301e608b0516278c4f7edf8de424bc5fc5437
|
4
|
+
data.tar.gz: 6b4297d656723d6f73bf2f0972485b9e2fcb717937a86e1191f943e69f4042da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ce7485f856f3be1f1b0f2a9a96144c9fe9eaadb1ccfd8d0db0be8019cb24e598a917baf376aaee6b5ef6c0a89f79228125e5b5cec75fd6b415cb4bd01878e0c
|
7
|
+
data.tar.gz: 6e1a110a204c3cb7e41803590743b6c5f1515ad16aafa0f05afd7ad167853f700d8029b18aec423dae2f3efe6ec22e822a653e3afc2b455835c3446666dab749
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -71,6 +71,7 @@ PodBuilder comes with a rich set of commands:
|
|
71
71
|
- `restore_all`: rebuilts all pods declared in the Restore-Podfile file
|
72
72
|
- `install_sources`: installs sources of pods to debug into prebuild frameworks
|
73
73
|
- `switch`: switch between prebuilt, development or standard pod in the Application-Podfile
|
74
|
+
- `switch_all`: switch all pods between prebuilt, development or standard in the Application-Podfile
|
74
75
|
- `clean`: removes unused prebuilt frameworks, dSYMs and source files added by install_sources
|
75
76
|
- `sync_podfile`: updates the Application-Podfile with all pods declared in the PodBuilder-Podfile file
|
76
77
|
- `info`: outputs json-formatted information reflecting the current status of prebuilt pods
|
@@ -158,6 +159,10 @@ To support development pods you should specify the path(s) that contain the pods
|
|
158
159
|
|
159
160
|
PodBuilder will automatically determine the proper path when switching a particular pod.
|
160
161
|
|
162
|
+
#### `switch_all` command
|
163
|
+
|
164
|
+
As `switch` but will switch all pods defined in PodBuilder-Podfile.
|
165
|
+
|
161
166
|
#### `clean` command
|
162
167
|
|
163
168
|
Deletes all unused files by PodBuilder, including .frameworks, .dSYMs and _Source_ repos.
|
@@ -366,6 +371,10 @@ PodBuilder leverages CocoaPods to compile pods into frameworks. Every compiled f
|
|
366
371
|
|
367
372
|
# FAQ
|
368
373
|
|
374
|
+
### **I get an _'Failed getting 'DEVELOPMENT_TEAM' build setting'_ when building**
|
375
|
+
|
376
|
+
PodBuilder might fail to automatically extract the developer team from your current project which is required to sign executables. Add the `development_team` key in PodBuilder.json file with your development team identifier.
|
377
|
+
|
369
378
|
### **I get an _'`PodWithError` does not specify a Swift version and none of the targets (`DummyTarget`)'_ when building**
|
370
379
|
|
371
380
|
The podspec of the Pod you're trying to build doesn't specify the swift_version which is required in recent versions of CocoaPods. Either contact the author/mantainer of the Pod asking it to fix the podspec or add a `spec_overrides` in _PodBuilder.json_.
|
data/exe/pod_builder
CHANGED
@@ -41,6 +41,7 @@ Command:
|
|
41
41
|
+ install_sources Install sources of pods to debug into prebuilt items
|
42
42
|
+ generate_lldbinit Generate an lldbinit file with setting target.source-map to debug prebuilt items
|
43
43
|
+ switch Switch between prebuilt/development/standard pod in the Application-Podfile
|
44
|
+
+ switch_all Switch all pods between prebuilt/development/standard in the Application-Podfile
|
44
45
|
+ clean Remove prebuild items, dSYMs and source files added by `install_sources` command that are no longer in the PodBuilder-Podfile
|
45
46
|
+ sync_podfile Update your Application-Podfile with all pods declared in the PodBuilder-Podfile
|
46
47
|
+ info Print json-formatted informations about prebuilt items
|
@@ -316,6 +317,41 @@ Options:
|
|
316
317
|
]
|
317
318
|
},
|
318
319
|
|
320
|
+
"switch_all" => {
|
321
|
+
:opts => OptionParser.new do |opts|
|
322
|
+
opts.banner = "
|
323
|
+
Usage:
|
324
|
+
|
325
|
+
$ pod_builder switch_all [OPTIONS]
|
326
|
+
|
327
|
+
Switch all pods integration between prebuilt/development/default version.
|
328
|
+
|
329
|
+
Options:
|
330
|
+
"
|
331
|
+
opts.on("-p", "--prebuilt", "Use prebuilt") do |o|
|
332
|
+
OPTIONS[:switch_mode] = "prebuilt"
|
333
|
+
end
|
334
|
+
opts.on("-d", "--development", "Development pod") do |o|
|
335
|
+
OPTIONS[:switch_mode] = "development"
|
336
|
+
end
|
337
|
+
opts.on("-s", "--default", "Default version specified in PodBuilder-Podfile") do |o|
|
338
|
+
OPTIONS[:switch_mode] = "default"
|
339
|
+
end
|
340
|
+
opts.on("-c", "--child-deps", "Include dependencies of the specified <PODNAME...>") do |o|
|
341
|
+
OPTIONS[:resolve_child_dependencies] = true
|
342
|
+
end
|
343
|
+
opts.on("-r", "--parent-deps", "Include all pods that depend on the specified <PODNAME...>") do |o|
|
344
|
+
OPTIONS[:resolve_parent_dependencies] = true
|
345
|
+
end
|
346
|
+
opts.on("-u", "--skip-repo-update", "Skip CocoaPods repo update (only when passing --parent-deps") do |o|
|
347
|
+
OPTIONS[:update_repos] = false
|
348
|
+
end
|
349
|
+
end,
|
350
|
+
:call => [
|
351
|
+
PodBuilder::Command::SwitchAll
|
352
|
+
]
|
353
|
+
},
|
354
|
+
|
319
355
|
"sync_podfile" => {
|
320
356
|
:opts => OptionParser.new do |opts|
|
321
357
|
opts.banner = "
|
@@ -9,7 +9,22 @@ module PodBuilder
|
|
9
9
|
PodBuilder::prepare_basepath
|
10
10
|
|
11
11
|
argument_pods = ARGV.dup
|
12
|
-
|
12
|
+
switch_all = argument_pods.first == "*"
|
13
|
+
|
14
|
+
if switch_all
|
15
|
+
pods = []
|
16
|
+
podspecs = Dir.glob("#{PodBuilder::prebuiltpath}/**/*.podspec")
|
17
|
+
podspecs.each do |podspec|
|
18
|
+
spec = Pod::Specification.from_file(podspec)
|
19
|
+
podname = spec.attributes_hash["name"]
|
20
|
+
pods.push(podname)
|
21
|
+
end
|
22
|
+
argument_pods = pods
|
23
|
+
if OPTIONS[:switch_mode] == "development"
|
24
|
+
argument_pods.reject! { |pod_name| self.find_podspec(pod_name).nil? }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
13
28
|
unless argument_pods.count > 0
|
14
29
|
return -1
|
15
30
|
end
|
@@ -235,7 +250,7 @@ module PodBuilder
|
|
235
250
|
if Pathname.new(path).relative?
|
236
251
|
path = PodBuilder::basepath(path)
|
237
252
|
end
|
238
|
-
podspec_paths = Dir.glob(File.expand_path("#{path}/**/#{podname}
|
253
|
+
podspec_paths = Dir.glob(File.expand_path("#{path}/**/#{podname}.podspec"))
|
239
254
|
podspec_paths.select! { |t| !t.include?("/Local Podspecs/") }
|
240
255
|
podspec_paths.select! { |t| Dir.glob(File.join(File.dirname(t), "*")).count > 1 } # exclude podspec folder (which has one file per folder)
|
241
256
|
if podspec_paths.count > 1
|
data/lib/pod_builder/command.rb
CHANGED
@@ -9,6 +9,7 @@ require 'pod_builder/command/deintegrate'
|
|
9
9
|
require 'pod_builder/command/generate_podspec'
|
10
10
|
require 'pod_builder/command/install_sources'
|
11
11
|
require 'pod_builder/command/switch'
|
12
|
+
require 'pod_builder/command/switch_all'
|
12
13
|
require 'pod_builder/command/sync_podfile'
|
13
14
|
require 'pod_builder/command/info'
|
14
15
|
require 'pod_builder/command/generate_lldbinit'
|
@@ -77,6 +77,7 @@ module PodBuilder
|
|
77
77
|
attr_accessor :build_xcframeworks_exclude
|
78
78
|
attr_accessor :pre_actions
|
79
79
|
attr_accessor :post_actions
|
80
|
+
attr_accessor :development_team
|
80
81
|
end
|
81
82
|
|
82
83
|
@build_settings = DEFAULT_BUILD_SETTINGS
|
@@ -116,6 +117,8 @@ module PodBuilder
|
|
116
117
|
|
117
118
|
@pre_actions = {}
|
118
119
|
@post_actions = {}
|
120
|
+
|
121
|
+
@development_team = ""
|
119
122
|
|
120
123
|
def self.check_inited
|
121
124
|
raise "\n\nNot inited, run `pod_builder init`\n".red if podbuilder_path.nil?
|
@@ -244,6 +247,11 @@ module PodBuilder
|
|
244
247
|
Configuration.post_actions = PodBuilder::Actions.load(value)
|
245
248
|
end
|
246
249
|
end
|
250
|
+
if value = json["development_team"]
|
251
|
+
if value.is_a?(String) && value.length > 0
|
252
|
+
Configuration.development_team = value
|
253
|
+
end
|
254
|
+
end
|
247
255
|
|
248
256
|
Configuration.build_settings.freeze
|
249
257
|
|
@@ -288,6 +296,7 @@ module PodBuilder
|
|
288
296
|
config["deterministic_build"] = Configuration.deterministic_build
|
289
297
|
config["build_using_repo_paths"] = Configuration.build_using_repo_paths
|
290
298
|
config["react_native_project"] = Configuration.react_native_project
|
299
|
+
config["development_team"] = Configuration.development_team
|
291
300
|
|
292
301
|
File.write(config_path, JSON.pretty_generate(config))
|
293
302
|
end
|
data/lib/pod_builder/podfile.rb
CHANGED
@@ -8,6 +8,18 @@ module PodBuilder
|
|
8
8
|
def self.from_podfile_items(items, analyzer, build_configuration, install_using_frameworks, build_catalyst, build_xcframeworks)
|
9
9
|
raise "\n\nno items\n".red unless items.count > 0
|
10
10
|
|
11
|
+
# Xcode 14 requires a development team to be specified for the compilation to succeed
|
12
|
+
development_team = Configuration::development_team
|
13
|
+
if development_team.empty?
|
14
|
+
project_path = "#{PodBuilder.project_path}/#{Configuration::project_name}.xcodeproj"
|
15
|
+
development_team = `grep -rh 'DEVELOPMENT_TEAM' '#{project_path}' | uniq`.strip
|
16
|
+
development_team_match = development_team.match(/DEVELOPMENT_TEAM = (.+);/)
|
17
|
+
if development_team.split("\n").count != 1 || development_team_match&.size != 2
|
18
|
+
raise "\n\nFailed getting 'DEVELOPMENT_TEAM' build setting, please add your development team to #{PodBuilder::basepath(Configuration.configuration_filename)} as per documentation".red
|
19
|
+
end
|
20
|
+
development_team = development_team_match[1]
|
21
|
+
end
|
22
|
+
|
11
23
|
sources = analyzer.sources
|
12
24
|
|
13
25
|
cwd = File.dirname(File.expand_path(__FILE__))
|
@@ -27,10 +39,12 @@ module PodBuilder
|
|
27
39
|
|
28
40
|
podfile.sub!("%%%build_configuration%%%", build_configuration.capitalize)
|
29
41
|
|
42
|
+
podfile.sub!("%%%development_team%%%", development_team)
|
43
|
+
|
30
44
|
podfile_build_settings = ""
|
31
45
|
|
32
46
|
pod_dependencies = {}
|
33
|
-
|
47
|
+
|
34
48
|
items.each do |item|
|
35
49
|
build_settings = Configuration.build_settings.dup
|
36
50
|
|
@@ -378,9 +378,16 @@ Pod::HooksManager.register('podbuilder-rome', :post_install) do |installer_conte
|
|
378
378
|
module_name = File.basename(built_item_paths.first, ".*")
|
379
379
|
spec = specs.detect { |t| t.module_name == module_name }
|
380
380
|
|
381
|
+
# There seems to be a potential bug in CocoaPods-Core (https://github.com/CocoaPods/Core/issues/730)
|
382
|
+
if spec.nil?
|
383
|
+
# Given the above issue when all specs of a pod are subspecs (e.g. specs contains Pod1/Subspec1, Pod1/Subspec2, ...) we'll fail getting the correct specification by relying on module name
|
384
|
+
spec = specs.detect { |t| t.name.split("/").first == module_name }
|
385
|
+
end
|
386
|
+
|
381
387
|
next if spec.nil?
|
382
388
|
|
383
|
-
|
389
|
+
root_name = spec.name.split("/").first
|
390
|
+
xcframework_path = "#{base_destination}/#{root_name}/#{module_name}.xcframework"
|
384
391
|
framework_params = built_item_paths.map { |t| "-framework '#{t}'"}.join(" ")
|
385
392
|
raise "\n\nFailed packing xcframework!\n".red if !system("xcodebuild -create-xcframework #{framework_params} -output '#{xcframework_path}' > /dev/null 2>&1")
|
386
393
|
|
@@ -68,3 +68,13 @@ pre_install do |installer|
|
|
68
68
|
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
|
69
69
|
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}
|
70
70
|
end
|
71
|
+
|
72
|
+
post_install do |installer|
|
73
|
+
installer.pods_project.targets.each do |target|
|
74
|
+
target.build_configurations.each do |config|
|
75
|
+
config.build_settings['DEVELOPMENT_TEAM'] = '%%%development_team%%%'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
installer.pods_project.save
|
80
|
+
end
|
data/lib/pod_builder/version.rb
CHANGED
data/pod-builder.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 2.0"
|
27
27
|
spec.add_development_dependency "rake", ">= 12.3.3"
|
28
|
-
spec.add_development_dependency "ruby-debug-ide"
|
29
|
-
spec.add_development_dependency "debase", '0.2.
|
28
|
+
spec.add_development_dependency "ruby-debug-ide"
|
29
|
+
spec.add_development_dependency "debase", '0.2.5.beta2'
|
30
30
|
|
31
31
|
spec.add_runtime_dependency 'xcodeproj'
|
32
32
|
spec.add_runtime_dependency 'colored'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pod-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.4.
|
4
|
+
version: 4.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Camin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: ruby-debug-ide
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: debase
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.2.
|
61
|
+
version: 0.2.5.beta2
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2.
|
68
|
+
version: 0.2.5.beta2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: xcodeproj
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/pod_builder/command/none.rb
|
198
198
|
- lib/pod_builder/command/restore_all.rb
|
199
199
|
- lib/pod_builder/command/switch.rb
|
200
|
+
- lib/pod_builder/command/switch_all.rb
|
200
201
|
- lib/pod_builder/command/sync_podfile.rb
|
201
202
|
- lib/pod_builder/command/update.rb
|
202
203
|
- lib/pod_builder/configuration.rb
|