cocoapods-pod-merge 0.0.2 → 0.0.3

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: 1a769edfca1f3a0adee44a9521fffead875328dfad8331f7d1a35c81e63fe334
4
- data.tar.gz: 05cef67bc01d514012d5aa35a9eb6daac1b8b4bc355a5771584c323378ec9e57
3
+ metadata.gz: c15e511e82a904dc11616d9ac811f643216f5d1d34646518ad29a6dbde1e0ec2
4
+ data.tar.gz: 7a94572e547e895e73f48a99989a81b0444a2fba735e2cc3ac777dbf92845f49
5
5
  SHA512:
6
- metadata.gz: c097564f432c08bc0c8bac3cc892744699defa501b1f69d487bba396172a68afaacf45d5c81b3a5054a9b9f79eb05f9066b69ebfd942afc5f7dfdf27bb3f0767
7
- data.tar.gz: 0d7a58b0fc975ecdbb46a06ab17397b9e482d763404eabe68eac23326c69a12fdf5098f51d8883c4c04a92b4e3a692006ffe25c47659aec050eaf003dc03a401
6
+ metadata.gz: b3d41d5e2c522632f5a42810e6837bb128da441780efb802704cc5af7d5e10076c9c927f096c6a4b3195e058ecfaee4e8de898b74e2673b62f52cad95cca5923
7
+ data.tar.gz: 3b438bfa2eda55b58bd0740af5aba4401d25e00f813a1d2d29a4071abceaf70f0fa23094e26a5f235328591fd8ab6db523484d28ef4e544cb58a195065b37606
@@ -142,7 +142,15 @@ module CocoapodsPodMerge
142
142
  if line.strip == 'end'
143
143
  parsing_a_group = false
144
144
  elsif line.strip.include?('!')
145
- merge_groups[group_name]['flags'][line.strip.delete('!')] = true
145
+ if line.strip.include?('swift_version!')
146
+ extracted_swift_version = line.strip.delete('swift_version!').delete('\'').delete('\"').strip.to_f
147
+ if extracted_swift_version == 0
148
+ abort("Found an invalid Swift version specified for group \'#{group_name}\' in the MergeFile. Please specify one like: swift_version! '5.0'".red)
149
+ end
150
+ merge_groups[group_name]['swift_version'] = extracted_swift_version.to_s
151
+ else
152
+ merge_groups[group_name]['flags'][line.strip.delete('!')] = true
153
+ end
146
154
  else
147
155
  merge_groups[group_name]['lines'].append(line)
148
156
  line = line.split(',').first
@@ -158,7 +166,7 @@ module CocoapodsPodMerge
158
166
  abort("Duplicate Group Name: #{group_name}. Please make sure all groups have different names!".red)
159
167
  end
160
168
 
161
- merge_groups[group_name] = { 'titles' => [], 'lines' => [], 'flags' => {} }
169
+ merge_groups[group_name] = { 'titles' => [], 'lines' => [], 'flags' => {}, 'swift_version' => '' }
162
170
  parsing_a_group = true
163
171
  end
164
172
  end
@@ -172,6 +180,7 @@ module CocoapodsPodMerge
172
180
 
173
181
  pods_to_merge = group_contents['titles']
174
182
  flags = group_contents['flags']
183
+ forced_swift_language_version = group_contents['swift_version']
175
184
  public_headers_by_pod = {}
176
185
  frameworks = []
177
186
  prefix_header_contents = []
@@ -200,7 +209,7 @@ module CocoapodsPodMerge
200
209
  Pod::UI.puts 'Downloading Pods in the group'.cyan
201
210
  FileUtils.mkdir CacheDirectory unless File.directory?(CacheDirectory)
202
211
 
203
- create_cache_podfile(podfile_info, group_contents['lines'])
212
+ create_cache_podfile(podfile_info, group_contents['lines'], forced_swift_language_version)
204
213
 
205
214
  Dir.chdir(CacheDirectory) do
206
215
  system('pod install') || raise('Failed to download pods to merge')
@@ -286,18 +295,23 @@ module CocoapodsPodMerge
286
295
  end
287
296
 
288
297
  # Generate Module Map
289
- Pod::UI.puts "\tGenerating module map".magenta
290
298
  unless mixed_language_group
299
+ Pod::UI.puts "\tGenerating module map".magenta
291
300
  generate_module_map(merged_framework_name, public_headers_by_pod)
292
301
  end
293
302
 
294
303
  # Verify there's a common Swift language version across the group
295
304
  if mixed_language_group
