cocoapods 1.0.0 → 1.1.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +329 -0
  3. data/lib/cocoapods/command/init.rb +6 -6
  4. data/lib/cocoapods/command/ipc/list.rb +40 -0
  5. data/lib/cocoapods/command/ipc/podfile.rb +31 -0
  6. data/lib/cocoapods/command/ipc/repl.rb +51 -0
  7. data/lib/cocoapods/command/ipc/spec.rb +29 -0
  8. data/lib/cocoapods/command/ipc/update_search_index.rb +24 -0
  9. data/lib/cocoapods/command/ipc.rb +18 -0
  10. data/lib/cocoapods/command/lib/create.rb +105 -0
  11. data/lib/cocoapods/command/lib/lint.rb +111 -0
  12. data/lib/cocoapods/command/lib.rb +3 -207
  13. data/lib/cocoapods/command/repo/push.rb +44 -20
  14. data/lib/cocoapods/command/setup.rb +2 -1
  15. data/lib/cocoapods/command/spec/lint.rb +4 -0
  16. data/lib/cocoapods/command.rb +2 -1
  17. data/lib/cocoapods/config.rb +4 -1
  18. data/lib/cocoapods/downloader/cache.rb +1 -0
  19. data/lib/cocoapods/downloader.rb +20 -0
  20. data/lib/cocoapods/executable.rb +1 -1
  21. data/lib/cocoapods/gem_version.rb +1 -1
  22. data/lib/cocoapods/generator/acknowledgements/plist.rb +4 -1
  23. data/lib/cocoapods/generator/copy_resources_script.rb +4 -10
  24. data/lib/cocoapods/generator/header.rb +2 -1
  25. data/lib/cocoapods/generator/prefix_header.rb +0 -12
  26. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +38 -5
  27. data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +5 -4
  28. data/lib/cocoapods/installer/analyzer/pod_variant_set.rb +5 -1
  29. data/lib/cocoapods/installer/analyzer/target_inspector.rb +24 -1
  30. data/lib/cocoapods/installer/analyzer.rb +161 -1
  31. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +29 -9
  32. data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +204 -0
  33. data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +314 -0
  34. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +401 -0
  35. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +214 -0
  36. data/lib/cocoapods/installer/xcode/pods_project_generator.rb +265 -0
  37. data/lib/cocoapods/installer/xcode.rb +7 -0
  38. data/lib/cocoapods/installer.rb +50 -214
  39. data/lib/cocoapods/resolver.rb +15 -9
  40. data/lib/cocoapods/sandbox/headers_store.rb +4 -10
  41. data/lib/cocoapods/sandbox/path_list.rb +20 -9
  42. data/lib/cocoapods/sources_manager.rb +7 -10
  43. data/lib/cocoapods/target/aggregate_target.rb +20 -0
  44. data/lib/cocoapods/target/pod_target.rb +37 -7
  45. data/lib/cocoapods/user_interface/error_report.rb +7 -0
  46. data/lib/cocoapods/user_interface/inspector_reporter.rb +109 -0
  47. data/lib/cocoapods/user_interface.rb +7 -5
  48. data/lib/cocoapods/validator.rb +59 -11
  49. metadata +112 -83
  50. data/lib/cocoapods/command/inter_process_communication.rb +0 -177
  51. data/lib/cocoapods/installer/file_references_installer.rb +0 -310
  52. data/lib/cocoapods/installer/migrator.rb +0 -86
  53. data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +0 -191
  54. data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +0 -368
  55. data/lib/cocoapods/installer/target_installer.rb +0 -210
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 089fd601f4b77b13ce571371163234e74681fc6a
4
- data.tar.gz: 2ba921d00ae8b35bad6446d8d86bc4437766dcec
3
+ metadata.gz: 80f900c52d47f767b6afb4da5f9836e97568a0a4
4
+ data.tar.gz: c195495f686289715d00afac16999592dc6798aa
5
5
  SHA512:
6
- metadata.gz: dc073ce49be6c7c75b2e80f4eb888bb68d623f9041721129877a1a074eafa231e984f3ff93b25756784cf43e0bb741a1e7405ceb7d177799f14b920d1c64afcc
7
- data.tar.gz: b21370ae05fa41e645bcf4d7ce27ee6e2b13507098ce5b4540f54cdd2b042ff26981cea047169379d911eac0835a72575842195ff5acfd0c7699142fdbf235ff
6
+ metadata.gz: 88d6604e4bf3ccc02c3c123f585e345e0adccffccd72a4e02b3f290af4eb6d8ba91c19b11f6cfd642ea764246bd51ab47d99b7219ddaf9fcf55db65ce7e67986
7
+ data.tar.gz: 6ffb3ade512e2ae0c5c34344c6fb85b97ac007ebdf37dbf865d5add39e709c0aac4c73314a70ae9e50d51ccf56a8feb1f8f628bd12f3d729e3d0de42d73daa64
data/CHANGELOG.md CHANGED
@@ -4,6 +4,335 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
4
4
 
5
5
  To install release candidates run `[sudo] gem install cocoapods --pre`
6
6
 
7
+ ## 1.1.0 (2016-10-19)
8
+
9
+ ##### Enhancements
10
+
11
+ * Use host target for frameworks of XPC services.
12
+ [Ingmar Stein](https://github.com/IngmarStein)
13
+ [#6029](https://github.com/CocoaPods/CocoaPods/pull/6029)
14
+
15
+ * Use Swift 3.0 by default during validation.
16
+ [Danielle Tomlinson](https://github.com/dantoml)
17
+ [#6042](https://github.com/CocoaPods/CocoaPods/pull/6042)
18
+
19
+ * Exit with non-zero exit status if pod repo update fails
20
+ [Uku Loskit](https://github.com/UkuLoskit)
21
+ [#6037](https://github.com/CocoaPods/CocoaPods/issues/6037)
22
+
23
+ * The validator has an API for accessing which version of Swift was used.
24
+ [Orta Therox](https://github.com/orta)
25
+ [#6049](https://github.com/CocoaPods/CocoaPods/pull/6049)
26
+
27
+
28
+ ##### Bug Fixes
29
+
30
+ * None.
31
+
32
+
33
+ ## 1.1.0.rc.3 (2016-10-11)
34
+
35
+ ##### Enhancements
36
+
37
+ * Cache result of inhibit_warnings and include_in_build_config to speed up pod install.
38
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
39
+ [#5934](https://github.com/CocoaPods/CocoaPods/pull/5934)
40
+
41
+ * Tell users about the .swift-version file on validation failures.
42
+ [Danielle Tomlinson](https://github.com/dantoml)
43
+ [#5951](https://github.com/CocoaPods/CocoaPods/pull/5951)
44
+
45
+ * Improve performance of PathList.read_file_system
46
+ [Heath Borders](https://github.com/hborders)
47
+ [#5890](https://github.com/CocoaPods/CocoaPods/issues/5890)
48
+
49
+ * Cache result of uses_swift and should_build to speed up pod install.
50
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
51
+ [#5837](https://github.com/CocoaPods/CocoaPods/pull/5837)
52
+
53
+ * Remove uses of `cd` in generated scripts
54
+ [Ben Asher](https://github.com/benasher44)
55
+ [#5959](https://github.com/CocoaPods/CocoaPods/pull/5959)
56
+
57
+ * Error with helpful message when integrating a pod into targets that have mismatched Swift versions.
58
+ [Ben Asher](https://github.com/benasher44)
59
+ [#5984](https://github.com/CocoaPods/CocoaPods/pull/5984)
60
+
61
+ * Allow users to share pods between Objective-C and Swift targets.
62
+ [Danielle Tomlinson](https://github.com/dantoml)
63
+ [#5984](https://github.com/CocoaPods/CocoaPods/pull/5984)
64
+
65
+ * Allow setting the linting Swift version via `--swift-version=VERSION`
66
+ [Danielle Tomlinson](https://github.com/dantoml)
67
+ [#5989](https://github.com/CocoaPods/CocoaPods/pull/5989)
68
+
69
+ * Greenify pod install success message
70
+ [Stephen Hayes](https://github.com/schayes04)
71
+ [#5713](https://github.com/CocoaPods/CocoaPods/issues/5713)
72
+
73
+ * Update EMBEDDED_CONTENT_CONTAINS_SWIFT flag behaviour based on xcode version.
74
+ [codymoorhouse](https://github.com/codymoorhouse)
75
+ [#5732](https://github.com/CocoaPods/CocoaPods/issues/5732)
76
+
77
+ ##### Bug Fixes
78
+
79
+ * Remove special handling for messages apps
80
+ [Ben Asher](https://github.com/benasher44)
81
+ [#5860](https://github.com/CocoaPods/CocoaPods/issues/5860)
82
+
83
+ * Ensure messages apps have an embed frameworks build phase
84
+ [Ben Asher](https://github.com/benasher44)
85
+ [#5860](https://github.com/CocoaPods/CocoaPods/issues/5860)
86
+
87
+ * Fix linting of private pods when using libraries.
88
+ [Stefan Pühringer](https://github.com/b-ray)
89
+ [#5891](https://github.com/CocoaPods/CocoaPods/issues/5891)
90
+
91
+
92
+ ## 1.1.0.rc.2 (2016-09-13)
93
+
94
+ ##### Enhancements
95
+
96
+ * Use the SWIFT_VERSION when linting pods. To lint with Swift 3.0
97
+ add a Swift Version file. `echo "3.0" >> .swift-version`.
98
+ [Danielle Tomlinson](https://github.com/dantoml)
99
+ [#5841](https://github.com/CocoaPods/CocoaPods/pull/5841)
100
+
101
+ ##### Bug Fixes
102
+
103
+ * Correctly pass Pod:VERSION in `pod lib create`.
104
+ [Danielle Tomlinson](https://github.com/dantoml)
105
+ [#5840](https://github.com/CocoaPods/CocoaPods/issues/5840)
106
+
107
+
108
+ ## 1.1.0.rc.1 (2016-09-10)
109
+
110
+ ##### Enhancements
111
+
112
+ *
113
+
114
+ ##### Bug Fixes
115
+
116
+ * Wrap generated import headers with __OBJC__ to fix C only pods.
117
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
118
+ [#5291](https://github.com/CocoaPods/CocoaPods/issues/5291)
119
+
120
+ * Prevent crash when generating acknowledgements when license type is not specified.
121
+ [Marcelo Fabri](https://github.com/marcelofabri)
122
+ [#5826](https://github.com/CocoaPods/CocoaPods/issues/5826)
123
+
124
+ * Pass full path to App.xcworkspace for spec validation, and use `git -C` for `pod repo push` git ops.
125
+ [Ben Asher](https://github.com/benasher44)
126
+ [#5805](https://github.com/CocoaPods/CocoaPods/issues/5805)
127
+
128
+
129
+ ## 1.1.0.beta.2 (2016-09-03)
130
+
131
+ ##### Enhancements
132
+
133
+ * Remove references to the pre-1.0 Migrator.
134
+ [Danielle Tomlinson](https://github.com/dantoml)
135
+ [#5635](https://github.com/CocoaPods/CocoaPods/pull/5635)
136
+
137
+ * Improve performance of dependency resolution.
138
+ [yanzhiwei147](https://github.com/yanzhiwei147)
139
+ [#5510](https://github.com/CocoaPods/CocoaPods/pull/5510)
140
+
141
+ * Add support for building Messages applications.
142
+ [Ben Asher](https://github.com/benasher44)
143
+ [#5726](https://github.com/CocoaPods/CocoaPods/pull/5726)
144
+
145
+ * Improved messaging when missing host targets for embedded targets.
146
+ Improved support for framework-only projects.
147
+ [Ben Asher](https://github.com/benasher44)
148
+ [#5733](https://github.com/CocoaPods/CocoaPods/pull/5733)
149
+
150
+ * Set ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES when appropriate.
151
+ [Ben Asher](https://github.com/benasher44)
152
+ [#5732](https://github.com/CocoaPods/CocoaPods/pull/5732)
153
+
154
+ * Verify that embedded target platform and swift version matches the host.
155
+ [Ben Asher](https://github.com/benasher44)
156
+ [#5747](https://github.com/CocoaPods/CocoaPods/pull/5747)
157
+
158
+ * Pass the version of CocoaPods to `pod lib create`'s configure script.
159
+ [orta](https://github.com/orta)
160
+ [#5787](https://github.com/CocoaPods/CocoaPods/pull/5787)
161
+
162
+ * Improve host target detection for embedded targets
163
+ in sub-projects.
164
+ [Ben Asher](https://github.com/benasher44)
165
+ [#5622](https://github.com/CocoaPods/CocoaPods/issues/5622)
166
+
167
+ ##### Bug Fixes
168
+
169
+ * Hash scope suffixes if they are over 50 characters to prevent file paths from being too long.
170
+ [Danielle Tomlinson](https://github.com/dantoml)
171
+ [#5491](https://github.com/CocoaPods/CocoaPods/issues/5491)
172
+
173
+ * Fix codesigning identity on watchOS and tvOS targets.
174
+ [Danielle Tomlinson](https://github.com/dantoml)
175
+ [#5686](https://github.com/CocoaPods/CocoaPods/issues/5686)
176
+
177
+ * Fix SWIFT_VERSION not being read when only defined at the project level.
178
+ [Ben Asher](https://github.com/benasher44)
179
+ [#5700](https://github.com/CocoaPods/CocoaPods/issues/5700) and [#5737](https://github.com/CocoaPods/CocoaPods/issues/5737)
180
+
181
+ * Fix analyzer checking the compatibility of an embedded target with a host that has not been added the Podfile.
182
+ [Ben Asher](https://github.com/benasher44)
183
+ [#5783](https://github.com/CocoaPods/CocoaPods/issues/5783)
184
+
185
+ ## 1.1.0.beta.1 (2016-07-11)
186
+
187
+ ##### Enhancements
188
+
189
+ * Move Pods Project generation to an `Xcode` Namespace.
190
+ [Daniel Tomlinson](https://github.com/dantoml)
191
+ [#5480](https://github.com/CocoaPods/CocoaPods/pull/5480)
192
+
193
+ * Add the ability to inhibit swift warnings.
194
+ [Peter Ryszkiewicz](https://github.com/pRizz)
195
+ [#5414](https://github.com/CocoaPods/CocoaPods/pull/5414)
196
+
197
+ * Use `git ls-remote` to skip full clones for branch dependencies.
198
+ [Juan Civile](https://github.com/champo)
199
+ [#5376](https://github.com/CocoaPods/CocoaPods/issues/5376)
200
+
201
+ * [repo/push] --use-json to convert podspecs to JSON format when pushing.
202
+ [Mark Schall](https://github.com/maschall)
203
+ [#5568](https://github.com/CocoaPods/CocoaPods/pull/5568)
204
+
205
+ * Set 'Allow app extension API only' for Messages extensions.
206
+ [Boris Bügling](https://github.com/neonichu)
207
+ [#5558](https://github.com/CocoaPods/CocoaPods/issues/5558)
208
+
209
+ * Accept `pod repo push` with URL instead of only repo name.
210
+ [Mark Schall](https://github.com/maschall)
211
+ [#5572](https://github.com/CocoaPods/CocoaPods/pull/5572)
212
+
213
+ * [Installer] Set the SWIFT_VERSION for CocoaPods generated targets.
214
+ [Danielle Tomlinson](https://github.com/DanToml)
215
+ [#5540](https://github.com/CocoaPods/CocoaPods/pull/5540)
216
+
217
+ * Print message when skipping user project integration.
218
+ [Danielle Tomlinson](https://github.com/dantoml)
219
+ [#5517](https://github.com/CocoaPods/CocoaPods/issues/5517)
220
+
221
+ * Show GitHub Issues that could be related to exceptions.
222
+ [Orta Therox](https://github.com/orta)
223
+ [#4817](https://github.com/CocoaPods/CocoaPods/issues/4817)
224
+
225
+ * Improve handling of app extensions, watch os 1 extensions
226
+ and framework targets.
227
+ [Ben Asher](https://github.com/benasher44)
228
+ [#4203](https://github.com/CocoaPods/CocoaPods/issues/4203)
229
+
230
+ * Add a license type to generated acknowledgements file in plist.
231
+ [Naoto Kaneko](https://github.com/naoty)
232
+ [#5436](https://github.com/CocoaPods/CocoaPods/pull/5436)
233
+
234
+ ##### Bug Fixes
235
+
236
+ * Fix local pod platform conflict error message.
237
+ [Muhammed Yavuz Nuzumlalı](https://github.com/manuyavuz)
238
+ [#5052](https://github.com/CocoaPods/CocoaPods/issues/5052)
239
+
240
+ * Avoid use of `activesupport` version 5 to stay compatible with macOS system
241
+ Ruby.
242
+ [Boris Bügling](https://github.com/neonichu)
243
+ [#5602](https://github.com/CocoaPods/CocoaPods/issues/5602)
244
+
245
+ * Fix installing pods with `use_frameworks` when deduplication is disabled.
246
+ [Samuel Giddins](https://github.com/segiddins)
247
+ [#5481](https://github.com/CocoaPods/CocoaPods/issues/5481)
248
+
249
+ * Running `pod setup --silent` will now properly silence git output while
250
+ updating the repository.
251
+ [Samuel Giddins](https://github.com/segiddins)
252
+
253
+ * Fix linting pods that depend upon `XCTest`.
254
+ [Samuel Giddins](https://github.com/segiddins)
255
+ [#5321](https://github.com/CocoaPods/CocoaPods/issues/5321)
256
+
257
+ * Use `require` instead of `autoload` to solve an issue with loading
258
+ `fourflusher`.
259
+ [Boris Bügling](https://github.com/neonichu)
260
+ [#5445](https://github.com/CocoaPods/CocoaPods/issues/5445)
261
+
262
+ * Resolve cyclic dependencies when creating pod targets.
263
+ [Juan Civile](https://github.com/champo)
264
+ [#5362](https://github.com/CocoaPods/CocoaPods/issues/5362)
265
+
266
+ * Fix embedding frameworks in UI Testing bundles.
267
+ [Daniel Tomlinson](https://github.com/dantoml)
268
+ [#5250](https://github.com/CocoaPods/CocoaPods/issues/5250)
269
+
270
+ * Ensure attempting to print a path in the error report doesn't itself error.
271
+ [Samuel Giddins](https://github.com/)
272
+ [#5541](https://github.com/CocoaPods/CocoaPods/issues/5541)
273
+
274
+ * Fix linting with Xcode 8.
275
+ [Boris Bügling](https://github.com/neonichu)
276
+ [#5529](https://github.com/CocoaPods/CocoaPods/issues/5529)
277
+
278
+ * Fix linting with Xcode 8 by disabling it entirely.
279
+ [Boris Bügling](https://github.com/neonichu)
280
+ [#5528](https://github.com/CocoaPods/CocoaPods/issues/5528)
281
+
282
+ * Error during install when there are duplicate library names.
283
+ [Daniel Tomlinson](https://github.com/dantoml)
284
+ [#4014](https://github.com/CocoaPods/CocoaPods/issues/4014)
285
+
286
+ * Make the `Check Pods Manifest.lock` script write errors to STDERR and improve
287
+ POSIX shell compatibility.
288
+ [Simon Warta](https://github.com/webmaster128)
289
+ [#5595](https://github.com/CocoaPods/CocoaPods/pull/5595)
290
+
291
+
292
+ ## 1.0.1 (2016-06-02)
293
+
294
+ ##### Enhancements
295
+
296
+ * None.
297
+
298
+ ##### Bug Fixes
299
+
300
+ * Symlink the header folders in the framework bundle's root directory
301
+ by a new shell script build phase if `header_mappings_dir` is used
302
+ with frameworks.
303
+ [Marius Rackwitz](https://github.com/mrackwitz)
304
+ [#5313](https://github.com/CocoaPods/CocoaPods/issues/5313)
305
+
306
+ * Removed emojis in Build Phases names — as it seems that some third party tools have trouble with them.
307
+ [Olivier Halligon](https://github.com/AliSoftware)
308
+ [#5382](https://github.com/CocoaPods/CocoaPods/pull/5382)
309
+
310
+ * Ensure `Set` is defined before using it.
311
+ [Samuel Giddins](https://github.com/segiddins)
312
+ [#5287](https://github.com/CocoaPods/CocoaPods/issues/5287)
313
+
314
+ * Add --target-device to ibtool invocation for XIBs
315
+ [Juan Civile](https://github.com/champo)
316
+ [#5282](https://github.com/CocoaPods/CocoaPods/issues/5282)
317
+
318
+ * Fix error when executables cannot be found.
319
+ [Jan Berkel](https://github.com/jberkel)
320
+ [#5319](https://github.com/CocoaPods/CocoaPods/pull/5319)
321
+
322
+ * Avoid removing all files when root directory contains unicode characters.
323
+ [Marc Boquet](https://github.com/marcboquet)
324
+ [#5294](https://github.com/CocoaPods/CocoaPods/issues/5294)
325
+
326
+ * Guarding from crash if pod lib create has a + character in the name.
327
+ [William Entriken](https://github.com/fulldecent)
328
+ [CocoaPods/pod-template#69](https://github.com/CocoaPods/pod-template/issues/69)
329
+
330
+ * Use target product types to determine whether a target is a test target when
331
+ running `pod init`.
332
+ [Samuel Giddins](https://github.com/segiddins)
333
+ [#5378](https://github.com/CocoaPods/CocoaPods/issues/5378)
334
+
335
+
7
336
  ## 1.0.0 (2016-05-10)
8
337
 
9
338
  ##### Enhancements
@@ -56,14 +56,14 @@ module Pod
56
56
  podfile = ''
57
57
  podfile << "project '#{@project_path}'\n\n" if @project_path
58
58
  podfile << <<-PLATFORM.strip_heredoc
59
- # Uncomment this line to define a global platform for your project
59
+ # Uncomment the next line to define a global platform for your project
60
60
  # platform :ios, '9.0'
61
61
  PLATFORM
62
62
 
63
63
  # Split out the targets into app and test targets
64
64
  test_targets, app_targets = project.native_targets.
65
65
  sort_by { |t| t.name.downcase }.
66
- partition { |t| t.name =~ /test/i }
66
+ partition(&:test_target_type?)
67
67
 
68
68
  app_targets.each do |app_target|
69
69
  test_targets_for_app = test_targets.select do |target|
@@ -76,7 +76,7 @@ module Pod
76
76
  end
77
77
 
78
78
  # @param [[Xcodeproj::PBXTarget]] targets
79
- # An array which always has a target as it's first item
79
+ # An array which always has a target as its first item
80
80
  # and may optionally contain related test targets
81
81
  #
82
82
  # @return [String] the text for the target module
@@ -86,13 +86,13 @@ module Pod
86
86
 
87
87
  target_module << if app.resolved_build_setting('SWIFT_OPTIMIZATION_LEVEL').values.any?
88
88
  <<-RUBY
89
- # Comment this line if you're not using Swift and don't want to use dynamic frameworks
89
+ # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
90
90
  use_frameworks!
91
91
 
92
92
  RUBY
93
93
  else
94
94
  <<-RUBY
95
- # Uncomment this line if you're using Swift or would like to use dynamic frameworks
95
+ # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
96
96
  # use_frameworks!
97
97
 
98
98
  RUBY
@@ -111,7 +111,7 @@ module Pod
111
111
  end
112
112
 
113
113
  # @param [[Xcodeproj::PBXTarget]] targets
114
- # An array which always has a target as it's first item
114
+ # An array which always has a target as its first item
115
115
  # and may optionally contain a second target as its test target
116
116
  #
117
117
  # @return [String] the text for the target module
@@ -0,0 +1,40 @@
1
+ module Pod
2
+ class Command
3
+ class IPC < Command
4
+ class List < IPC
5
+ self.summary = 'Lists the specifications known to CocoaPods'
6
+ self.description = <<-DESC
7
+ Prints to STDOUT a YAML dictionary where the keys are the name of the
8
+ specifications and each corresponding value is a dictionary with
9
+ the following keys:
10
+ - defined_in_file
11
+ - version
12
+ - authors
13
+ - summary
14
+ - description
15
+ - platforms
16
+ DESC
17
+
18
+ def run
19
+ require 'yaml'
20
+ sets = config.sources_manager.aggregate.all_sets
21
+ result = {}
22
+ sets.each do |set|
23
+ begin
24
+ spec = set.specification
25
+ result[spec.name] = {
26
+ 'authors' => spec.authors.keys,
27
+ 'summary' => spec.summary,
28
+ 'description' => spec.description,
29
+ 'platforms' => spec.available_platforms.map { |p| p.name.to_s },
30
+ }
31
+ rescue DSLError
32
+ next
33
+ end
34
+ end
35
+ output_pipe.puts result.to_yaml
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ module Pod
2
+ class Command
3
+ class IPC < Command
4
+ class Podfile < IPC
5
+ include ProjectDirectory
6
+
7
+ self.summary = 'Converts a Podfile to YAML'
8
+ self.description = 'Converts a Podfile to YAML and prints it to STDOUT.'
9
+ self.arguments = [
10
+ CLAide::Argument.new('PATH', true),
11
+ ]
12
+
13
+ def initialize(argv)
14
+ @path = argv.shift_argument
15
+ super
16
+ end
17
+
18
+ def validate!
19
+ super
20
+ help! 'A Podfile path is required.' unless @path
21
+ end
22
+
23
+ def run
24
+ require 'yaml'
25
+ podfile = Pod::Podfile.from_file(@path)
26
+ output_pipe.puts podfile.to_yaml
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,51 @@
1
+ module Pod
2
+ class Command
3
+ class IPC < Command
4
+ class Repl < IPC
5
+ include ProjectDirectory
6
+
7
+ END_OF_OUTPUT_SIGNAL = "\n\r".freeze
8
+
9
+ self.summary = 'The repl listens to commands on standard input'
10
+ self.description = <<-DESC
11
+ The repl listens to commands on standard input and prints their
12
+ result to standard output.
13
+ It accepts all the other ipc subcommands. The repl will signal the
14
+ end of output with the the ASCII CR+LF `\\n\\r`.
15
+ DESC
16
+
17
+ def run
18
+ print_version
19
+ signal_end_of_output
20
+ listen
21
+ end
22
+
23
+ def print_version
24
+ output_pipe.puts "version: '#{Pod::VERSION}'"
25
+ end
26
+
27
+ def signal_end_of_output
28
+ output_pipe.puts(END_OF_OUTPUT_SIGNAL)
29
+ STDOUT.flush
30
+ end
31
+
32
+ def listen
33
+ while repl_command = STDIN.gets
34
+ execute_repl_command(repl_command)
35
+ end
36
+ end
37
+
38
+ def execute_repl_command(repl_command)
39
+ unless repl_command == '\n'
40
+ repl_commands = repl_command.split
41
+ subcommand = repl_commands.shift.capitalize
42
+ arguments = repl_commands
43
+ subcommand_class = Pod::Command::IPC.const_get(subcommand)
44
+ subcommand_class.new(CLAide::ARGV.new(arguments)).run
45
+ signal_end_of_output
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,29 @@
1
+ module Pod
2
+ class Command
3
+ class IPC < Command
4
+ class Spec < IPC
5
+ self.summary = 'Converts a podspec to JSON'
6
+ self.description = 'Converts a podspec to JSON and prints it to STDOUT.'
7
+ self.arguments = [
8
+ CLAide::Argument.new('PATH', true),
9
+ ]
10
+
11
+ def initialize(argv)
12
+ @path = argv.shift_argument
13
+ super
14
+ end
15
+
16
+ def validate!
17
+ super
18
+ help! 'A specification path is required.' unless @path
19
+ end
20
+
21
+ def run
22
+ require 'json'
23
+ spec = Specification.from_file(@path)
24
+ output_pipe.puts(spec.to_pretty_json)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,24 @@
1
+ module Pod
2
+ class Command
3
+ class IPC < Command
4
+ class UpdateSearchIndex < IPC
5
+ self.summary = 'Updates the search index'
6
+ self.description = <<-DESC
7
+ Updates the search index and prints its path to standard output.
8
+ The search index is a YAML encoded dictionary where the keys
9
+ are the names of the Pods and the values are a dictionary containing
10
+ the following information:
11
+ - version
12
+ - summary
13
+ - description
14
+ - authors
15
+ DESC
16
+
17
+ def run
18
+ config.sources_manager.updated_search_index
19
+ output_pipe.puts(config.sources_manager.search_index_path)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require 'cocoapods/command/ipc/list'
2
+ require 'cocoapods/command/ipc/podfile'
3
+ require 'cocoapods/command/ipc/repl'
4
+ require 'cocoapods/command/ipc/spec'
5
+ require 'cocoapods/command/ipc/update_search_index'
6
+
7
+ module Pod
8
+ class Command
9
+ class IPC < Command
10
+ self.abstract_command = true
11
+ self.summary = 'Inter-process communication'
12
+
13
+ def output_pipe
14
+ STDOUT
15
+ end
16
+ end
17
+ end
18
+ end