cocoapods-no-autoimports 0.1.0 → 0.2.0

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: dc9bff96995c0dacdecff621d1552e1d7df4b1e3f95be37681373e22c4e5450e
4
- data.tar.gz: e3d7404078c24561394292962f2f4531ae5ddbec9de10a54adeadc3e6c299bdb
3
+ metadata.gz: 007f7c44899093750c77a74c4165d9f944a4026cbfb0c0c119f43f6853d66da4
4
+ data.tar.gz: 68c5404f1830ad99234c93384817ea00e7b598cb9f098722839a29b1ea4bfab5
5
5
  SHA512:
6
- metadata.gz: 25af1d8c412969bf8b0fb238da0fe5c1e1c40a7003e75c30ff241256c5f7e5c3b68bf5d284c4e2699b421a417a80dc21d7afc420212bf0937c829712ee40e706
7
- data.tar.gz: 27c38e46f896e527168b67c0dd88cfd21b95c21310d8b05912c1209211c234489fcb17833210f766974fd6ec094eb629d3b811e57cc80523415e65151714ad04
6
+ metadata.gz: 550272b7381631f0480bb63f8a13181a4757ce0db3862320e1b30eb68c23776a73f0b76d9b463596fe456873f150b70b77f03b30aa60d080f34ca909a8a52fb5
7
+ data.tar.gz: f3e1ec72e3aa7e30148a75805a63acda3b49c2ae6453ad45b22129833be1f197c6b7dea774a8c3429585d5fb2dc0c4b2a045f9c7b6fd56ac515ecd6369e0c2b8
data/.gitignore CHANGED
@@ -10,4 +10,4 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  .DS_Store
13
- .gem
13
+ *.gem
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Cocoapods no autoimports?
1
+ # 🙅‍♂️ Cocoapods no autoimports
2
2
 
3
3
  A cocoapods plugin that let's you hook in generating umbrella and prefix headers for pods. And remove autoimports of
4
4
  1. `UIKit`.h
@@ -16,8 +16,12 @@ gem 'cocoapods-no-autoimports'
16
16
  Add this line to your Podfile:
17
17
  ```ruby
18
18
  plugin 'cocoapods-no-autoimports'
19
+ # cocoapods-no-autoimports__pods = ['YourPod__Core', 'YourPod__UI']
19
20
  ```
20
21
 
22
+ The plugin will parse the Podfile and look for `cocoapods-no-autoimports__pods` key.
23
+ Make sure to list your pods to which you want to apply plugin to in `cocoapods-no-autoimports__pods` array. It got to be comment in 1 line.
24
+
21
25
  Execute:
22
26
 
23
27
  $ bundle install
@@ -32,3 +36,9 @@ Done! Now go and check your Xcode build erros 😁
32
36
  ## License
33
37
 
34
38
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
39
+
40
+ ## Additional Info
41
+
42
+ * This gem is distributed via [RubyGems.org](https://rubygems.org/gems/cocoapods-no-autoimports)
43
+ * Special thanks to [Keith's](https://github.com/keith/cocoapods-foundation-headers/tree/master) repo got me started
44
+ * This [ticket](https://github.com/CocoaPods/CocoaPods/issues/6815) was the problem for us as well so I decided to built a plugin
@@ -1,3 +1,3 @@
1
1
  module CocoapodsNoAutoimports
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,37 +1,149 @@
1
1
  module Pod
2
- module Generator
3
- class Header
4
-
5
- # Removed the following lines:
6
- # result << "#ifdef __OBJC__\n"
7
- # result << generate_platform_import_header
8
- # result << "#else\n"
9
- # result << "#endif\n"
10
-
11
- def generate
12
- result = ''
13
- result << "#ifndef FOUNDATION_EXPORT\n"
14
- result << "#if defined(__cplusplus)\n"
15
- result << "#define FOUNDATION_EXPORT extern \"C\"\n"
16
- result << "#else\n"
17
- result << "#define FOUNDATION_EXPORT extern\n"
18
- result << "#endif\n"
19
- result << "#endif\n"
20
- result << "\n"
21
-
22
- imports.each do |import|
23
- result << %(#import "#{import}"\n)
24
- end
25
-
26
- unless module_imports.empty?
27
- module_imports.each do |import|
28
- result << %(\n@import #{import})
29
- end
30
- result << "\n"
31
- end
32
-
33
- result
2
+ module Generator
3
+ class Header
4
+
5
+ # Make array of pods from Podfile to which a plugin should be applied to
6
+ def makePodsArrayToApplyPlugin
7
+ result = []
8
+ # open file and read contents
9
+ podfile = File.read(Config.instance.podfile_path).lines
10
+ key = "cocoapods-no-autoimports__pods"
11
+
12
+ podfile.each do |line|
13
+ if line.include?(key)
14
+ array_content = line.match(/\[(.*)\]/)[1]
15
+ array_content = array_content.gsub("'", "").split(",").map(&:strip)
16
+ result = array_content
17
+ end
18
+ end
19
+
20
+ result
21
+ end
22
+
23
+ # Removed the following lines:
24
+ # result << "#ifdef __OBJC__\n"
25
+ # result << generate_platform_import_header
26
+ # result << "#else\n"
27
+ # result << "#endif\n"
28
+ def generate_without_platform_imports
29
+ result = ""
30
+ result << "#ifndef FOUNDATION_EXPORT\n"
31
+ result << "#if defined(__cplusplus)\n"
32
+ result << "#define FOUNDATION_EXPORT extern \"C\"\n"
33
+ result << "#else\n"
34
+ result << "#define FOUNDATION_EXPORT extern\n"
35
+ result << "#endif\n"
36
+ result << "#endif\n"
37
+ result << "\n"
38
+ result
39
+ end
40
+
41
+ def generate_platform_imports
42
+ result = ""
43
+ result << "#ifdef __OBJC__\n"
44
+ result << generate_platform_import_header
45
+ result << "#else\n"
46
+ result << "#ifndef FOUNDATION_EXPORT\n"
47
+ result << "#if defined(__cplusplus)\n"
48
+ result << "#define FOUNDATION_EXPORT extern \"C\"\n"
49
+ result << "#else\n"
50
+ result << "#define FOUNDATION_EXPORT extern\n"
51
+ result << "#endif\n"
52
+ result << "#endif\n"
53
+ result << "#endif\n"
54
+ result << "\n"
55
+ result
56
+ end
57
+
58
+ def generate(should_import_platforms: true)
59
+ result = ""
60
+ if should_import_platforms
61
+ result = generate_platform_imports
62
+ else
63
+ result = generate_without_platform_imports
64
+ end
65
+
66
+ imports.each do |import|
67
+ result << %(#import "#{import}"\n)
68
+ end
69
+
70
+ unless module_imports.empty?
71
+ module_imports.each do |import|
72
+ result << %(\n@import #{import})
34
73
  end
74
+ result << "\n"
75
+ end
76
+
77
+ result
78
+ end
79
+ end
80
+
81
+ class UmbrellaHeader < Header
82
+
83
+ # Generates the contents of the umbrella header according to the included
84
+ # pods.
85
+ #
86
+ # @return [String]
87
+ #
88
+ def generate
89
+ pods_to_apply_plugin = makePodsArrayToApplyPlugin
90
+ matched_target = pods_to_apply_plugin.include?(target.name)
91
+ if matched_target
92
+ result = super(should_import_platforms: false)
93
+ else
94
+ result = super
95
+ end
96
+
97
+ if matched_target
98
+ puts "✍️ Applying cocoapods-no-autoimports plugin to #{target.name}"
99
+ end
100
+
101
+ result << "\n"
102
+
103
+ result << <<-eos.strip_heredoc
104
+ FOUNDATION_EXPORT double #{target.product_module_name}VersionNumber;
105
+ FOUNDATION_EXPORT const unsigned char #{target.product_module_name}VersionString[];
106
+ eos
107
+
108
+ result << "\n"
109
+
110
+ result
111
+ end
112
+ end
113
+
114
+ class PrefixHeader < Header
115
+ def generate
116
+ spec_names = file_accessors.map { |accessor| accessor.spec.name }
117
+ pods_to_apply_plugin = makePodsArrayToApplyPlugin
118
+ matched_target = false
119
+
120
+ spec_names.each do |spec_name|
121
+ if pods_to_apply_plugin.include?(spec_name)
122
+ matched_target = true
123
+ end
124
+ end
125
+
126
+ if matched_target
127
+ result = super(should_import_platforms: false)
128
+ else
129
+ result = super
130
+ end
131
+
132
+ unique_prefix_header_contents = file_accessors.map do |file_accessor|
133
+ file_accessor.spec_consumer.prefix_header_contents
134
+ end.compact.uniq
135
+
136
+ unique_prefix_header_contents.each do |prefix_header_contents|
137
+ result << prefix_header_contents
138
+ result << "\n"
139
+ end
140
+
141
+ file_accessors.map(&:prefix_header).compact.uniq.each do |prefix_header|
142
+ result << Pathname(prefix_header).read
143
+ end
144
+
145
+ result
35
146
  end
36
147
  end
37
- end
148
+ end
149
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-no-autoimports
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Glushko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-16 00:00:00.000000000 Z
11
+ date: 2023-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubygems_version: 3.1.6
84
+ rubygems_version: 3.4.10
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: A CocoaPods plugin for removing autoimported [UIKit/Cocoa/Foundation] headers.