296
- swift_version = swift_versions.each_value.reduce { |final_swift_version, versions| final_swift_version & versions }
297
- unless swift_version&.first
298
- abort("Could not find a common compatible Swift version across the pods to be merged for group #{merged_framework_name}: #{swift_versions}".red)
305
+ if !forced_swift_language_version.empty?
306
+ swift_version = [forced_swift_language_version]
307
+ else
308
+ swift_version = swift_versions.each_value.reduce { |final_swift_version, versions| final_swift_version & versions }
309
+ unless swift_version&.first
310
+ Pod::UI.puts "Could not find a common compatible Swift version across the pods to be merged group #{merged_framework_name}: #{swift_versions}".red
311
+ abort("or specify a swift version in this group using the swift_version! flag, example: swift_version! '5.0'".red)
312
+ end
299
313
  end
300
- Pod::UI.puts "\tUsing Swift Version #{swift_version.first} for the group: #{merged_framework_name}".magenta
314
+ Pod::UI.puts "\tUsing Swift Version #{swift_version.first} for the group: #{merged_framework_name}".yellow
301
315
  end
302
316
 
303
317
  # Create the local podspec
@@ -386,9 +400,26 @@ module CocoapodsPodMerge
386
400
  return [object] if object.class == String || object.class == Hash
387
401
  end
388
402
 
389
- def create_cache_podfile(podfile_info, pods)
403
+ def create_cache_podfile(podfile_info, pods, swift_language_version)
390
404
  FileUtils.touch("#{CacheDirectory}/Podfile")
391
405
  file = File.new("#{CacheDirectory}/Podfile", 'w')
406
+
407
+ uses_swift = !swift_language_version.empty?
408
+
409
+ # Create a temporary Xcode project for pods missing Swift_Version in the Podspec
410
+ if uses_swift
411
+ project = Xcodeproj::Project.new("#{CacheDirectory}/Dummy.xcodeproj")
412
+ target = project.new_target(:application, 'Dummy', :ios, '13.1', nil, :swift)
413
+ swift_file = project.main_group.new_file('./dummy.swift')
414
+ target.add_file_references([swift_file])
415
+ project.targets.each do |target|
416
+ target.build_configurations.each do |config|
417
+ config.build_settings['SWIFT_VERSION'] ||= swift_language_version
418
+ end
419
+ end
420
+ project.save
421
+ end
422
+
392
423
  file.puts("require 'json'")
393
424
  podfile_info.sources.each do |source|
394
425
  file.puts source
@@ -396,7 +427,13 @@ module CocoapodsPodMerge
396
427
  podfile_info.platforms.each do |platform|
397
428
  file.puts platform
398
429
  end
399
- file.puts("install! 'cocoapods', :integrate_targets => false, :lock_pod_sources => false")
430
+
431
+ if uses_swift
432
+ file.puts("install! 'cocoapods', :lock_pod_sources => false")
433
+ else
434
+ file.puts("install! 'cocoapods', :integrate_targets => false, :lock_pod_sources => false")
435
+ end
436
+
400
437
  file.puts("target 'Dummy' do")
401
438
  pods.each do |line|
402
439
  file.puts line.to_s
@@ -413,7 +450,7 @@ module CocoapodsPodMerge
413
450
  module_map = File.new("#{InstallationDirectory}/#{merged_framework_name}/Sources/module.modulemap", 'w')
414
451
  module_map.puts("framework module #{merged_framework_name} {")
415
452
  public_headers.each do |pod, headers|
416
- module_map.puts("\n\texplicit module #{pod} {")
453
+ module_map.puts("\n\texplicit module #{pod.delete('+').delete('_')} {")
417
454
  headers.each do |header|
418
455
  module_map.puts("\t\theader \"#{header}\"")
419
456
  end
@@ -2,5 +2,5 @@
2
2
  # Use of this source code is governed by an MIT-style license that can be found in the LICENSE file
3
3
 
4
4
  module CocoapodsPodMerge
5
- VERSION = "0.0.2"
5
+ VERSION = "0.0.3"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-pod-merge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siddharth Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-28 00:00:00.000000000 Z
11
+ date: 2019-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.0'
41
41
  description: Cocoapods plugin to merge your pods into one framework, to reduce dylib
42
42
  loading time on app startup.
43
43
  email:
@@ -62,7 +62,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
62
  requirements:
63
63
  - - ">="
64
64
  - !ruby/object:Gem::Version
65
- version: '0'
65
+ version: 2.0.0
66
66
  required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="