cocoapods-alexandria 0.1.1 → 0.2.0

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: 335df8c8a5fec628ba5f248d9e6e0aebdc646580a1eb8084321eafb90c0f9826
4
- data.tar.gz: 16eb476b2088a28ccdd79bb09ba86bc45a2a093d0d553b535560e0113015b2a3
3
+ metadata.gz: 9400a2ed133bb3f4f14db6c3d24a6df569875130386e59734e02558b05913143
4
+ data.tar.gz: 57dc2f0f5d526cffb5c8c0958a684d55be0413d64fada2df4426aa6b4c5615eb
5
5
  SHA512:
6
- metadata.gz: 6a089c34cef83c8e4436d1af165fcbe179fc6eabc251ba27ee4ad585c389cf2fa91aeebf91fb1d9aa5ada7973bccd36509da05c4776edae3ea1bc4d9cc8a6561
7
- data.tar.gz: a64669145f5e8f66c74856ab687e012445dadbef0d5073e7c78864c04d12ff400df23b30ebe0e825aa40831438f86c4f7ecc655fea3b08a7939a66cdeba6f1fd
6
+ metadata.gz: 3ca10b51f5ff9059f9fc3007191555e4b7af0b51c13f7d77295a8d6676c8c551b597db4f0d7da2498adb95cc6016dc53b75faa70e88823f03a015b0b5dbd942a
7
+ data.tar.gz: 2285e47798e9eb4207099d09e9eb5053fccc2021a43e7d9adf0c5801ca508808615a86a0a24f20ad27702093039ac89d2dc714718a592e8de3b224e5a674eaf8
@@ -8,17 +8,40 @@ module PodAlexandria
8
8
  end
9
9
 
10
10
  def run
11
- Pod::UI.puts "Cocoapods Alexandria running in local mode."
11
+ Pod::UI.puts 'Cocoapods Alexandria running in local mode.'
12
12
 
13
- Pod::UI.title "Generating project using XcodeGen"
13
+ if should_predownload_dep
14
+ Pod::UI.title 'Pre-downloading dependency for XcodeGen'
15
+ predownload_dep
16
+ end
17
+
18
+ Pod::UI.title 'Generating project using XcodeGen'
14
19
  XcodeGen::cleanupRome
15
20
  XcodeGen::clearDependencies(options.xcodegen_dependencies_file)
16
21
  XcodeGen::generate
17
22
 
18
- Pod::UI.title "Preparing environment..."
23
+ Pod::UI.title 'Preparing environment...'
19
24
  podfile.prepare_for_xcodegen
20
25
 
21
- Pod::UI.title "Continuing with normal CocoaPods"
26
+ Pod::UI.title 'Continuing with normal CocoaPods'
27
+ end
28
+
29
+ private
30
+
31
+ def should_predownload_dep
32
+ File.readlines('project.yml').grep(/Pods\/AppwiseCore\/XcodeGen/).any? &&
33
+ !File.directory?('Pods/AppwiseCore/XcodeGen')
34
+ end
35
+
36
+ def predownload_dep
37
+ system(
38
+ 'rm -rf Pods/AppwiseCore && '\
39
+ 'mkdir -p Pods && '\
40
+ 'rm -f /tmp/ac.zip && '\
41
+ 'curl -L "https://github.com/appwise-labs/AppwiseCore/archive/master.zip" > /tmp/ac.zip && '\
42
+ 'unzip -q -d Pods /tmp/ac.zip && '\
43
+ 'mv Pods/AppwiseCore-master Pods/AppwiseCore'
44
+ )
22
45
  end
23
46
  end
24
47
  end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsAlexandria
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -3,17 +3,23 @@ module PodAlexandria
3
3
  attr_reader :environment_configs
4
4
  attr_reader :force_bitcode
5
5
  attr_reader :xcodegen_dependencies_file
6
+ attr_reader :do_not_embed_dependencies_in_targets
6
7
 
7
8
  def initialize(installer_context, user_options)
8
9
  @environment_configs = user_options.fetch('environment_configs', default_configurations(installer_context))
9
10
  @force_bitcode = user_options.fetch('force_bitcode', true)
10
11
  @xcodegen_dependencies_file = user_options.fetch('xcodegen_dependencies_file', 'projectDependencies.yml')
12
+ @do_not_embed_dependencies_in_targets = user_options.fetch('do_not_embed_dependencies_in_targets', [])
11
13
  end
12
14
 
13
15
  def environment_configs_for(target)
14
16
  environment_configs[normalize_target(target)]
15
17
  end
16
18
 
19
+ def allow_embed_dependencies_for(target)
20
+ !do_not_embed_dependencies_in_targets.include?(normalize_target(target))
21
+ end
22
+
17
23
  private
18
24
 
19
25
  def default_configurations(installer_context)
@@ -6,7 +6,12 @@ module PodAlexandria
6
6
  # and also checking if they are linked dynamically or not.
7
7
  def self.generate_dependencies(installer_context, options)
