cocoapods 0.11.1 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +22 -11
- data/README.md +1 -1
- data/lib/cocoapods.rb +1 -1
- data/lib/cocoapods/command/linter.rb +9 -7
- data/lib/cocoapods/command/presenter/cocoa_pod.rb +3 -8
- data/lib/cocoapods/downloader/git.rb +25 -21
- data/lib/cocoapods/downloader/http.rb +4 -4
- data/lib/cocoapods/downloader/mercurial.rb +2 -2
- data/lib/cocoapods/downloader/subversion.rb +2 -2
- data/lib/cocoapods/executable.rb +22 -3
- data/lib/cocoapods/generator/documentation.rb +3 -2
- data/lib/cocoapods/installer.rb +5 -3
- data/lib/cocoapods/installer/target_installer.rb +5 -4
- data/lib/cocoapods/installer/user_project_integrator.rb +7 -8
- data/lib/cocoapods/local_pod.rb +26 -9
- data/lib/cocoapods/podfile.rb +13 -1
- data/lib/cocoapods/project.rb +9 -3
- data/lib/cocoapods/specification.rb +22 -3
- data/lib/cocoapods/specification/set.rb +3 -1
- metadata +3 -6
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
|
-
## 0.
|
1
|
+
## 0.12.0
|
2
2
|
|
3
|
-
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.11.0
|
3
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.11.1...0.12.0)
|
4
|
+
|
5
|
+
###### Enhancements
|
6
|
+
|
7
|
+
- The documentation is generated using the public headers if they are specified.
|
8
|
+
- In case of a download failure the installation is aborted and the error message is shown.
|
9
|
+
- Git submodules are initialized only if requested.
|
10
|
+
- Don’t impose a certain structure of the user’s project by raising if no ‘Frameworks’ group exists. [#431](https://github.com/CocoaPods/CocoaPods/pull/431)
|
11
|
+
- Support for GitHub Gists in the linter.
|
12
|
+
- Allow specifying ARC settings in subspecs.
|
13
|
+
- Add Podfile#inhibit_all_warnings! which will inhibit all warnings from the Pods library. [#209](https://github.com/CocoaPods/CocoaPods/issues/209)
|
14
|
+
- Make the Pods Xcode project prettier by namespacing subspecs in nested groups. [#466](https://github.com/CocoaPods/CocoaPods/pull/466)
|
15
|
+
|
16
|
+
|
17
|
+
## 0.11.1
|
18
|
+
|
19
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.11.0...0.11.1)
|
4
20
|
|
5
21
|
###### Bug fixes
|
6
22
|
|
@@ -8,6 +24,7 @@
|
|
8
24
|
- Git submodules are loaded after the appropriate referenced is checked out and will be not loaded anymore in the cache. [#451]
|
9
25
|
- Fixed SVN support for the head version. [#432]
|
10
26
|
|
27
|
+
|
11
28
|
## 0.11.0
|
12
29
|
|
13
30
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.10.0...0.11.0)
|
@@ -16,7 +33,7 @@
|
|
16
33
|
|
17
34
|
- Added support for public headers. [#440]
|
18
35
|
- Added `pod repo lint`. [#423]
|
19
|
-
- Improved support for `:head` option and
|
36
|
+
- Improved support for `:head` option and SVN repositories.
|
20
37
|
- When integrating Pods with a project without "Frameworks" group in root of the project, raise an informative message. [#431](https://github.com/CocoaPods/CocoaPods/pull/431)
|
21
38
|
- Dropped support for legacy `config.ios?` and `config.osx?`
|
22
39
|
|
@@ -25,6 +42,7 @@
|
|
25
42
|
- Version message now correctly terminates with a 0 exit status.
|
26
43
|
- Resolved an issue that lead to git error messages in the error report.
|
27
44
|
|
45
|
+
|
28
46
|
## 0.10.0
|
29
47
|
|
30
48
|
[CocoaPods](http://git.io/4i75YA)
|
@@ -35,7 +53,6 @@
|
|
35
53
|
- Added line number information for errors generated in the Podfile. [#408](http://git.io/fWQvMg)
|
36
54
|
- Pods stored in git repositories now initialize submodules. [#406](http://git.io/L9ssSw)
|
37
55
|
|
38
|
-
|
39
56
|
###### Bug fixes
|
40
57
|
|
41
58
|
- Removed note about the post install hook form the linter.
|
@@ -232,7 +249,7 @@ class ::Pod::Generator::Acknowledgements
|
|
232
249
|
end
|
233
250
|
```
|
234
251
|
|
235
|
-
You can even go one step further and customise the text on a per target basis by
|
252
|
+
You can even go one step further and customise the text on a per target basis by
|
236
253
|
checking against the target name, like this:
|
237
254
|
|
238
255
|
```ruby
|
@@ -338,8 +355,6 @@ podspec, then update these method calls.
|
|
338
355
|
* Added weak quoting to `ibtool` input paths.
|
339
356
|
|
340
357
|
|
341
|
-
---------------------------------------
|
342
|
-
|
343
358
|
## 0.5.0
|
344
359
|
|
345
360
|
No longer requires MacRuby. Runs on MRI 1.8.7 (OS X system version) and 1.9.3.
|
@@ -347,15 +362,11 @@ No longer requires MacRuby. Runs on MRI 1.8.7 (OS X system version) and 1.9.3.
|
|
347
362
|
A full list of all the changes since 0.3.0 can be found [here][7].
|
348
363
|
|
349
364
|
|
350
|
-
---------------------------------------
|
351
|
-
|
352
365
|
## 0.4.0
|
353
366
|
|
354
367
|
Oops, accidentally skipped this version.
|
355
368
|
|
356
369
|
|
357
|
-
---------------------------------------
|
358
|
-
|
359
370
|
## 0.3.0
|
360
371
|
|
361
372
|
### Multiple targets
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ You specify the dependencies for your project in one easy text file. CocoaPods r
|
|
15
15
|
|
16
16
|
Ultimately, the goal is to improve discoverability of, and engagement in, third party open-source libraries, by creating a more centralized ecosystem.
|
17
17
|
|
18
|
-
See the [NSScreencast episode about CocoaPods](http://nsscreencast.com/episodes/5-cocoapods) for a quick overview on how to get started, or [the wiki](https://github.com/CocoaPods/CocoaPods/wiki) for more in depth information on several topics.
|
18
|
+
See the [NSScreencast](https://twitter.com/NSScreencast) episode about [using CocoaPods](http://nsscreencast.com/episodes/5-cocoapods) for a quick overview on how to get started or [create a Pod specification](http://nsscreencast.com/episodes/28-creating-a-cocoapod), or [the wiki](https://github.com/CocoaPods/CocoaPods/wiki) for more in depth information on several topics.
|
19
19
|
|
20
20
|
Or, if you’re already using CocoaPods, you can find the changelog [here](https://github.com/CocoaPods/CocoaPods/blob/master/CHANGELOG.md), which contains an overview of the changes in recent versions.
|
21
21
|
|
data/lib/cocoapods.rb
CHANGED
@@ -225,15 +225,17 @@ module Pod
|
|
225
225
|
messages << "The description is not meaningful" if spec.description && spec.description =~ /An optional longer description of/
|
226
226
|
messages << "The summary should end with a dot" if spec.summary !~ /.*\./
|
227
227
|
messages << "The description should end with a dot" if spec.description !~ /.*\./ && spec.description != spec.summary
|
228
|
-
messages << "Git sources should specify either a tag or a commit" if source[:git] && !source[:commit] && !source[:tag]
|
229
|
-
messages << "Github repositories should end in `.git'" if github_source? && source[:git] !~ /.*\.git/
|
230
|
-
messages << "Github repositories should use `https' link" if github_source? && source[:git] !~ /https:\/\/github.com/
|
231
228
|
messages << "Comments must be deleted" if text.scan(/^\s*#/).length > 24
|
232
|
-
messages
|
233
|
-
end
|
234
229
|
|
235
|
-
|
236
|
-
|
230
|
+
if (git_source = source[:git])
|
231
|
+
messages << "Git sources should specify either a tag or a commit" unless source[:commit] || source[:tag]
|
232
|
+
if git_source.include?('github.com')
|
233
|
+
messages << "Github repositories should end in `.git'" unless git_source.end_with?('.git')
|
234
|
+
messages << "Github repositories should use `https' link" unless git_source.start_with?('https://github.com') || git_source.start_with?('git://gist.github.com')
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
messages
|
237
239
|
end
|
238
240
|
|
239
241
|
# It creates a podfile in memory and builds a library containing
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/array/conversions'
|
2
|
+
|
1
3
|
module Pod
|
2
4
|
class Command
|
3
5
|
class Presenter
|
@@ -27,7 +29,7 @@ module Pod
|
|
27
29
|
end
|
28
30
|
|
29
31
|
def authors
|
30
|
-
|
32
|
+
spec.authors.keys.to_sentence
|
31
33
|
end
|
32
34
|
|
33
35
|
def homepage
|
@@ -89,13 +91,6 @@ module Pod
|
|
89
91
|
end
|
90
92
|
|
91
93
|
private
|
92
|
-
def oxfordify words
|
93
|
-
if words.size < 3
|
94
|
-
words.join ' and '
|
95
|
-
else
|
96
|
-
"#{words[0..-2].join(', ')}, and #{words.last}"
|
97
|
-
end
|
98
|
-
end
|
99
94
|
|
100
95
|
def distance_from_now_in_words(from_time)
|
101
96
|
return nil unless from_time
|
@@ -14,6 +14,7 @@ module Pod
|
|
14
14
|
def download
|
15
15
|
create_cache unless cache_exist?
|
16
16
|
puts '-> Cloning git repo' if config.verbose?
|
17
|
+
|
17
18
|
if options[:tag]
|
18
19
|
download_tag
|
19
20
|
elsif options[:branch]
|
@@ -23,6 +24,8 @@ module Pod
|
|
23
24
|
else
|
24
25
|
download_head
|
25
26
|
end
|
27
|
+
|
28
|
+
Dir.chdir(target_path) { git! "submodule update --init" } if options[:submodules]
|
26
29
|
prune_cache
|
27
30
|
end
|
28
31
|
|
@@ -30,7 +33,7 @@ module Pod
|
|
30
33
|
puts "-> Creating cache git repo (#{cache_path})" if config.verbose?
|
31
34
|
cache_path.rmtree if cache_path.exist?
|
32
35
|
cache_path.mkpath
|
33
|
-
|
36
|
+
clone(url, cache_path)
|
34
37
|
end
|
35
38
|
|
36
39
|
def prune_cache
|
@@ -73,10 +76,9 @@ module Pod
|
|
73
76
|
def update_cache
|
74
77
|
puts "-> Updating cache git repo (#{cache_path})" if config.verbose?
|
75
78
|
Dir.chdir(cache_path) do
|
76
|
-
git "reset --hard HEAD"
|
77
|
-
git "clean -d -x -f"
|
78
|
-
git "pull"
|
79
|
-
git "submodule update"
|
79
|
+
git! "reset --hard HEAD"
|
80
|
+
git! "clean -d -x -f"
|
81
|
+
git! "pull origin master"
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
@@ -104,42 +106,44 @@ module Pod
|
|
104
106
|
else
|
105
107
|
create_cache
|
106
108
|
end
|
107
|
-
|
108
|
-
|
109
|
+
|
110
|
+
clone(clone_url, target_path)
|
111
|
+
Dir.chdir(target_path) { git! "submodule update --init" } if options[:submodules]
|
109
112
|
end
|
110
113
|
|
111
114
|
def download_tag
|
112
115
|
ensure_ref_exists(options[:tag])
|
113
116
|
Dir.chdir(target_path) do
|
114
|
-
git "init"
|
115
|
-
git "remote add origin '#{clone_url}'"
|
116
|
-
git "fetch origin tags/#{options[:tag]}"
|
117
|
-
git "reset --hard FETCH_HEAD"
|
118
|
-
git "checkout -b activated-pod-commit"
|
119
|
-
git "submodule update --init"
|
117
|
+
git! "init"
|
118
|
+
git! "remote add origin '#{clone_url}'"
|
119
|
+
git! "fetch origin tags/#{options[:tag]}"
|
120
|
+
git! "reset --hard FETCH_HEAD"
|
121
|
+
git! "checkout -b activated-pod-commit"
|
120
122
|
end
|
121
123
|
end
|
122
124
|
|
123
125
|
def download_commit
|
124
126
|
ensure_ref_exists(options[:commit])
|
125
|
-
|
127
|
+
clone(clone_url, target_path)
|
126
128
|
Dir.chdir(target_path) do
|
127
|
-
git "checkout -b activated-pod-commit #{options[:commit]}"
|
128
|
-
git "submodule update --init"
|
129
|
+
git! "checkout -b activated-pod-commit #{options[:commit]}"
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
132
133
|
def download_branch
|
133
134
|
ensure_remote_branch_exists(options[:branch])
|
134
|
-
|
135
|
+
clone(clone_url, target_path)
|
135
136
|
Dir.chdir(target_path) do
|
136
|
-
git "remote add upstream '#{@url}'" # we need to add the original url, not the cache url
|
137
|
-
git "fetch -q upstream" # refresh the branches
|
138
|
-
git "checkout --track -b activated-pod-commit upstream/#{options[:branch]}" # create a new tracking branch
|
139
|
-
git "submodule update --init"
|
137
|
+
git! "remote add upstream '#{@url}'" # we need to add the original url, not the cache url
|
138
|
+
git! "fetch -q upstream" # refresh the branches
|
139
|
+
git! "checkout --track -b activated-pod-commit upstream/#{options[:branch]}" # create a new tracking branch
|
140
140
|
puts "Just downloaded and checked out branch: #{options[:branch]} from upstream #{clone_url}" if config.verbose?
|
141
141
|
end
|
142
142
|
end
|
143
|
+
|
144
|
+
def clone(from, to)
|
145
|
+
git! %Q|clone "#{from}" "#{to}"|
|
146
|
+
end
|
143
147
|
end
|
144
148
|
|
145
149
|
class GitHub < Git
|
@@ -52,17 +52,17 @@ module Pod
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def download_file(full_filename)
|
55
|
-
curl "-L -o '#{full_filename}' '#{url}'"
|
55
|
+
curl! "-L -o '#{full_filename}' '#{url}'"
|
56
56
|
end
|
57
57
|
|
58
58
|
def extract_with_type(full_filename, type=:zip)
|
59
59
|
case type
|
60
60
|
when :zip
|
61
|
-
unzip "'#{full_filename}' -d '#{target_path}'"
|
61
|
+
unzip! "'#{full_filename}' -d '#{target_path}'"
|
62
62
|
when :tgz
|
63
|
-
tar "xfz '#{full_filename}' -C '#{target_path}'"
|
63
|
+
tar! "xfz '#{full_filename}' -C '#{target_path}'"
|
64
64
|
when :tar
|
65
|
-
tar "xf '#{full_filename}' -C '#{target_path}'"
|
65
|
+
tar! "xf '#{full_filename}' -C '#{target_path}'"
|
66
66
|
else
|
67
67
|
raise UnsupportedFileTypeError.new "Unsupported file type: #{type}"
|
68
68
|
end
|
@@ -12,11 +12,11 @@ module Pod
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def download_head
|
15
|
-
hg "clone \"#{url}\" \"#{target_path}\""
|
15
|
+
hg! "clone \"#{url}\" \"#{target_path}\""
|
16
16
|
end
|
17
17
|
|
18
18
|
def download_revision
|
19
|
-
hg "clone \"#{url}\" --rev '#{options[:revision]}' \"#{target_path}\""
|
19
|
+
hg! "clone \"#{url}\" --rev '#{options[:revision]}' \"#{target_path}\""
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -4,11 +4,11 @@ module Pod
|
|
4
4
|
executable :svn
|
5
5
|
|
6
6
|
def download
|
7
|
-
svn %|checkout "#{reference_url}" "#{target_path}"|
|
7
|
+
svn! %|checkout "#{reference_url}" "#{target_path}"|
|
8
8
|
end
|
9
9
|
|
10
10
|
def download_head
|
11
|
-
svn %|checkout "#{trunk_url}" "#{target_path}"|
|
11
|
+
svn! %|checkout "#{trunk_url}" "#{target_path}"|
|
12
12
|
end
|
13
13
|
|
14
14
|
def reference_url
|
data/lib/cocoapods/executable.rb
CHANGED
@@ -20,7 +20,8 @@ module Pod
|
|
20
20
|
|
21
21
|
def executable(name)
|
22
22
|
bin = `which #{name}`.strip
|
23
|
-
|
23
|
+
base_method = "base_" << name.to_s
|
24
|
+
define_method(base_method) do |command, should_raise|
|
24
25
|
if bin.empty?
|
25
26
|
raise Informative, "Unable to locate the executable `#{name}'"
|
26
27
|
end
|
@@ -33,9 +34,27 @@ module Pod
|
|
33
34
|
end
|
34
35
|
status = Open4.spawn(full_command, :stdout => stdout, :stderr => stderr, :status => true)
|
35
36
|
# TODO not sure that we should be silent in case of a failure.
|
36
|
-
|
37
|
-
stdout.join("\n") + stderr.join("\n") # TODO will this suffice?
|
37
|
+
|
38
|
+
output = stdout.join("\n") + stderr.join("\n") # TODO will this suffice?
|
39
|
+
unless status.success?
|
40
|
+
if should_raise
|
41
|
+
raise Informative, "#{name} #{command}\n\n#{output}"
|
42
|
+
else
|
43
|
+
puts (Config.instance.verbose? ? ' ' : '') << "[!] Failed: #{full_command}".red unless Config.instance.silent?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
output
|
47
|
+
end
|
48
|
+
|
49
|
+
define_method(name) do |command|
|
50
|
+
send(base_method, command, false)
|
51
|
+
end
|
52
|
+
|
53
|
+
define_method(name.to_s + "!") do |command|
|
54
|
+
send(base_method, command, true)
|
38
55
|
end
|
56
|
+
|
57
|
+
|
39
58
|
private name
|
40
59
|
end
|
41
60
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'escape'
|
2
|
+
require 'active_support/core_ext/array/conversions'
|
2
3
|
|
3
4
|
module Pod
|
4
5
|
module Generator
|
@@ -23,7 +24,7 @@ module Pod
|
|
23
24
|
|
24
25
|
def company
|
25
26
|
if @specification.authors
|
26
|
-
@specification.authors.keys.sort.
|
27
|
+
@specification.authors.keys.sort.to_sentence
|
27
28
|
else
|
28
29
|
'no-company'
|
29
30
|
end
|
@@ -42,7 +43,7 @@ module Pod
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def files
|
45
|
-
@pod.
|
46
|
+
@pod.documentation_headers.map{ |f| f.relative_path_from(@pod.root).to_s }
|
46
47
|
end
|
47
48
|
|
48
49
|
def index_file
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -28,9 +28,11 @@ module Pod
|
|
28
28
|
@project.user_build_configurations = @podfile.user_build_configurations
|
29
29
|
pods.each do |pod|
|
30
30
|
# Add all source files to the project grouped by pod
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
pod.relative_source_files_by_spec.each do |spec, paths|
|
32
|
+
group = @project.add_spec_group(spec.name)
|
33
|
+
paths.each do |path|
|
34
|
+
group.files.new('path' => path.to_s)
|
35
|
+
end
|
34
36
|
end
|
35
37
|
end
|
36
38
|
# Add a group to hold all the target support files
|
@@ -13,10 +13,11 @@ module Pod
|
|
13
13
|
def xcconfig
|
14
14
|
@xcconfig ||= Xcodeproj::Config.new({
|
15
15
|
# In a workspace this is where the static library headers should be found.
|
16
|
-
'PODS_ROOT'
|
17
|
-
'PODS_HEADERS_SEARCH_PATHS'
|
18
|
-
'ALWAYS_SEARCH_USER_PATHS'
|
19
|
-
'OTHER_LDFLAGS'
|
16
|
+
'PODS_ROOT' => @target_definition.relative_pods_root,
|
17
|
+
'PODS_HEADERS_SEARCH_PATHS' => '${PODS_PUBLIC_HEADERS_SEARCH_PATHS}',
|
18
|
+
'ALWAYS_SEARCH_USER_PATHS' => 'YES', # needed to make EmbedReader build
|
19
|
+
'OTHER_LDFLAGS' => default_ld_flags,
|
20
|
+
'GCC_WARN_INHIBIT_ALL_WARNINGS' => @target_definition.inhibit_all_warnings? ? 'YES' : 'NO',
|
20
21
|
})
|
21
22
|
end
|
22
23
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'xcodeproj/workspace'
|
2
2
|
require 'xcodeproj/project'
|
3
3
|
|
4
|
+
require 'active_support/core_ext/string/inflections'
|
5
|
+
require 'active_support/core_ext/array/conversions'
|
6
|
+
|
4
7
|
module Pod
|
5
8
|
class Installer
|
6
9
|
|
@@ -69,10 +72,8 @@ module Pod
|
|
69
72
|
return if targets.empty?
|
70
73
|
|
71
74
|
unless Config.instance.silent?
|
72
|
-
|
73
|
-
|
74
|
-
puts "-> Integrating `#{@target_definition.lib_name}' into target#{'s' if plural} " \
|
75
|
-
"`#{targets.map(&:name).join(', ')}' of Xcode project `#{user_project_path.basename}'.".green
|
75
|
+
puts "-> Integrating `#{@target_definition.lib_name}' into #{'target'.pluralize(targets.size)} " \
|
76
|
+
"`#{targets.map(&:name).to_sentence}' of Xcode project `#{user_project_path.basename}'.".green
|
76
77
|
end
|
77
78
|
|
78
79
|
add_xcconfig_base_configuration
|
@@ -141,10 +142,8 @@ module Pod
|
|
141
142
|
end
|
142
143
|
|
143
144
|
def add_pods_library
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
pods_library = framework_group.files.new_static_library(@target_definition.label)
|
145
|
+
group = user_project.group("Frameworks") || user_project.main_group
|
146
|
+
pods_library = group.files.new_static_library(@target_definition.label)
|
148
147
|
targets.each do |target|
|
149
148
|
target.frameworks_build_phases.each { |build_phase| build_phase << pods_library }
|
150
149
|
end
|
data/lib/cocoapods/local_pod.rb
CHANGED
@@ -192,6 +192,15 @@ module Pod
|
|
192
192
|
source_files.map{ |p| p.relative_path_from(@sandbox.root) }
|
193
193
|
end
|
194
194
|
|
195
|
+
def relative_source_files_by_spec
|
196
|
+
result = {}
|
197
|
+
source_files_by_spec.each do |spec, paths|
|
198
|
+
result[spec] = paths.map{ |p| p.relative_path_from(@sandbox.root) }
|
199
|
+
end
|
200
|
+
result
|
201
|
+
end
|
202
|
+
|
203
|
+
|
195
204
|
# Finds the source files that every activated {Specification} requires.
|
196
205
|
#
|
197
206
|
# @note If the same file is required by two specifications the one at the
|
@@ -316,27 +325,35 @@ module Pod
|
|
316
325
|
end
|
317
326
|
|
318
327
|
# Computes the paths of all the public headers of the pod including every
|
319
|
-
# subspec
|
328
|
+
# subspec (activated or not).
|
329
|
+
# For this reason the pod must not be cleaned when calling this command.
|
320
330
|
#
|
321
331
|
# This method is used by {Generator::Documentation}.
|
322
332
|
#
|
323
333
|
# @raise [Informative] If the pod was cleaned.
|
324
334
|
#
|
325
|
-
# @todo Merge with #221
|
326
|
-
#
|
327
335
|
# @return [Array<Pathname>] The path of all the public headers of the pod.
|
328
336
|
#
|
329
|
-
def
|
337
|
+
def documentation_headers
|
330
338
|
if @cleaned
|
331
339
|
raise Informative, "The pod is cleaned and cannot compute the " \
|
332
340
|
"header files, as some might have been deleted."
|
333
341
|
end
|
334
342
|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
343
|
+
specs = [top_specification] + top_specification.recursive_subspecs
|
344
|
+
source_files = paths_by_spec(:source_files, { :glob => '*.{h}'}, specs)
|
345
|
+
public_headers = paths_by_spec(:public_header_files,{ :glob => '*.{h}'}, specs)
|
346
|
+
|
347
|
+
result = []
|
348
|
+
specs.each do |spec|
|
349
|
+
if (public_h = public_headers[spec]) && !public_h.empty?
|
350
|
+
result += public_h
|
351
|
+
elsif (source_f = source_files[spec]) && !source_f.empty?
|
352
|
+
build_h = source_f.select { |f| f.extname == '.h' }
|
353
|
+
result += build_h unless build_h.empty?
|
354
|
+
end
|
355
|
+
end
|
356
|
+
result
|
340
357
|
end
|
341
358
|
|
342
359
|
# @!group Target integration
|
data/lib/cocoapods/podfile.rb
CHANGED
@@ -62,7 +62,7 @@ module Pod
|
|
62
62
|
|
63
63
|
attr_reader :name, :target_dependencies
|
64
64
|
|
65
|
-
attr_accessor :user_project, :link_with, :platform, :parent, :exclusive
|
65
|
+
attr_accessor :user_project, :link_with, :platform, :parent, :exclusive, :inhibit_all_warnings
|
66
66
|
|
67
67
|
def initialize(name, options = {})
|
68
68
|
@name, @target_dependencies = name, []
|
@@ -96,6 +96,11 @@ module Pod
|
|
96
96
|
@platform || (@parent.platform if @parent)
|
97
97
|
end
|
98
98
|
|
99
|
+
def inhibit_all_warnings
|
100
|
+
@inhibit_all_warnings.nil? ? (@parent.inhibit_all_warnings? if @parent) : @inhibit_all_warnings
|
101
|
+
end
|
102
|
+
alias_method :inhibit_all_warnings?, :inhibit_all_warnings
|
103
|
+
|
99
104
|
def label
|
100
105
|
if name == :default
|
101
106
|
"Pods"
|
@@ -284,6 +289,13 @@ module Pod
|
|
284
289
|
@target_definition.link_with = targets
|
285
290
|
end
|
286
291
|
|
292
|
+
# Inhibits **all** warnings from the Pods library.
|
293
|
+
#
|
294
|
+
# When used, this is applied to all targets inheriting from the current one.
|
295
|
+
def inhibit_all_warnings!
|
296
|
+
@target_definition.inhibit_all_warnings = true
|
297
|
+
end
|
298
|
+
|
287
299
|
# Specifies a dependency of the project.
|
288
300
|
#
|
289
301
|
# A dependency requirement is defined by the name of the Pod and _optionally_
|
data/lib/cocoapods/project.rb
CHANGED
@@ -34,9 +34,15 @@ module Pod
|
|
34
34
|
groups.find { |g| g.name == 'Pods' } || groups.new({ 'name' => 'Pods' })
|
35
35
|
end
|
36
36
|
|
37
|
-
# Adds a group as child to the `Pods' group.
|
38
|
-
def
|
39
|
-
pods.groups
|
37
|
+
# Adds a group as child to the `Pods' group namespacing subspecs.
|
38
|
+
def add_spec_group(name)
|
39
|
+
groups = pods.groups
|
40
|
+
group = nil
|
41
|
+
name.split('/').each do |name|
|
42
|
+
group = groups.find { |g| g.name == name } || groups.new({ 'name' => name })
|
43
|
+
groups = group.groups
|
44
|
+
end
|
45
|
+
group
|
40
46
|
end
|
41
47
|
|
42
48
|
def add_pod_target(name, platform)
|
@@ -51,8 +51,9 @@ module Pod
|
|
51
51
|
compiler_flags ].each do |attr|
|
52
52
|
instance_variable_set( "@#{attr}", { :ios => [], :osx => [] } )
|
53
53
|
end
|
54
|
-
@xcconfig
|
55
|
-
@header_dir
|
54
|
+
@xcconfig = { :ios => Xcodeproj::Config.new, :osx => Xcodeproj::Config.new }
|
55
|
+
@header_dir = { :ios => nil, :osx => nil }
|
56
|
+
@requires_arc = { :ios => nil, :osx => nil }
|
56
57
|
|
57
58
|
yield self if block_given?
|
58
59
|
end
|
@@ -137,6 +138,7 @@ module Pod
|
|
137
138
|
compiler_flags=
|
138
139
|
deployment_target=
|
139
140
|
header_dir=
|
141
|
+
requires_arc
|
140
142
|
dependency }.each do |method|
|
141
143
|
define_method(method) do |args|
|
142
144
|
@specification._on_platform(@platform) do
|
@@ -194,7 +196,6 @@ module Pod
|
|
194
196
|
top_attr_accessor :homepage
|
195
197
|
top_attr_accessor :summary
|
196
198
|
top_attr_accessor :documentation
|
197
|
-
top_attr_accessor :requires_arc
|
198
199
|
top_attr_accessor :version, lambda { |v| Version.new(v) }
|
199
200
|
|
200
201
|
top_attr_reader :description, lambda { |instance, ivar| ivar || instance.summary }
|
@@ -255,6 +256,24 @@ module Pod
|
|
255
256
|
alias_method :weak_framework=, :weak_frameworks=
|
256
257
|
alias_method :library=, :libraries=
|
257
258
|
|
259
|
+
|
260
|
+
# @!method requires_arc=
|
261
|
+
#
|
262
|
+
# @abstract Wether the `-fobjc-arc' flag should be added to the compiler
|
263
|
+
# flags.
|
264
|
+
#
|
265
|
+
# @param [Bool] Wether the source files require ARC.
|
266
|
+
#
|
267
|
+
platform_attr_writer :requires_arc
|
268
|
+
|
269
|
+
def requires_arc
|
270
|
+
requires_arc = @requires_arc[active_platform]
|
271
|
+
if requires_arc.nil?
|
272
|
+
requires_arc = @parent ? @parent.requires_arc : false
|
273
|
+
end
|
274
|
+
requires_arc
|
275
|
+
end
|
276
|
+
|
258
277
|
# @!method header_dir=
|
259
278
|
#
|
260
279
|
# @abstract The directory where to name space the headers files of
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/array/conversions'
|
2
|
+
|
1
3
|
module Pod
|
2
4
|
class Specification
|
3
5
|
class Set
|
@@ -18,7 +20,7 @@ module Pod
|
|
18
20
|
# TODO add graph that shows which dependencies led to this.
|
19
21
|
raise Informative, "#{specification} tries to activate `#{dependency}', " \
|
20
22
|
"but already activated version `#{required_version}' " \
|
21
|
-
"by #{@required_by.
|
23
|
+
"by #{@required_by.to_sentence}."
|
22
24
|
end
|
23
25
|
@specification = nil
|
24
26
|
@required_by << specification
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -247,9 +247,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
247
247
|
- - ! '>='
|
248
248
|
- !ruby/object:Gem::Version
|
249
249
|
version: '0'
|
250
|
-
segments:
|
251
|
-
- 0
|
252
|
-
hash: -2225480835849784751
|
253
250
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
251
|
none: false
|
255
252
|
requirements:
|
@@ -258,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
255
|
version: '0'
|
259
256
|
requirements: []
|
260
257
|
rubyforge_project:
|
261
|
-
rubygems_version: 1.8.
|
258
|
+
rubygems_version: 1.8.23
|
262
259
|
signing_key:
|
263
260
|
specification_version: 3
|
264
261
|
summary: An Objective-C library package manager.
|