cocoapods-catalyst-support 0.1.2 → 0.2.1

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: d24bad78aba13983b06496e6ec0722803427d82c285232d614241411813a5480
4
- data.tar.gz: 7d2c06169cff54b0d83023afaa37b30a6b6ab3c96df58e4211820b784baf5eea
3
+ metadata.gz: 1cb32cd2b15a408e4ba0ae33f5d5fe8c96050826cb88d14519d56f3e8a00826d
4
+ data.tar.gz: 84341a6cb844b3a85e8dec41111468f0e1d65df0b003b251f8b5c41156bf6844
5
5
  SHA512:
6
- metadata.gz: 07f7d8eb27b4815f99408744ab500bef4f42d5ac4c967ff1a4a3026214c5a379cda4e24e440850790f02a10094e46be6704c1b258be4fd83fd63436c431a9dbd
7
- data.tar.gz: '08ddd9ef1734036a728c5aa5739ad42b008ddb18f6a0377970fc7c57516a4c36a95180d85b75f269c9b98f4cb0c93de408b6d9fa00b4eb07843358526a385fbb'
6
+ metadata.gz: eaf8c09dbd7981169d39453db4485ae7011b502e66b61321ee03025ad632aea900e02dd2549b5baa66a00903a16c42fd5f9c030eb33fe842d8ce62e42f1e38f7
7
+ data.tar.gz: 64868bb8dd26932812c7653d55e429b602d24e40c5838b265b4721f0dc158b587301849c1d8acb5c0fe77aa5dc89cfbb6d54c02d3a0668449c8100eb3b4feb40
@@ -1,3 +1,3 @@
1
1
  module CocoapodsCatalystSupport
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -36,7 +36,7 @@ module Pod
36
36
  pod_names_to_keep = recursive_dependencies(pod_names_to_keep)
37
37
  pod_targets_to_keep = pod_targets.filter do |pod| pod_names_to_keep.include? pod.module_name end # PodTarget
38
38
 
39
- pod_names_to_remove = recursive_dependencies(pod_names_to_remove).filter do |name| !pod_names_to_keep.include? name end
39
+ pod_names_to_remove = recursive_dependencies(pod_names_to_remove).filter do |name| !pod_names_to_keep.include? name end.to_set.to_a
40
40
  pod_targets_to_remove = pod_targets.filter do |pod| pod_names_to_remove.include? pod.module_name end # PodTarget
41
41
 
42
42
  loggs "\n#### Unsupported Libraries ####\n#{pod_names_to_remove}\n"
@@ -53,9 +53,7 @@ module Pod
53
53
  dependencies_to_remove = dependencies_to_remove + targets_to_remove.flat_map do |target| target.to_dependency end + pod_targets_to_remove.flat_map do |pod| pod.vendor_products + pod.frameworks end
54
54
  dependencies_to_remove = dependencies_to_remove.filter do |d| !dependencies_to_keep.include? d end
55
55
 
56
- ###### CATALYST NOT SUPPORTED LINKS ######
57
- unsupported_links = dependencies_to_remove.map do |d| d.link end.to_set.to_a
58
-
56
+ ###### CATALYST NOT SUPPORTED LINKS ######
59
57
  loggs "\n#### Unsupported dependencies ####\n"
60
58
  loggs "#{dependencies_to_remove.map do |d| d.name end.to_set.to_a }\n\n"
61
59
 
@@ -71,7 +69,7 @@ module Pod
71
69
 
72
70
  ###### OTHER LINKER FLAGS -> to iphone* ######
73
71
  loggs "#### Flagging unsupported libraries ####"
74
- pods_project.targets.filter do |target| target.platform_name == OSPlatform.ios.name end.each do |target| target.flag_libraries unsupported_links, keep_platform end
72
+ pods_project.targets.filter do |target| target.platform_name == OSPlatform.ios.name end.each do |target| target.flag_libraries dependencies_to_remove.to_set.to_a, keep_platform end
75
73
 
76
74
  ###### BUILD_PHASES AND DEPENDENCIES -> PLATFORM_FILTER 'ios' ######
77
75
  loggs "\n#### Filtering build phases ####"
@@ -14,27 +14,73 @@ module Xcodeproj::Project::Object
14
14
 
15
15
  ###### STEP 3 ######
16
16
  # If any unsupported library, then flag as platform-dependant for every build configuration
17
- def flag_libraries libraries, platform
17
+ def flag_libraries dependencies, platform
18
18
  loggs "\tTarget: #{name}"
19
- build_configurations.filter do |config| !config.base_configuration_reference.nil?
19
+
20
+ build_configurations.filter do |config|
21
+ !config.base_configuration_reference.nil?
20
22
  end.each do |config|
21
23
  loggs "\t\tScheme: #{config.name}"
22
24
  xcconfig_path = config.base_configuration_reference.real_path
23
25
  xcconfig = File.read(xcconfig_path)
24
-
26
+
27
+ other_ldflags = xcconfig.filter_lines do |line| line.include? 'OTHER_LDFLAGS = ' end.first || ''
28
+ header_search_paths = xcconfig.filter_lines do |line| line.include? 'HEADER_SEARCH_PATHS = ' end.first || ''
29
+ framework_search_paths = xcconfig.filter_lines do |line| line.include? 'FRAMEWORK_SEARCH_PATHS = ' end.first || ''
30
+ other_swift_flags = xcconfig.filter_lines do |line| line.include? 'OTHER_SWIFT_FLAGS = ' end.first || ''
31
+
32
+ new_other_ldflags = "OTHER_LDFLAGS[sdk=#{platform.sdk}] = $(inherited) -ObjC"
33
+ new_header_search_paths = "HEADER_SEARCH_PATHS[sdk=#{platform.sdk}] = $(inherited)"
34
+ new_framework_search_paths = "FRAMEWORK_SEARCH_PATHS[sdk=#{platform.sdk}] = $(inherited)"
35
+ new_other_swift_flags = "OTHER_SWIFT_FLAGS[sdk=#{platform.sdk}] = $(inherited) -D COCOAPODS"
36
+ new_xcconfig = xcconfig.gsub!(other_ldflags, '').gsub!(header_search_paths, '').gsub!(other_swift_flags, '').gsub!(framework_search_paths, '')
37
+
25
38
  changed = false
26
- libraries.each do |framework|
27
- if xcconfig.include? framework
28
- xcconfig.gsub!(framework, '')
29
- unless xcconfig.include? "OTHER_LDFLAGS[sdk=#{platform.sdk}]"
30
- changed = true
31
- xcconfig += "\nOTHER_LDFLAGS[sdk=#{platform.sdk}] = $(inherited) -ObjC "
39
+ dependencies.each do |dependency|
40
+ if other_ldflags.include? dependency.link
41
+ other_ldflags.gsub! dependency.link, ''
42
+ changed = true
43
+ new_other_ldflags += " #{dependency.link}"
44
+ end
45
+
46
+ regex = /(?<=[\s])([\"]*[\S]*#{Regexp.escape(dependency.name)}[\S]*[\"]*)(?=[\s]?)/
47
+ if header_search_paths.match? regex
48
+ to_replace = header_search_paths.scan(regex).flat_map do |m| m end.filter do |m| !m.nil? && !m.empty? end.each do |to_replace|
49
+ header_search_paths.gsub! to_replace, ''
50
+ new_header_search_paths += " #{to_replace}"
51
+ end
52
+ changed = true
53
+ end
54
+
55
+ regex = /(?<=[\s])([\"][\S]*#{Regexp.escape(dependency.name)}[\S]*\")(?=[\s]?)/
56
+ if framework_search_paths.match? regex
57
+ to_replace = framework_search_paths.scan(regex).flat_map do |m| m end.filter do |m| !m.nil? && !m.empty? end.each do |to_replace|
58
+ framework_search_paths.gsub! to_replace, ''
59
+ new_framework_search_paths += " #{to_replace}"
32
60
  end
33
- xcconfig += framework + ' '
61
+ changed = true
62
+ end
63
+
64
+ regex = /(?<=[\s])(-Xcc -[\S]*#{Regexp.escape(dependency.name)}[\S]*\")(?=[\s]?)/
65
+ if other_swift_flags.match? regex
66
+ to_replace = other_swift_flags.scan(regex).flat_map do |m| m end.filter do |m| !m.nil? && !m.empty? end.each do |to_replace|
67
+ other_swift_flags.gsub! to_replace, ''
68
+ new_other_swift_flags += " #{to_replace}"
69
+ end
70
+ changed = true
34
71
  end
35
72
  end
36
73
 
37
- File.open(xcconfig_path, "w") { |file| file << xcconfig }
74
+ if changed
75
+ new_xcconfig += "\n#{other_ldflags}\n#{framework_search_paths}\n#{header_search_paths}"
76
+ new_xcconfig += "\n#{new_other_ldflags}\n#{new_framework_search_paths}\n#{new_header_search_paths}"
77
+ if !other_swift_flags.empty?
78
+ new_xcconfig += "\n#{other_swift_flags}\n#{new_other_swift_flags}"
79
+ end
80
+ new_xcconfig.gsub! /\n+/, "\n"
81
+ new_xcconfig.gsub! /[ ]+/, " "
82
+ File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
83
+ end
38
84
  loggs "\t\t\t#{changed ? "Succeded" : "Nothing to flag"}"
39
85
  end
40
86
  end
@@ -47,11 +93,9 @@ module Xcodeproj::Project::Object
47
93
  # Dependencies contained in Other Linker Flags
48
94
  def other_linker_flags_dependencies
49
95
  config = build_configurations.filter do |config| not config.base_configuration_reference.nil? end.first
96
+ return [] if config.nil?
50
97
  other_ldflags = config.resolve_build_setting 'OTHER_LDFLAGS'
51
-
52
- if other_ldflags.nil?
53
- return []
54
- end
98
+ return [] if other_ldflags.nil?
55
99
 
56
100
  if other_ldflags.class == String
57
101
  other_ldflags = other_ldflags.split ' '
@@ -44,7 +44,7 @@ module Xcodeproj::Project::Object
44
44
  new_snippet = snippet.clone
45
45
  should_uninstall = configurations.map do |string| snippet.include? string end.reduce(false) do |total, condition| total = total || condition end
46
46
  keys.each do |key|
47
- lines_to_replace = snippet.filter_lines do |line| line.include? "#{key}" end.to_set.to_a
47
+ lines_to_replace = snippet.filter_lines do |line| line.match "\/#{key}" end.to_set.to_a
48
48
  unless lines_to_replace.empty?
49
49
  changed = true
50
50
  lines_to_replace.each do |line|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-catalyst-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - fermoya
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2022-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '2.3'
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: '1.3'
54
+ version: '2.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -96,7 +96,7 @@ homepage: https://github.com/fermoya/cocoapods-catalyst-support
96
96
  licenses:
97
97
  - MIT
98
98
  metadata: {}
99
- post_install_message:
99
+ post_install_message:
100
100
  rdoc_options: []
101
101
  require_paths:
102
102
  - lib
@@ -111,8 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
- rubygems_version: 3.0.3
115
- signing_key:
114
+ rubygems_version: 3.2.27
115
+ signing_key:
116
116
  specification_version: 4
117
117
  summary: Many libraries you may use for iOS won't compile for your macCatalyst App,
118
118
  thus, making porting your App to the Mac world more difficult than initially expected.