8
8
  targets = installer_context.umbrella_targets.map { |target|
9
- generate_for_target(installer_context, target, options.environment_configs_for(target.cocoapods_target_label))
9
+ generate_for_target(
10
+ installer_context,
11
+ target,
12
+ options.environment_configs_for(target.cocoapods_target_label),
13
+ options.allow_embed_dependencies_for(target.cocoapods_target_label)
14
+ )
10
15
  }.to_h
11
16
 
12
17
  File.open(options.xcodegen_dependencies_file, 'w') { |file|
@@ -16,7 +21,7 @@ module PodAlexandria
16
21
 
17
22
  private
18
23
 
19
- def self.generate_for_target(installer_context, target, configurations)
24
+ def self.generate_for_target(installer_context, target, configurations, allow_embed)
20
25
  target_name = target.cocoapods_target_label.sub(/^Pods-/, '')
21
26
  xcconfig = config_file_for_target(installer_context, target)
22
27
 
@@ -24,13 +29,7 @@ module PodAlexandria
24
29
  target_name,
25
30
  {
26
31
  'configFiles' => configurations,
27
- 'dependencies' => get_dependencies_from_xcconfig(xcconfig).map { |dependency|
28
- if dependency.exists?
29
- { 'framework' => dependency.path, 'embed' => dependency.is_dynamic? }
30
- else
31
- { 'sdk' => dependency.sdk }
32
- end
33
- }
32
+ 'dependencies' => get_dependencies_from_xcconfig(xcconfig).map { |d| d.xcodegen_info(allow_embed) }
34
33
  }
35
34
  ]
36
35
  end
@@ -42,10 +41,11 @@ module PodAlexandria
42
41
 
43
42
  def self.get_dependencies_from_xcconfig(file)
44
43
  File.readlines(file).select { |line| line.start_with?('OTHER_LDFLAGS') }.first
45
- .split('=')[1].tr('"', '') # get value (and remove quotes)
46
- .gsub('-framework', '').gsub('-ObjC', '') # remove unneeded flags
47
- .split.drop(1) # remove inherited
48
- .map { |d| Dependency.new(d) }
44
+ &.split('=')&.at(1)&.tr('"', '') # get value (and remove quotes)
45
+ &.gsub('-framework ', '-f')&.gsub('-weak_framework ', '-wf') # replace framework with fake linker flag
46
+ &.gsub('-ObjC', '') # remove unneeded flags
47
+ &.split&.drop(1) # remove inherited
48
+ &.map { |d| Dependency.new(d) } || []
49
49
  end
50
50
  end
51
51
  end
@@ -1,11 +1,30 @@
1
1
  module PodAlexandria
2
2
  class Dependency
3
- attr_reader :value
3
+ attr_reader :flag
4
+ attr_reader :module_name
4
5
 
5
6
  def initialize(value)
6
- @value = value
7
+ @flag = value.start_with?('-wf') ? 'wf' : value[1]
8
+ @module_name = value.delete_prefix('-l').delete_prefix('-f').delete_prefix('-wf')
7
9
  end
8
10
 
11
+ def xcodegen_info(allow_embed)
12
+ if exists?
13
+ {
14
+ 'framework' => path,
15
+ 'embed' => is_dynamic? && allow_embed,
16
+ 'weak' => is_weak?
17
+ }
18
+ else
19
+ {
20
+ 'sdk' => sdk,
21
+ 'weak' => is_weak?
22
+ }
23
+ end
24
+ end
25
+
26
+ private
27
+
9
28
  def path
10
29
  binary = Dir["Rome/*.{framework,xcframework}/**/#{binary_name}"].first
11
30
  binary&.split(File::SEPARATOR)&.first(2)&.join(File::SEPARATOR)
@@ -15,7 +34,7 @@ module PodAlexandria
15
34
  if is_library?
16
35
  "lib#{module_name}.tbd"
17
36
  else
18
- "#{value}.framework"
37
+ "#{module_name}.framework"
19
38
  end
20
39
  end
21
40
 
@@ -26,17 +45,19 @@ module PodAlexandria
26
45
  def is_dynamic?
27
46
  if path.end_with? 'xcframework'
28
47
  any_arch = Dir["#{path}/*/*.framework"].first
29
- binary = "#{any_arch}/#{value}"
48
+ binary = "#{any_arch}/#{module_name}"
30
49
  else
31
- binary = "#{path}/#{value}"
50
+ binary = "#{path}/#{module_name}"
32
51
  end
33
52
  !%x(file #{binary} | grep dynamic).to_s.strip.empty?
34
53
  end
35
54
 
36
- private
37
-
38
55
  def is_library?
39
- value.start_with? '-l'
56
+ flag == 'l'
57
+ end
58
+
59
+ def is_weak?
60
+ flag == 'wf'
40
61
  end
41
62
 
42
63
  def binary_name
@@ -46,9 +67,5 @@ module PodAlexandria
46
67
  module_name
47
68
  end
48
69
  end
49
-
50
- def module_name
51
- value.delete_prefix('-l')
52
- end
53
70
  end
54
71
  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.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Jennes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-25 00:00:00.000000000 Z
11
+ date: 2021-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods