cocoapods 1.5.3 → 1.6.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +200 -0
  3. data/lib/cocoapods.rb +0 -1
  4. data/lib/cocoapods/command/init.rb +1 -1
  5. data/lib/cocoapods/command/install.rb +7 -0
  6. data/lib/cocoapods/command/lib/lint.rb +8 -1
  7. data/lib/cocoapods/command/outdated.rb +2 -7
  8. data/lib/cocoapods/command/repo/add.rb +1 -1
  9. data/lib/cocoapods/command/repo/list.rb +1 -1
  10. data/lib/cocoapods/command/repo/push.rb +17 -12
  11. data/lib/cocoapods/command/repo/remove.rb +1 -1
  12. data/lib/cocoapods/command/repo/update.rb +1 -1
  13. data/lib/cocoapods/command/setup.rb +1 -1
  14. data/lib/cocoapods/command/spec/create.rb +39 -39
  15. data/lib/cocoapods/command/spec/lint.rb +8 -1
  16. data/lib/cocoapods/config.rb +13 -2
  17. data/lib/cocoapods/downloader/cache.rb +1 -1
  18. data/lib/cocoapods/executable.rb +2 -2
  19. data/lib/cocoapods/external_sources.rb +7 -4
  20. data/lib/cocoapods/external_sources/abstract_external_source.rb +23 -13
  21. data/lib/cocoapods/gem_version.rb +1 -1
  22. data/lib/cocoapods/generator/acknowledgements/markdown.rb +6 -0
  23. data/lib/cocoapods/generator/acknowledgements/plist.rb +11 -0
  24. data/lib/cocoapods/generator/app_target_helper.rb +102 -16
  25. data/lib/cocoapods/generator/copy_resources_script.rb +6 -0
  26. data/lib/cocoapods/generator/dummy_source.rb +14 -5
  27. data/lib/cocoapods/generator/embed_frameworks_script.rb +13 -2
  28. data/lib/cocoapods/generator/header.rb +1 -1
  29. data/lib/cocoapods/generator/info_plist_file.rb +12 -4
  30. data/lib/cocoapods/generator/prefix_header.rb +2 -2
  31. data/lib/cocoapods/hooks_manager.rb +28 -17
  32. data/lib/cocoapods/installer.rb +103 -42
  33. data/lib/cocoapods/installer/analyzer.rb +362 -277
  34. data/lib/cocoapods/installer/analyzer/analysis_result.rb +52 -22
  35. data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +9 -6
  36. data/lib/cocoapods/installer/analyzer/pod_variant.rb +4 -5
  37. data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +3 -14
  38. data/lib/cocoapods/installer/analyzer/specs_state.rb +28 -4
  39. data/lib/cocoapods/installer/analyzer/target_inspection_result.rb +24 -16
  40. data/lib/cocoapods/installer/analyzer/target_inspector.rb +17 -11
  41. data/lib/cocoapods/installer/pod_source_installer.rb +31 -43
  42. data/lib/cocoapods/installer/post_install_hooks_context.rb +71 -46
  43. data/lib/cocoapods/installer/pre_install_hooks_context.rb +22 -13
  44. data/lib/cocoapods/installer/source_provider_hooks_context.rb +3 -1
  45. data/lib/cocoapods/installer/user_project_integrator.rb +0 -2
  46. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +38 -28
  47. data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +44 -11
  48. data/lib/cocoapods/installer/xcode/pods_project_generator.rb +129 -119
  49. data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +25 -16
  50. data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +95 -0
  51. data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +12 -45
  52. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +277 -169
  53. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +31 -24
  54. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +93 -0
  55. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +60 -69
  56. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb +72 -0
  57. data/lib/cocoapods/installer/xcode/target_validator.rb +15 -9
  58. data/lib/cocoapods/project.rb +14 -14
  59. data/lib/cocoapods/resolver.rb +38 -50
  60. data/lib/cocoapods/sandbox.rb +22 -38
  61. data/lib/cocoapods/sandbox/file_accessor.rb +11 -6
  62. data/lib/cocoapods/sandbox/headers_store.rb +9 -8
  63. data/lib/cocoapods/sandbox/path_list.rb +5 -8
  64. data/lib/cocoapods/sources_manager.rb +1 -1
  65. data/lib/cocoapods/target.rb +92 -37
  66. data/lib/cocoapods/target/aggregate_target.rb +140 -84
  67. data/lib/cocoapods/target/build_settings.rb +1076 -0
  68. data/lib/cocoapods/target/pod_target.rb +198 -294
  69. data/lib/cocoapods/user_interface.rb +5 -0
  70. data/lib/cocoapods/validator.rb +133 -41
  71. metadata +18 -18
  72. data/lib/cocoapods/generator/xcconfig.rb +0 -13
  73. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +0 -260
  74. data/lib/cocoapods/generator/xcconfig/pod_xcconfig.rb +0 -87
  75. data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +0 -558
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b21aa16719488a078778544cfa272f8f000c0c5fa4c4f3ae27694f1a440e01c9
4
- data.tar.gz: 2cc429dd3b839ac42b19f574a1eebff1a112d2036fa93eb78d1a541450bb5bf6
3
+ metadata.gz: eea82a7d50fbc9129a369914b81e1a7722de54530e1486cc14735c4984694c6a
4
+ data.tar.gz: 1c5e1381e2d5f513c380a817ba52401eb1480e5a42bf747c57d9042c651d1b0f
5
5
  SHA512:
6
- metadata.gz: fa3eeada9bda4ad9b3605272fb2cd742a83b2997405061a336787d938cedeeff7cd91c5832410a07dfbf79869ab342dd797e8fb16e5bb07f1a4e6e850c31d474
7
- data.tar.gz: 8aae65be343ff7df51de6c83d613e0b56662f7fdd99e6944d50729735f916b1f31df9dddb64c455e5d15b16c77c32d62ef3d880a77511a0850f9718269d9a2d4
6
+ metadata.gz: e5bb218d53e23686ffae0612f20778d6050e52a135b49a1b35c4a3922d497c5852e442a6e2df71182bb844853b3df5215c8bf9c1acc9ebf24c2078398f0037ca
7
+ data.tar.gz: 70d05ff41270cec4e2ac020c1f8c0918ae5467694fe0bcb13b230f88170fc74239e0fa89d8067277fb80b49512135b79239556de2f0f20e427cde6feb1b315a9
@@ -4,6 +4,206 @@ 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.6.0.beta.1 (2018-08-16)
8
+
9
+ ##### Enhancements
10
+
11
+ * Every test spec will have its own xctest bundle.
12
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
13
+ [Jenn Kaplan](https://github.com/jkap)
14
+ [#7908](https://github.com/CocoaPods/CocoaPods/pull/7908)
15
+
16
+ * Generate a separate app host per pod.
17
+ [Samuel Giddins](https://github.com/segiddins)
18
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
19
+ [#8005](https://github.com/CocoaPods/CocoaPods/pull/8005)
20
+
21
+ * Add default launch screen storyboard to test app hosts.
22
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
23
+ [#7971](https://github.com/CocoaPods/CocoaPods/pull/7971)
24
+
25
+ * Always display downloader error message.
26
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
27
+ [#7625](https://github.com/CocoaPods/CocoaPods/issues/7625)
28
+
29
+ * Warn instead of error when linting if `public_header_files` or
30
+ `private_header_files` do not match any files.
31
+ [Eric Amorde](https://github.com/amorde)
32
+ [#7427](https://github.com/CocoaPods/CocoaPods/issues/7427)
33
+
34
+ * Add `--platforms` parameter to `pod spec lint` and `pod lib lint` to specify
35
+ which platforms to lint.
36
+ [Eric Amorde](https://github.com/amorde)
37
+ [#7783](https://github.com/CocoaPods/CocoaPods/issues/7783)
38
+
39
+ * Warn if the `git://` protocol is used as the source of a pod.
40
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
41
+ [#7705](https://github.com/CocoaPods/CocoaPods/issues/7705)
42
+
43
+ * Remove all xcode project state from target objects,
44
+ improving project generation performance.
45
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
46
+ [#7610](https://github.com/CocoaPods/CocoaPods/pull/7610)
47
+
48
+ * Improve performance of Pods project generation by skipping native targets
49
+ for which dependent targets have already been added.
50
+ [Jacek Suliga](https://github.com/jmkk)
51
+
52
+ * Refactor build settings generation to perform much better on large projects.
53
+ [Samuel Giddins](https://github.com/segiddins)
54
+
55
+ * Make sure the temporary directory used to download a pod is removed,
56
+ even if an error is raised.
57
+ [augustorsouza](https://github.com/augustorsouza)
58
+
59
+ * Avoid unlocking sources on every `pod install` when there are no
60
+ plugin post-install hooks for performance reasons.
61
+ [Samuel Giddins](https://github.com/segiddins)
62
+
63
+ * Change shell script relative paths to use `${PODS_ROOT}` instead of
64
+ `${SRCROOT}/Pods`.
65
+ [Whirlwind](https://github.com/Whirlwind)
66
+ [#7878](https://github.com/CocoaPods/CocoaPods/pull/7878)
67
+
68
+ * Set the path of the Pods group in the user project.
69
+ [Whirlwind](https://github.com/Whirlwind)
70
+ [#7886](https://github.com/CocoaPods/CocoaPods/pull/7886)
71
+ [#6194](https://github.com/CocoaPods/CocoaPods/issues/6194)
72
+
73
+ * Add a `--deployment` flag to `pod install` that errors if there are any
74
+ changes to the Podfile or Lockfile.
75
+ [Samuel Giddins](https://github.com/segiddins)
76
+
77
+ * Add `--use-modular-headers` flag to the `pod spec lint`, `pod lib lint`,
78
+ and `pod repo push` commands.
79
+ [Eric Amorde](https://github.com/amorde)
80
+ [#7683](https://github.com/CocoaPods/CocoaPods/issues/7683)
81
+
82
+ ##### Bug Fixes
83
+
84
+ * Scope embedded pods to their host targets by their configuration.
85
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
86
+ [#8011](https://github.com/CocoaPods/CocoaPods/issues/8011)
87
+
88
+ * Set the `SWIFT_VERSION` on resource bundle targets that contain compiled
89
+ sources and use Swift.
90
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
91
+ [#7950](https://github.com/CocoaPods/CocoaPods/issues/7950)
92
+
93
+ * Do not ignore `--no-overwrite` parameter if a commit message is specified.
94
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
95
+ [#7926](https://github.com/CocoaPods/CocoaPods/issues/7926)
96
+
97
+ * Generate `-ObjC` in `OTHER_LDFLAGS` for apps with static frameworks.
98
+ [Paul Beusterien](https://github.com/paulb777)
99
+ [#7946](https://github.com/CocoaPods/CocoaPods/pull/7946)
100
+
101
+ * Do not display that a source was changed if it uses different casing.
102
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
103
+ [#7883](https://github.com/CocoaPods/CocoaPods/pull/7883)
104
+
105
+ * Set `CURRENT_PROJECT_VERSION` for generated app host targets.
106
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
107
+ [#7825](https://github.com/CocoaPods/CocoaPods/pull/7825)
108
+
109
+ * Properly follow symlinks within macOS universal frameworks.
110
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
111
+ [#7587](https://github.com/CocoaPods/CocoaPods/issues/7587)
112
+
113
+ * Validator adds a Swift file if any of the pod targets use Swift.
114
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
115
+ [#7738](https://github.com/CocoaPods/CocoaPods/issues/7738)
116
+
117
+ * Fix `INFOPLIST_FILE` being overridden when set in a podspec's `pod_target_xcconfig`.
118
+ [Eric Amorde](https://github.com/amorde)
119
+ [#7530](https://github.com/CocoaPods/CocoaPods/issues/7530)
120
+
121
+ * Raise an error if user target `SWIFT_VERSION` is missing.
122
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
123
+ [#7770](https://github.com/CocoaPods/CocoaPods/issues/7770)
124
+
125
+ * Fix the umbrella header import path when `header_dir` is specified in the
126
+ podspec and building a static library with modular headers enabled.
127
+ [chuganzy](https://github.com/chuganzy)
128
+ [#7724](https://github.com/CocoaPods/CocoaPods/pull/7724)
129
+
130
+ * Do not symlink headers that belong to test specs.
131
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
132
+ [#7762](https://github.com/CocoaPods/CocoaPods/pull/7762)
133
+
134
+ * Do not build pod target if it only contains script phases.
135
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
136
+ [#7746](https://github.com/CocoaPods/CocoaPods/issues/7746)
137
+
138
+ * Do not try to integrate uncreated test native targets.
139
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
140
+ [#7394](https://github.com/CocoaPods/CocoaPods/issues/7394)
141
+
142
+ * Attempt to parse `SWIFT_VERSION` from xcconfig during target inspection.
143
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
144
+ [#7731](https://github.com/CocoaPods/CocoaPods/issues/7731)
145
+
146
+ * Do not crash when creating build settings for a missing user build configuration.
147
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
148
+ [#7698](https://github.com/CocoaPods/CocoaPods/pull/7698)
149
+
150
+ * Do not overwrite App host info plist when using multiple test specs.
151
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
152
+ [#7695](https://github.com/CocoaPods/CocoaPods/pull/7695)
153
+
154
+ * Do not include test dependencies' input and output paths.
155
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
156
+ [#7688](https://github.com/CocoaPods/CocoaPods/pull/7688)
157
+
158
+ * Skip test file accessors for `uses_swift?` and `should_build?` methods.
159
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
160
+ [#7671](https://github.com/CocoaPods/CocoaPods/pull/7671)
161
+
162
+ * When integrating a vendored framework while building pods as static
163
+ libraries, public headers will be found via `FRAMEWORK_SEARCH_PATHS`
164
+ instead of via the sandbox headers store.
165
+ [Samuel Giddins](https://github.com/segiddins)
166
+
167
+ * Improve performance of grouping pods by configuration.
168
+ [Samuel Giddins](https://github.com/segiddins)
169
+
170
+ * Stop linking frameworks to static libraries to avoid warnings with the new build system.
171
+ [Samuel Giddins](https://github.com/segiddins)
172
+ [#7570](https://github.com/CocoaPods/CocoaPods/pull/7570)
173
+
174
+ * Allow `EXPANDED_CODE_SIGN_IDENTITY` to be unset.
175
+ [Keith Smiley](https://github.com/keith)
176
+ [#7708](https://github.com/CocoaPods/CocoaPods/issues/7708)
177
+
178
+ * Running `pod install` with static library modules no longer causes pods to
179
+ be recompiled.
180
+ [Samuel Giddins](https://github.com/segiddins)
181
+
182
+ * A pod built as a static library linked into multiple targets will only build
183
+ as a module when all of the targets it is linked into have opted into it.
184
+ [Samuel Giddins](https://github.com/segiddins)
185
+
186
+ * Use `CP_HOME_DIR` as the base for all default directories.
187
+ [mcfedr](https://github.com/mcfedr)
188
+ [#7917](https://github.com/CocoaPods/CocoaPods/pull/7917)
189
+
190
+ * Exclude 32-bit architectures from Pod targets when the deployment target is
191
+ iOS 11.0 or higher.
192
+ [Eric Amorde](https://github.com/amorde)
193
+ [#7148](https://github.com/CocoaPods/CocoaPods/issues/7148)
194
+
195
+ * Fail gracefully when the analyzer has dependencies to fetch, but has been
196
+ told not to fetch them.
197
+ [Samuel Giddins](https://github.com/segiddins)
198
+
199
+ * Don't generate framework or resource scripts if they will not be used.
200
+ [Eric Amorde](https://github.com/amorde)
201
+
202
+ * Fix a crash when loading the `macho` gem in certain environments.
203
+ [Eric Amorde](https://github.com/amorde)
204
+ [#7867](https://github.com/CocoaPods/CocoaPods/issues/7867)
205
+
206
+
7
207
  ## 1.5.3 (2018-05-25)
8
208
 
9
209
  ##### Enhancements
@@ -66,7 +66,6 @@ module Pod
66
66
  autoload :ModuleMap, 'cocoapods/generator/module_map'
67
67
  autoload :PrefixHeader, 'cocoapods/generator/prefix_header'
68
68
  autoload :UmbrellaHeader, 'cocoapods/generator/umbrella_header'
69
- autoload :XCConfig, 'cocoapods/generator/xcconfig'
70
69
  autoload :AppTargetHelper, 'cocoapods/generator/app_target_helper'
71
70
  end
72
71
 
@@ -14,7 +14,7 @@ module Pod
14
14
  It is possible to specify a list of dependencies which will be used by
15
15
  the template in the `Podfile.default` (normal targets) `Podfile.test`
16
16
  (test targets) files which should be stored in the
17
- `~/.cocoapods/templates` folder.
17
+ `#{Config.instance.templates_dir}` folder.
18
18
  DESC
19
19
  self.arguments = [
20
20
  CLAide::Argument.new('XCODEPROJ', :false),
@@ -30,14 +30,21 @@ module Pod
30
30
  def self.options
31
31
  [
32
32
  ['--repo-update', 'Force running `pod repo update` before install'],
33
+ ['--deployment', 'Disallow any changes to the Podfile or the Podfile.lock during installation'],
33
34
  ].concat(super).reject { |(name, _)| name == '--no-repo-update' }
34
35
  end
35
36
 
37
+ def initialize(argv)
38
+ super
39
+ @deployment = argv.flag?('deployment', false)
40
+ end
41
+
36
42
  def run
37
43
  verify_podfile_exists!
38
44
  installer = installer_for_config
39
45
  installer.repo_update = repo_update?(:default => false)
40
46
  installer.update = false
47
+ installer.deployment = @deployment
41
48
  installer.install!
42
49
  end
43
50
  end
@@ -17,9 +17,13 @@ module Pod
17
17
  ['--no-clean', 'Lint leaves the build directory intact for inspection'],
18
18
  ['--fail-fast', 'Lint stops on the first failing platform or subspec'],
19
19
  ['--use-libraries', 'Lint uses static libraries to install the spec'],
20
+ ['--use-modular-headers', 'Lint uses modular headers during installation'],
20
21
  ['--sources=https://github.com/artsy/Specs,master', 'The sources from which to pull dependent pods ' \
21
22
  '(defaults to https://github.com/CocoaPods/Specs.git). ' \
22
23
  'Multiple sources must be comma-delimited.'],
24
+ ['--platforms=ios,macos', 'Lint against specific platforms' \
25
+ '(defaults to all platforms supported by the podspec).' \
26
+ 'Multiple platforms must be comma-delimited'],
23
27
  ['--private', 'Lint skips checks that apply only to public specs'],
24
28
  ['--swift-version=VERSION', 'The SWIFT_VERSION that should be used to lint the spec. ' \
25
29
  'This takes precedence over a .swift-version file.'],
@@ -36,7 +40,9 @@ module Pod
36
40
  @subspecs = argv.flag?('subspecs', true)
37
41
  @only_subspec = argv.option('subspec')
38
42
  @use_frameworks = !argv.flag?('use-libraries')
43
+ @use_modular_headers = argv.flag?('use-modular-headers')
39
44
  @source_urls = argv.option('sources', 'https://github.com/CocoaPods/Specs.git').split(',')
45
+ @platforms = argv.option('platforms', '').split(',')
40
46
  @private = argv.flag?('private', false)
41
47
  @swift_version = argv.option('swift-version', nil)
42
48
  @skip_import_validation = argv.flag?('skip-import-validation', false)
@@ -52,7 +58,7 @@ module Pod
52
58
  def run
53
59
  UI.puts
54
60
  podspecs_to_lint.each do |podspec|
55
- validator = Validator.new(podspec, @source_urls)
61
+ validator = Validator.new(podspec, @source_urls, @platforms)
56
62
  validator.local = true
57
63
  validator.quick = @quick
58
64
  validator.no_clean = !@clean
@@ -61,6 +67,7 @@ module Pod
61
67
  validator.no_subspecs = !@subspecs || @only_subspec
62
68
  validator.only_subspec = @only_subspec
63
69
  validator.use_frameworks = @use_frameworks
70
+ validator.use_modular_headers = @use_modular_headers
64
71
  validator.ignore_public_only_results = @private
65
72
  validator.swift_version = @swift_version
66
73
  validator.skip_import_validation = @skip_import_validation
@@ -13,19 +13,14 @@ module Pod
13
13
 
14
14
  # Run the command
15
15
  #
16
- # @todo the command reports new dependencies added to the Podfile as
17
- # updates.
18
- #
19
- # @todo fix.
20
- #
21
16
  def run
22
17
  if updates.empty?
23
18
  UI.puts 'No pod updates are available.'.yellow
24
19
  else
25
20
  UI.section 'The color indicates what happens when you run `pod update`' do
26
- UI.puts "#{'<green>'.green}\t\t - Will be updated to the newest version"
21
+ UI.puts "#{'<green>'.green}\t - Will be updated to the newest version"
27
22
  UI.puts "#{'<blue>'.blue}\t - Will be updated, but not to the newest version because of specified version in Podfile"
28
- UI.puts "#{'<red>'.red}\t\t - Will not be updated because of specified version in Podfile"
23
+ UI.puts "#{'<red>'.red}\t - Will not be updated because of specified version in Podfile"
29
24
  UI.puts ''
30
25
  end
31
26
  UI.section 'The following pod updates are available:' do
@@ -5,7 +5,7 @@ module Pod
5
5
  self.summary = 'Add a spec repo'
6
6
 
7
7
  self.description = <<-DESC
8
- Clones `URL` in the local spec-repos directory at `~/.cocoapods/repos/`. The
8
+ Clones `URL` in the local spec-repos directory at `#{Config.instance.repos_dir}`. The
9
9
  remote can later be referred to by `NAME`.
10
10
  DESC
11
11
 
@@ -5,7 +5,7 @@ module Pod
5
5
  self.summary = 'List repos'
6
6
 
7
7
  self.description = <<-DESC
8
- List the repos from the local spec-repos directory at `~/.cocoapods/repos/.`
8
+ List the repos from the local spec-repos directory at `#{Config.instance.repos_dir}`.
9
9
  DESC
10
10
 
11
11
  def self.options
@@ -11,7 +11,7 @@ module Pod
11
11
  self.description = <<-DESC
12
12
  Validates `NAME.podspec` or `*.podspec` in the current working dir,
13
13
  creates a directory and version folder for the pod in the local copy of
14
- `REPO` (~/.cocoapods/repos/[REPO]), copies the podspec file into the
14
+ `REPO` (#{Config.instance.repos_dir}/[REPO]), copies the podspec file into the
15
15
  version directory, and finally it pushes `REPO` to its remote.
16
16
  DESC
17
17
 
@@ -24,6 +24,7 @@ module Pod
24
24
  [
25
25
  ['--allow-warnings', 'Allows pushing even if there are warnings'],
26
26
  ['--use-libraries', 'Linter uses static libraries to install the spec'],
27
+ ['--use-modular-headers', 'Lint uses modular headers during installation'],
27
28
  ['--sources=https://github.com/artsy/Specs,master', 'The sources from which to pull dependent pods ' \
28
29
  '(defaults to all available repos). ' \
29
30
  'Multiple sources must be comma-delimited.'],
@@ -48,6 +49,7 @@ module Pod
48
49
  @source_urls = argv.option('sources', config.sources_manager.all.map(&:url).join(',')).split(',')
49
50
  @podspec = argv.shift_argument
50
51
  @use_frameworks = !argv.flag?('use-libraries')
52
+ @use_modular_headers = argv.flag?('use-modular-headers', false)
51
53
  @private = argv.flag?('private', true)
52
54
  @message = argv.option('commit-message')
53
55
  @commit_message = argv.flag?('commit-message', false)
@@ -131,6 +133,7 @@ module Pod
131
133
  validator = Validator.new(podspec, @source_urls)
132
134
  validator.allow_warnings = @allow_warnings
133
135
  validator.use_frameworks = @use_frameworks
136
+ validator.use_modular_headers = @use_modular_headers
134
137
  validator.ignore_public_only_results = @private
135
138
  validator.swift_version = @swift_version
136
139
  validator.skip_import_validation = @skip_import_validation
@@ -182,18 +185,20 @@ module Pod
182
185
  podspec_files.each do |spec_file|
183
186
  spec = Pod::Specification.from_file(spec_file)
184
187
  output_path = @source.pod_path(spec.name) + spec.version.to_s
185
- if @message && !@message.empty?
186
- message = @message
187
- elsif output_path.exist?
188
- unless @allow_overwrite
189
- raise Informative, "#{spec} already exists and overwriting has been disabled."
190
- end
191
- message = "[Fix] #{spec}"
192
- elsif output_path.dirname.directory?
193
- message = "[Update] #{spec}"
194
- else
195
- message = "[Add] #{spec}"
188
+ message = if @message && !@message.empty?
189
+ @message
190
+ elsif output_path.exist?
191
+ "[Fix] #{spec}"
192
+ elsif output_path.dirname.directory?
193
+ "[Update] #{spec}"
194
+ else
195
+ "[Add] #{spec}"
196
+ end
197
+
198
+ if output_path.exist? && !@allow_overwrite
199
+ raise Informative, "#{spec} already exists and overwriting has been disabled."
196
200
  end
201
+
197
202
  FileUtils.mkdir_p(output_path)
198
203
 
199
204
  if @use_json
@@ -5,7 +5,7 @@ module Pod
5
5
  self.summary = 'Remove a spec repo'
6
6
 
7
7
  self.description = <<-DESC
8
- Deletes the remote named `NAME` from the local spec-repos directory at `~/.cocoapods/repos/.`
8
+ Deletes the remote named `NAME` from the local spec-repos directory at `#{Config.instance.repos_dir}`.
9
9
  DESC
10
10
 
11
11
  self.arguments = [
@@ -6,7 +6,7 @@ module Pod
6
6
 
7
7
  self.description = <<-DESC
8
8
  Updates the local clone of the spec-repo `NAME`. If `NAME` is omitted
9
- this will update all spec-repos in `~/.cocoapods/repos`.
9
+ this will update all spec-repos in `#{Config.instance.repos_dir}`.
10
10
  DESC
11
11
 
12
12
  self.arguments = [
@@ -6,7 +6,7 @@ module Pod
6
6
  self.summary = 'Setup the CocoaPods environment'
7
7
 
8
8
  self.description = <<-DESC
9
- Creates a directory at `~/.cocoapods/repos` which will hold your spec-repos.
9
+ Creates a directory at `#{Config.instance.repos_dir}` which will hold your spec-repos.
10
10
  This is where it will create a clone of the public `master` spec-repo from:
11
11
 
12
12
  https://github.com/CocoaPods/Specs
@@ -60,7 +60,7 @@ module Pod
60
60
  data[:author_email] = `git config --get user.email`.strip
61
61
  data[:source_url] = "http://EXAMPLE/#{name}.git"
62
62
  data[:ref_type] = ':tag'
63
- data[:ref] = '#{s.version}'
63
+ data[:ref] = '#{spec.version}'
64
64
  data
65
65
  end
66
66
 
@@ -100,8 +100,8 @@ module Pod
100
100
  else
101
101
  data[:ref_type] = ':tag'
102
102
  data[:ref] = versions_tags[version]
103
- data[:ref] = '#{s.version}' if "#{version}" == versions_tags[version]
104
- data[:ref] = 'v#{s.version}' if "v#{version}" == versions_tags[version]
103
+ data[:ref] = '#{spec.version}' if "#{version}" == versions_tags[version]
104
+ data[:ref] = 'v#{spec.version}' if "v#{version}" == versions_tags[version]
105
105
  end
106
106
  data
107
107
  end
@@ -112,11 +112,11 @@ module Pod
112
112
  # Be sure to run `pod spec lint #{data[:name]}.podspec' to ensure this is a
113
113
  # valid spec and to remove all comments including this before submitting the spec.
114
114
  #
115
- # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
115
+ # To learn more about Podspec attributes see https://docs.cocoapods.org/specification.html
116
116
  # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
117
117
  #
118
118
 
119
- Pod::Spec.new do |s|
119
+ Pod::Spec.new do |spec|
120
120
 
121
121
  # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
122
122
  #
@@ -125,31 +125,31 @@ Pod::Spec.new do |s|
125
125
  # summary should be tweet-length, and the description more in depth.
126
126
  #
127
127
 
128
- s.name = "#{data[:name]}"
129
- s.version = "#{data[:version]}"
130
- s.summary = "#{data[:summary]}"
128
+ spec.name = "#{data[:name]}"
129
+ spec.version = "#{data[:version]}"
130
+ spec.summary = "#{data[:summary]}"
131
131
 
132
132
  # This description is used to generate tags and improve search results.
133
133
  # * Think: What does it do? Why did you write it? What is the focus?
134
134
  # * Try to keep it short, snappy and to the point.
135
135
  # * Write the description between the DESC delimiters below.
136
136
  # * Finally, don't worry about the indent, CocoaPods strips it!
137
- s.description = <<-DESC
137
+ spec.description = <<-DESC
138
138
  DESC
139
139
 
140
- s.homepage = "#{data[:homepage]}"
141
- # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
140
+ spec.homepage = "#{data[:homepage]}"
141
+ # spec.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
142
142
 
143
143
 
144
144
  # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
145
145
  #
146
- # Licensing your code is important. See http://choosealicense.com for more info.
146
+ # Licensing your code is important. See https://choosealicense.com for more info.
147
147
  # CocoaPods will detect a license file if there is a named LICENSE*
148
148
  # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
149
149
  #
150
150
 
151
- s.license = "MIT (example)"
152
- # s.license = { :type => "MIT", :file => "FILE_LICENSE" }
151
+ spec.license = "MIT (example)"
152
+ # spec.license = { :type => "MIT", :file => "FILE_LICENSE" }
153
153
 
154
154
 
155
155
  # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -162,10 +162,10 @@ Pod::Spec.new do |s|
162
162
  # profile URL.
163
163
  #
164
164
 
165
- s.author = { "#{data[:author_name]}" => "#{data[:author_email]}" }
166
- # Or just: s.author = "#{data[:author_name]}"
167
- # s.authors = { "#{data[:author_name]}" => "#{data[:author_email]}" }
168
- # s.social_media_url = "http://twitter.com/#{data[:author_name]}"
165
+ spec.author = { "#{data[:author_name]}" => "#{data[:author_email]}" }
166
+ # Or just: spec.author = "#{data[:author_name]}"
167
+ # spec.authors = { "#{data[:author_name]}" => "#{data[:author_email]}" }
168
+ # spec.social_media_url = "https://twitter.com/#{data[:author_name]}"
169
169
 
170
170
  # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
171
171
  #
@@ -173,14 +173,14 @@ Pod::Spec.new do |s|
173
173
  # the deployment target. You can optionally include the target after the platform.
174
174
  #
175
175
 
176
- # s.platform = :ios
177
- # s.platform = :ios, "5.0"
176
+ # spec.platform = :ios
177
+ # spec.platform = :ios, "5.0"
178
178
 
179
179
  # When using multiple platforms
180
- # s.ios.deployment_target = "5.0"
181
- # s.osx.deployment_target = "10.7"
182
- # s.watchos.deployment_target = "2.0"
183
- # s.tvos.deployment_target = "9.0"
180
+ # spec.ios.deployment_target = "5.0"
181
+ # spec.osx.deployment_target = "10.7"
182
+ # spec.watchos.deployment_target = "2.0"
183
+ # spec.tvos.deployment_target = "9.0"
184
184
 
185
185
 
186
186
  # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -189,7 +189,7 @@ Pod::Spec.new do |s|
189
189
  # Supports git, hg, bzr, svn and HTTP.
190
190
  #
191
191
 
192
- s.source = { :git => "#{data[:source_url]}", #{data[:ref_type]} => "#{data[:ref]}" }
192
+ spec.source = { :git => "#{data[:source_url]}", #{data[:ref_type]} => "#{data[:ref]}" }
193
193
 
194
194
 
195
195
  # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -200,10 +200,10 @@ Pod::Spec.new do |s|
200
200
  # Not including the public_header_files will make all headers public.
201
201
  #
202
202
 
203
- s.source_files = "Classes", "Classes/**/*.{h,m}"
204
- s.exclude_files = "Classes/Exclude"
203
+ spec.source_files = "Classes", "Classes/**/*.{h,m}"
204
+ spec.exclude_files = "Classes/Exclude"
205
205
 
206
- # s.public_header_files = "Classes/**/*.h"
206
+ # spec.public_header_files = "Classes/**/*.h"
207
207
 
208
208
 
209
209
  # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -214,10 +214,10 @@ Pod::Spec.new do |s|
214
214
  # non-essential files like tests, examples and documentation.
215
215
  #
216
216
 
217
- # s.resource = "icon.png"
218
- # s.resources = "Resources/*.png"
217
+ # spec.resource = "icon.png"
218
+ # spec.resources = "Resources/*.png"
219
219
 
220
- # s.preserve_paths = "FilesToSave", "MoreFilesToSave"
220
+ # spec.preserve_paths = "FilesToSave", "MoreFilesToSave"
221
221
 
222
222
 
223
223
  # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -226,11 +226,11 @@ Pod::Spec.new do |s|
226
226
  # the lib prefix of their name.
227
227
  #
228
228
 
229
- # s.framework = "SomeFramework"
230
- # s.frameworks = "SomeFramework", "AnotherFramework"
229
+ # spec.framework = "SomeFramework"
230
+ # spec.frameworks = "SomeFramework", "AnotherFramework"
231
231
 
232
- # s.library = "iconv"
233
- # s.libraries = "iconv", "xml2"
232
+ # spec.library = "iconv"
233
+ # spec.libraries = "iconv", "xml2"
234
234
 
235
235
 
236
236
  # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
@@ -239,10 +239,10 @@ Pod::Spec.new do |s|
239
239
  # where they will only apply to your library. If you depend on other Podspecs
240
240
  # you can include multiple dependencies to ensure it works.
241
241
 
242
- # s.requires_arc = true
242
+ # spec.requires_arc = true
243
243
 
244
- # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
245
- # s.dependency "JSONKit", "~> 1.4"
244
+ # spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
245
+ # spec.dependency "JSONKit", "~> 1.4"
246
246
 
247
247
  end
248
248
  SPEC
@@ -259,7 +259,7 @@ CocoaPods is a tool for managing dependencies for OSX and iOS Xcode projects and
259
259
 
260
260
  However, #{repo} doesn't have any version tags. I’ve added the current HEAD as version 0.0.1, but a version tag will make dependency resolution much easier.
261
261
 
262
- [Semantic version](http://semver.org) tags (instead of plain commit hashes/revisions) allow for [resolution of cross-dependencies](https://github.com/CocoaPods/Specs/wiki/Cross-dependencies-resolution-example).
262
+ [Semantic version](https://semver.org) tags (instead of plain commit hashes/revisions) allow for [resolution of cross-dependencies](https://github.com/CocoaPods/Specs/wiki/Cross-dependencies-resolution-example).
263
263
 
264
264
  In case you didn’t know this yet; you can tag the current HEAD as, for instance, version 1.0.0, like so:
265
265