cocoapods-alexandria 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46cf82205ab24e541ad33a1ca9a006bcdcca91b9d74de55bcca6f30cfd3d20a5
4
- data.tar.gz: 07fb6b9a0ab2303f8101b078d36ca57afb8d3a05b954d4bbcb46e85f95d6d540
3
+ metadata.gz: 53a4f9bbe821077493e3ed28b9498c8d354568a5d1db2b21325a410f01ac9174
4
+ data.tar.gz: dc38d21a6c95984c84398423813359c35f9c38c1d10acfff3ec1ec568749f97c
5
5
  SHA512:
6
- metadata.gz: 27422e274948754cc86b5d80bf18d8a4c145a33fd7702056c541d2f138b5e46bf397f5c639cdd0b4ffdc47adeb3b64e23e0ae13734b6b866c71992ce7750f5b8
7
- data.tar.gz: 390bb68dbb97befcb794831b5834aa6e4520e7b4b823dfc471a54fc309c646f54fd1d56db3fb403c75dafc865a3b10a725819f0c7c0fa2a7916e7da59a94aa94
6
+ metadata.gz: 2bd60a0217002b5c9301f3ccc9cc72dffec098f5aacd479a630aa13cdcf531c53126717b3baf745a8690ac9fb6d0d22607bf1a5a2cfbf8586f9ccbf013eb277f
7
+ data.tar.gz: c99fd46bf20edd1e1c96ebae578d555fe761c2488e04bea00b37bfc595df310f0f200b5b253cc6e4dc1b1a655110dc00611707655fefd01254b97874eef63abf
@@ -1,3 +1,3 @@
1
1
  module CocoapodsAlexandria
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
@@ -15,15 +15,16 @@ module PodAlexandria
15
15
  deployment_target = target.platform_deployment_target
16
16
  target_label = target.cocoapods_target_label
17
17
 
18
- # build each dependency of target
19
- spec_names = target.specs.map { |spec| [spec.root.name, spec.root.module_name] }.uniq
20
-
21
- spec_names.map { |root_name, module_name|
22
- next if skip_build?(root_name, module_name, sdk)
23
- if File.directory?(build_path(target, module_name, sdk))
24
- build_path(target, module_name, sdk)
18
+ # find & build all dependencies
19
+ project.all_dependencies_for(target).map { |target|
20
+ # skip if already built (product, or by other target)
21
+ next if skip_build?(target, sdk)
22
+
23
+ # may already be built (by another target)
24
+ if File.directory?(build_path(target, sdk))
25
+ build_path(target, sdk)
25
26
  else
26
- xcodebuild(root_name, module_name, sdk, deployment_target)
27
+ xcodebuild(target, sdk, deployment_target)
27
28
  end
28
29
  }.compact
29
30
  end
@@ -34,38 +35,69 @@ module PodAlexandria
34
35
  { :ios => 'iphoneos', :osx => 'macosx', :tvos => 'appletvos', :watchos => 'watchos' }
35
36
  end
36
37
 
37
- def skip_build?(target, module_name, sdk)
38
- File.directory?(destination_path(module_name)) ||
39
- File.directory?(build_path(target, module_name, sdk)) ||
40
- !is_native_target?(target)
38
+ def skip_build?(target, sdk)
39
+ File.directory?(destination_path(target)) ||
40
+ File.directory?(build_path(target, sdk))
41
41
  end
42
42
 
43
- def is_native_target?(target_name)
44
- project.targets
45
- .find { |t| t.name == target_name }
46
- .is_a?(Xcodeproj::Project::Object::PBXNativeTarget)
47
- end
48
-
49
- def xcodebuild(target, module_name, sdk, deployment_target)
50
- args = %W(-project #{sandbox.project_path.realdirpath} -scheme #{target} -configuration #{configuration} -sdk #{sdk})
43
+ def xcodebuild(target, sdk, deployment_target)
44
+ args = %W(-project #{sandbox.project_path.realdirpath} -scheme #{target.name} -configuration #{configuration} -sdk #{sdk})
51
45
  args += flags unless flags.nil?
52
46
 
53
- Pod::UI.puts "Building '#{target}' for #{sdk}..."
47
+ Pod::UI.puts "Building '#{target.name}' for #{sdk}..."
54
48
  Pod::Executable.execute_command 'xcodebuild', args, true
55
49
 
56
- build_path(target, module_name, sdk)
50
+ build_path(target, sdk)
57
51
  end
58
52
 
59
53
  def project
60
54
  @project ||= Xcodeproj::Project.open(sandbox.project_path)
61
55
  end
62
56
 
63
- def build_path(target, module_name, sdk)
64
- "#{build_dir}/#{configuration}-#{sdk}/#{target}/#{module_name}.framework"
57
+ def build_path(target, sdk)
58
+ "#{build_dir}/#{configuration}-#{sdk}/#{target.name}/#{target.product_name}.framework"
59
+ end
60
+
61
+ def destination_path(target)
62
+ "#{destination}/#{target.product_name}.framework"
63
+ end
64
+ end
65
+ end
66
+
67
+ module Xcodeproj
68
+ class Project
69
+ module Object
70
+ class AbstractTarget
71
+ def is_native?
72
+ is_a?(Xcodeproj::Project::Object::PBXNativeTarget)
73
+ end
74
+ end
75
+
76
+ class PBXNativeTarget
77
+ def is_bundle?
78
+ product_type == 'com.apple.product-type.bundle'
79
+ end
80
+
81
+ def all_dependencies
82
+ dependencies
83
+ .filter { |d| d.target.is_native? && !d.target.is_bundle? }
84
+ .map { |d| [d.target] + d.target.all_dependencies }
85
+ .flatten.uniq
86
+ end
87
+ end
88
+ end
89
+
90
+ def all_dependencies_for(umbrella_target)
91
+ target(umbrella_target.cocoapods_target_label).all_dependencies
65
92
  end
66
93
 
67
- def destination_path(module_name)
68
- "#{destination}/#{module_name}.framework"
94
+ def target(target_name)
95
+ result = targets.find { |t| t.name == target_name }
96
+ if result.is_native?
97
+ return result
98
+ else
99
+ return nil
100
+ end
69
101
  end
70
102
  end
71
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-alexandria
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Jennes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-05 00:00:00.000000000 Z
11
+ date: 2022-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods