cocoapods-alexandria 0.2.1 → 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: 27616506322af399e0045f19891817ae5ec87f1023fc1c66121b617e6b62fc2c
4
- data.tar.gz: 900b0c88287e32f8c96db19fca25ab6c3eccc7ed314c29a996b9cc3734bb3670
3
+ metadata.gz: 53a4f9bbe821077493e3ed28b9498c8d354568a5d1db2b21325a410f01ac9174
4
+ data.tar.gz: dc38d21a6c95984c84398423813359c35f9c38c1d10acfff3ec1ec568749f97c
5
5
  SHA512:
6
- metadata.gz: e005c66afc5ea2a076dbeb60cbbc9582713b2fd133abbd539fb993c385ffe0b27f28dea850d28e957311ab710293c248cc5f8218bc49113795719be99ed1ad6e
7
- data.tar.gz: 648ba30e5d6834466f13a8370eb90dd0fd4125f7d93121c6e785e15d9af869509a8904825fea66fbb892d2bef378f3bfb184ac2efe913d10d268e1ad36bbe6ed
6
+ metadata.gz: 2bd60a0217002b5c9301f3ccc9cc72dffec098f5aacd479a630aa13cdcf531c53126717b3baf745a8690ac9fb6d0d22607bf1a5a2cfbf8586f9ccbf013eb277f
7
+ data.tar.gz: c99fd46bf20edd1e1c96ebae578d555fe761c2488e04bea00b37bfc595df310f0f200b5b253cc6e4dc1b1a655110dc00611707655fefd01254b97874eef63abf
@@ -1,3 +1,3 @@
1
1
  module CocoapodsAlexandria
2
- VERSION = '0.2.1'
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,37 +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
- !is_native_target?(target)
38
+ def skip_build?(target, sdk)
39
+ File.directory?(destination_path(target)) ||
40
+ File.directory?(build_path(target, sdk))
40
41
  end
41
42
 
42
- def is_native_target?(target_name)
43
- project.targets
44
- .find { |t| t.name == target_name }
45
- .is_a?(Xcodeproj::Project::Object::PBXNativeTarget)
46
- end
47
-
48
- def xcodebuild(target, module_name, sdk, deployment_target)
49
- 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})
50
45
  args += flags unless flags.nil?
51
46
 
52
- Pod::UI.puts "Building '#{target}' for #{sdk}..."
47
+ Pod::UI.puts "Building '#{target.name}' for #{sdk}..."
53
48
  Pod::Executable.execute_command 'xcodebuild', args, true
54
49
 
55
- build_path(target, module_name, sdk)
50
+ build_path(target, sdk)
56
51
  end
57
52
 
58
53
  def project
59
54
  @project ||= Xcodeproj::Project.open(sandbox.project_path)
60
55
  end
61
56
 
62
- def build_path(target, module_name, sdk)
63
- "#{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
64
92
  end
65
93
 
66
- def destination_path(module_name)
67
- "#{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
68
101
  end
69
102
  end
70
103
  end
@@ -35,7 +35,7 @@ module PodAlexandria
35
35
  end
36
36
 
37
37
  def self.config_file_for_target(installer_context, target)
38
- Dir["#{installer_context.sandbox_root}/Target Support Files/#{target.cocoapods_target_label}/#{target.cocoapods_target_label}.*-release.xcconfig"]
38
+ Dir["#{installer_context.sandbox_root}/Target Support Files/#{target.cocoapods_target_label}/#{target.cocoapods_target_label}.*release.xcconfig"]
39
39
  .first
40
40
  end
41
41
 
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.1
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-05-16 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