cocoapods-rome 0.8.0 → 1.0.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
  SHA1:
3
- metadata.gz: a638625751491ade75d2b7bec19c0b08aa80c425
4
- data.tar.gz: f2ded28621a976f5e3c829d39637aff90369db53
3
+ metadata.gz: 311a92d3767d97104b9f5b68d8fec1f778270ae1
4
+ data.tar.gz: '0888b5c3242fdf62303f654d41f3987105d2dd35'
5
5
  SHA512:
6
- metadata.gz: 61262472a96912a6ca5cf07695908ec1a8bbb430a3964e79fc93999066c4e6ba57b99de4eb71b63983bcab01c045d43715befe0f43fe78a3932eed948efc0b81
7
- data.tar.gz: 7d7656a5880248ce20c603af87df72975cf87d60472c234b9611c30cd7d6bb2ad55e72b96bd383065c9363ea3c6585f41087afb3144884abefc163c3c8325970
6
+ metadata.gz: f466d6e2a5d277af6d6e14bf891452f32025012e4e212bbccb4ab2f51089a98e2fbc1ce3abef3ee8741b843cb701cdb838849df58d337f0df6fb2a14534ad226
7
+ data.tar.gz: 258d314b5de0cfd1960558d609e77384ebb3eac0515dd4dbeb2d8f8a5d6b6240669594f5bbb14089221aa0fe2e41e6a4f840b4f1474423202b32c2d821d26efc
@@ -1,78 +1,79 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocoapods-rome (0.8.0)
4
+ cocoapods-rome (1.0.0)
5
5
  cocoapods (>= 1.1.0, < 2.0)
6
6
  fourflusher (~> 2.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- CFPropertyList (2.3.5)
12
- activesupport (4.2.7.1)
11
+ CFPropertyList (3.0.0)
12
+ activesupport (4.2.10)
13
13
  i18n (~> 0.7)
14
- json (~> 1.7, >= 1.7.7)
15
14
  minitest (~> 5.1)
16
15
  thread_safe (~> 0.3, >= 0.3.4)
17
16
  tzinfo (~> 1.1)
17
+ atomos (0.1.2)
18
18
  bacon (1.2.0)
19
- claide (1.0.1)
20
- cocoapods (1.2.0)
19
+ claide (1.0.2)
20
+ cocoapods (1.5.0)
21
21
  activesupport (>= 4.0.2, < 5)
22
- claide (>= 1.0.1, < 2.0)
23
- cocoapods-core (= 1.2.0)
24
- cocoapods-deintegrate (>= 1.0.1, < 2.0)
25
- cocoapods-downloader (>= 1.1.3, < 2.0)
22
+ claide (>= 1.0.2, < 2.0)
23
+ cocoapods-core (= 1.5.0)
24
+ cocoapods-deintegrate (>= 1.0.2, < 2.0)
25
+ cocoapods-downloader (>= 1.2.0, < 2.0)
26
26
  cocoapods-plugins (>= 1.0.0, < 2.0)
27
27
  cocoapods-search (>= 1.0.0, < 2.0)
28
28
  cocoapods-stats (>= 1.0.0, < 2.0)
29
- cocoapods-trunk (>= 1.1.2, < 2.0)
29
+ cocoapods-trunk (>= 1.3.0, < 2.0)
30
30
  cocoapods-try (>= 1.1.0, < 2.0)
31
- colored (~> 1.2)
31
+ colored2 (~> 3.1)
32
32
  escape (~> 0.0.4)
33
33
  fourflusher (~> 2.0.1)
34
34
  gh_inspector (~> 1.0)
35
- molinillo (~> 0.5.5)
35
+ molinillo (~> 0.6.5)
36
36
  nap (~> 1.0)
37
- ruby-macho (~> 0.2.5)
38
- xcodeproj (>= 1.4.1, < 2.0)
39
- cocoapods-core (1.2.0)
40
- activesupport (>= 4.0.2, < 5)
37
+ ruby-macho (~> 1.1)
38
+ xcodeproj (>= 1.5.7, < 2.0)
39
+ cocoapods-core (1.5.0)
40
+ activesupport (>= 4.0.2, < 6)
41
41
  fuzzy_match (~> 2.0.4)
42
42
  nap (~> 1.0)
43
- cocoapods-deintegrate (1.0.1)
44
- cocoapods-downloader (1.1.3)
43
+ cocoapods-deintegrate (1.0.2)
44
+ cocoapods-downloader (1.2.0)
45
45
  cocoapods-plugins (1.0.0)
46
46
  nap
47
47
  cocoapods-search (1.0.0)
48
48
  cocoapods-stats (1.0.0)
49
- cocoapods-trunk (1.1.2)
49
+ cocoapods-trunk (1.3.0)
50
50
  nap (>= 0.8, < 2.0)
51
- netrc (= 0.7.8)
51
+ netrc (~> 0.11)
52
52
  cocoapods-try (1.1.0)
53
- colored (1.2)
53
+ colored2 (3.1.2)
54
+ concurrent-ruby (1.0.5)
54
55
  escape (0.0.4)
55
56
  fourflusher (2.0.1)
56
57
  fuzzy_match (2.0.4)
57
- gh_inspector (1.0.3)
58
- i18n (0.8.0)
59
- json (1.8.6)
60
- minitest (5.10.1)
61
- molinillo (0.5.5)
62
- nanaimo (0.2.3)
58
+ gh_inspector (1.1.3)
59
+ i18n (0.9.5)
60
+ concurrent-ruby (~> 1.0)
61
+ minitest (5.11.3)
62
+ molinillo (0.6.5)
63
+ nanaimo (0.2.5)
63
64
  nap (1.1.0)
64
- netrc (0.7.8)
65
+ netrc (0.11.0)
65
66
  rake (11.2.2)
66
- ruby-macho (0.2.6)
67
- thread_safe (0.3.5)
68
- tzinfo (1.2.2)
67
+ ruby-macho (1.1.0)
68
+ thread_safe (0.3.6)
69
+ tzinfo (1.2.5)
69
70
  thread_safe (~> 0.1)
70
- xcodeproj (1.4.2)
71
- CFPropertyList (~> 2.3.3)
72
- activesupport (>= 3)
73
- claide (>= 1.0.1, < 2.0)
74
- colored (~> 1.2)
75
- nanaimo (~> 0.2.3)
71
+ xcodeproj (1.5.7)
72
+ CFPropertyList (>= 2.3.3, < 4.0)
73
+ atomos (~> 0.1.2)
74
+ claide (>= 1.0.2, < 2.0)
75
+ colored2 (~> 3.1)
76
+ nanaimo (~> 0.2.4)
76
77
 
77
78
  PLATFORMS
78
79
  ruby
@@ -84,4 +85,4 @@ DEPENDENCIES
84
85
  rake
85
86
 
86
87
  BUNDLED WITH
87
- 1.14.3
88
+ 1.15.4
data/README.md CHANGED
@@ -38,3 +38,71 @@ $ tree Rome/
38
38
  Rome/
39
39
  └── Alamofire.framework
40
40
  ```
41
+
42
+ For your production builds, when you want dSYMs created and stored:
43
+
44
+ ```ruby
45
+ platform :osx, '10.10'
46
+
47
+ plugin 'cocoapods-rome', {
48
+ dsym: true,
49
+ configuration: 'Release'
50
+ }
51
+
52
+ target 'caesar' do
53
+ pod 'Alamofire'
54
+ end
55
+ ```
56
+
57
+ Resulting in:
58
+
59
+ ```
60
+ $ tree dSYM/
61
+ dSYM/
62
+ ├── iphoneos
63
+ │   └── Alamofire.framework.dSYM
64
+ │   └── Contents
65
+ │   ├── Info.plist
66
+ │   └── Resources
67
+ │   └── DWARF
68
+ │   └── Alamofire
69
+ └── iphonesimulator
70
+ └── Alamofire.framework.dSYM
71
+ └── Contents
72
+ ├── Info.plist
73
+ └── Resources
74
+ └── DWARF
75
+ └── Alamofire
76
+ ```
77
+
78
+ ## Hooks
79
+
80
+ The plugin allows you to provides hooks that will be called during the installation process.
81
+
82
+ ### `pre_compile`
83
+
84
+ This hook allows you to make any last changes to the generated Xcode project before the compilation of frameworks begins.
85
+
86
+ It receives the `Pod::Installer` as its only argument.
87
+
88
+ #### Example
89
+
90
+ Customising the Swift version of all pods
91
+
92
+ ```ruby
93
+ platform :osx, '10.10'
94
+
95
+ plugin 'cocoapods-rome', :pre_compile => Proc.new { |installer|
96
+ installer.pods_project.targets.each do |target|
97
+ target.build_configurations.each do |config|
98
+ config.build_settings['SWIFT_VERSION'] = '4.0'
99
+ end
100
+ end
101
+
102
+ installer.pods_project.save
103
+ }
104
+
105
+ target 'caesar' do
106
+ pod 'Alamofire'
107
+ end
108
+ ```
@@ -1,3 +1,3 @@
1
1
  module CocoapodsRome
2
- VERSION = "0.8.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,47 +1,77 @@
1
1
  require 'fourflusher'
2
2
 
3
- CONFIGURATION = "Release"
4
3
  PLATFORMS = { 'iphonesimulator' => 'iOS',
5
4
  'appletvsimulator' => 'tvOS',
6
5
  'watchsimulator' => 'watchOS' }
7
6
 
8
- def build_for_iosish_platform(sandbox, build_dir, target, device, simulator)
7
+ def build_for_iosish_platform(sandbox, build_dir, target, device, simulator, configuration)
9
8
  deployment_target = target.platform_deployment_target
10
9
  target_label = target.cocoapods_target_label
11
10
 
12
- xcodebuild(sandbox, target_label, device, deployment_target)
13
- xcodebuild(sandbox, target_label, simulator, deployment_target)
11
+ xcodebuild(sandbox, target_label, device, deployment_target, configuration)
12
+ xcodebuild(sandbox, target_label, simulator, deployment_target, configuration)
14
13
 
15
14
  spec_names = target.specs.map { |spec| [spec.root.name, spec.root.module_name] }.uniq
16
15
  spec_names.each do |root_name, module_name|
17
16
  executable_path = "#{build_dir}/#{root_name}"
18
- device_lib = "#{build_dir}/#{CONFIGURATION}-#{device}/#{root_name}/#{module_name}.framework/#{module_name}"
17
+ device_lib = "#{build_dir}/#{configuration}-#{device}/#{root_name}/#{module_name}.framework/#{module_name}"
19
18
  device_framework_lib = File.dirname(device_lib)
20
- simulator_lib = "#{build_dir}/#{CONFIGURATION}-#{simulator}/#{root_name}/#{module_name}.framework/#{module_name}"
19
+ simulator_lib = "#{build_dir}/#{configuration}-#{simulator}/#{root_name}/#{module_name}.framework/#{module_name}"
21
20
 
22
21
  next unless File.file?(device_lib) && File.file?(simulator_lib)
23
22
 
24
23
  lipo_log = `lipo -create -output #{executable_path} #{device_lib} #{simulator_lib}`
25
24
  puts lipo_log unless File.exist?(executable_path)
26
25
 
27
- FileUtils.mv executable_path, device_lib
28
- FileUtils.mv device_framework_lib, build_dir
26
+ FileUtils.mv executable_path, device_lib, :force => true
27
+ FileUtils.mv device_framework_lib, build_dir, :force => true
29
28
  FileUtils.rm simulator_lib if File.file?(simulator_lib)
30
29
  FileUtils.rm device_lib if File.file?(device_lib)
31
30
  end
32
31
  end
33
32
 
34
- def xcodebuild(sandbox, target, sdk='macosx', deployment_target=nil)
35
- args = %W(-project #{sandbox.project_path.realdirpath} -scheme #{target} -configuration #{CONFIGURATION} -sdk #{sdk})
33
+ def xcodebuild(sandbox, target, sdk='macosx', deployment_target=nil, configuration)
34
+ args = %W(-project #{sandbox.project_path.realdirpath} -scheme #{target} -configuration #{configuration} -sdk #{sdk})
36
35
  platform = PLATFORMS[sdk]
37
36
  args += Fourflusher::SimControl.new.destination(:oldest, platform, deployment_target) unless platform.nil?
38
37
  Pod::Executable.execute_command 'xcodebuild', args, true
39
38
  end
40
39
 
41
- Pod::HooksManager.register('cocoapods-rome', :post_install) do |installer_context|
40
+ def enable_debug_information(project_path, configuration)
41
+ project = Xcodeproj::Project.open(project_path)
42
+ project.targets.each do |target|
43
+ config = target.build_configurations.find { |config| config.name.eql? configuration }
44
+ config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'
45
+ config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
46
+ end
47
+ project.save
48
+ end
49
+
50
+ def copy_dsym_files(dsym_destination, configuration)
51
+ dsym_destination.rmtree if dsym_destination.directory?
52
+ platforms = ['iphoneos', 'iphonesimulator']
53
+ platforms.each do |platform|
54
+ dsym = Pathname.glob("build/#{configuration}-#{platform}/**/*.dSYM")
55
+ dsym.each do |dsym|
56
+ destination = dsym_destination + platform
57
+ FileUtils.mkdir_p destination
58
+ FileUtils.cp_r dsym, destination, :remove_destination => true
59
+ end
60
+ end
61
+ end
62
+
63
+ Pod::HooksManager.register('cocoapods-rome', :post_install) do |installer_context, user_options|
64
+ enable_dsym = user_options.fetch('dsym', true)
65
+ configuration = user_options.fetch('configuration', true)
66
+ if user_options["pre_compile"]
67
+ user_options["pre_compile"].call(installer_context)
68
+ end
69
+
42
70
  sandbox_root = Pathname(installer_context.sandbox_root)
43
71
  sandbox = Pod::Sandbox.new(sandbox_root)
44
72
 
73
+ enable_debug_information(sandbox.project_path, configuration) if enable_dsym
74
+
45
75
  build_dir = sandbox_root.parent + 'build'
46
76
  destination = sandbox_root.parent + 'Rome'
47
77
 
@@ -51,10 +81,10 @@ Pod::HooksManager.register('cocoapods-rome', :post_install) do |installer_contex
51
81
  targets = installer_context.umbrella_targets.select { |t| t.specs.any? }
52
82
  targets.each do |target|
53
83
  case target.platform_name
54
- when :ios then build_for_iosish_platform(sandbox, build_dir, target, 'iphoneos', 'iphonesimulator')
55
- when :osx then xcodebuild(sandbox, target.cocoapods_target_label)
56
- when :tvos then build_for_iosish_platform(sandbox, build_dir, target, 'appletvos', 'appletvsimulator')
57
- when :watchos then build_for_iosish_platform(sandbox, build_dir, target, 'watchos', 'watchsimulator')
84
+ when :ios then build_for_iosish_platform(sandbox, build_dir, target, 'iphoneos', 'iphonesimulator', configuration)
85
+ when :osx then xcodebuild(sandbox, target.cocoapods_target_label, configuration)
86
+ when :tvos then build_for_iosish_platform(sandbox, build_dir, target, 'appletvos', 'appletvsimulator', configuration)
87
+ when :watchos then build_for_iosish_platform(sandbox, build_dir, target, 'watchos', 'watchsimulator', configuration)
58
88
  else raise "Unknown platform '#{target.platform_name}'" end
59
89
  end
60
90
 
@@ -85,5 +115,8 @@ Pod::HooksManager.register('cocoapods-rome', :post_install) do |installer_contex
85
115
  FileUtils.mkdir_p destination
86
116
  FileUtils.cp_r framework, destination, :remove_destination => true
87
117
  end
118
+
119
+ copy_dsym_files(sandbox_root.parent + 'dSYM', configuration) if enable_dsym
120
+
88
121
  build_dir.rmtree if build_dir.directory?
89
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-rome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Bügling
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2018-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -113,11 +113,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  version: '0'
114
114
  requirements: []
115
115
  rubyforge_project:
116
- rubygems_version: 2.4.5.1
116
+ rubygems_version: 2.2.2
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Rome makes it easy to build a list of frameworks for consumption outside
120
120
  of Xcode
121
121
  test_files:
122
122
  - spec/spec_helper.rb
123
- has_rdoc: