cocoapods 0.19.1 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +80 -2
- data/README.md +3 -2
- data/bin/sandbox-pod +130 -0
- data/lib/cocoapods.rb +1 -3
- data/lib/cocoapods/command.rb +1 -0
- data/lib/cocoapods/command/help.rb +2 -2
- data/lib/cocoapods/command/project.rb +0 -2
- data/lib/cocoapods/command/search.rb +6 -6
- data/lib/cocoapods/config.rb +94 -50
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +87 -18
- data/lib/cocoapods/installer.rb +9 -11
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +1 -1
- data/lib/cocoapods/installer/pod_source_installer.rb +6 -38
- data/lib/cocoapods/installer/target_installer.rb +6 -6
- data/lib/cocoapods/resolver.rb +4 -1
- data/lib/cocoapods/sandbox.rb +34 -1
- data/lib/cocoapods/user_interface.rb +1 -1
- data/lib/cocoapods/user_interface/error_report.rb +1 -1
- data/lib/cocoapods/validator.rb +0 -1
- metadata +93 -14
- data/lib/cocoapods/generator/documentation.rb +0 -217
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e3045ee47d6e2cd362547dc9d63ca8b0eafdd8b
|
4
|
+
data.tar.gz: 323a2df715f634f7b5fe0d5febb3d02f475e132a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5cf5bf33c28c079571ea78cabc844bef8b08a1f667bc5b79ea256c54264740a0481b62b3739f08818b3ac2a29fb78c4603b84ed6f08269c57217e48aee5c5ac
|
7
|
+
data.tar.gz: 2c6b18713fbf58d90fef4290ccc550bd946cc0e5dcd404bb746ab49f3c3fe8d98790c637160ab0242408f25cab813479394ed7d98f539bd7960d25bdbbb6f578
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,81 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
## Master
|
6
6
|
|
7
|
+
## 0.20.0
|
8
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.19.0...0.20.0)
|
9
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.19.0...0.20.0)
|
10
|
+
• [cocoapods-downloader](https://github.com/CocoaPods/CLAide/compare/0.1.0...0.1.1)
|
11
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.5.5...0.6.0)
|
12
|
+
• [CLAide](https://github.com/CocoaPods/CLAide/compare/0.2.0...0.3.0)
|
13
|
+
|
14
|
+
###### Enhancements
|
15
|
+
|
16
|
+
* Introduces an experimental sandbox feature.
|
17
|
+
[#939](https://github.com/CocoaPods/CocoaPods/issues/939)
|
18
|
+
|
19
|
+
Let’s face it, even though we have a great community that spends an amazing
|
20
|
+
amount of time on curating the specifications, the internet can be a hostile
|
21
|
+
place and the community is growing too large to take a naive approach any
|
22
|
+
longer.
|
23
|
+
|
24
|
+
As such, we have started leveraging OS X’s sandbox facilities to disallow
|
25
|
+
unsanctioned operations. This is still very experimental and therefore has to
|
26
|
+
be used explicitely, for now, but that does **not** mean we don’t want you to
|
27
|
+
start using it and **report issues**.
|
28
|
+
|
29
|
+
To use the sandbox, simply use the `sandbox-pod` command instead. E.g.:
|
30
|
+
|
31
|
+
$ sandbox-pod install
|
32
|
+
|
33
|
+
In case of issues, be sure to check `/var/log/system.log` for ‘deny’ messages.
|
34
|
+
For instance, here’s an example where the sandbox denies read access to `/`:
|
35
|
+
|
36
|
+
May 16 00:23:35 Khaos kernel[0]: Sandbox: ruby(98430) deny file-read-data /
|
37
|
+
|
38
|
+
**NOTE**: _The above example is actually one that we know of. We’re not sure
|
39
|
+
yet which process causes this, but there shouldn’t be a need for any process
|
40
|
+
to read data from the root path anyways._
|
41
|
+
|
42
|
+
**NOTE 2**: _At the moment the sandbox is not compatible with the `:path` option
|
43
|
+
when referencing Pods that are not stored within the directory of the Podfile._
|
44
|
+
|
45
|
+
* The naked `pod` command now defaults to `pod install`.
|
46
|
+
[#958](https://github.com/CocoaPods/CocoaPods/issues/958)
|
47
|
+
|
48
|
+
* CocoaPods will look for the Podfile in the ancestors paths if one is
|
49
|
+
not available in the working directory.
|
50
|
+
[#940](https://github.com/CocoaPods/CocoaPods/issues/940)
|
51
|
+
|
52
|
+
* Documentation generation has been removed from CocoaPods as it graduated
|
53
|
+
to CocoaDocs. This decision was taken because CocoaDocs is a much better
|
54
|
+
solution which doesn't clutter Xcode's docsets while still allowing
|
55
|
+
access to the docsets with Xcode and with Dash. Removing this feature
|
56
|
+
keeps the installer leaner and easier to develop and paves the way for the
|
57
|
+
upcoming sandbox. Private pods can use pre install hook to generate the
|
58
|
+
documentation. If there will be enough demand this feature might be
|
59
|
+
reintegrated as plugin (see
|
60
|
+
[#1037](https://github.com/CocoaPods/CocoaPods/issues/1037)).
|
61
|
+
|
62
|
+
* Improved performance of the copy resources script and thus build time of
|
63
|
+
the integrated targets. Contribution by [@onato](https://github.com/onato)
|
64
|
+
[#1050](https://github.com/CocoaPods/CocoaPods/issues/1050).
|
65
|
+
|
66
|
+
* The changelog for the current version is printed after CocoaPods is
|
67
|
+
installed/updated.
|
68
|
+
[#853](https://github.com/CocoaPods/CocoaPods/issues/853).
|
69
|
+
|
70
|
+
|
71
|
+
###### Bug fixes
|
72
|
+
|
73
|
+
* Inheriting `inhibit_warnings` per pod is now working
|
74
|
+
[#1032](https://github.com/CocoaPods/CocoaPods/issues/1032)
|
75
|
+
* Fix copy resources script for iOS < 6 and OS X < 10.8 by removing the
|
76
|
+
`--reference-external-strings-file`
|
77
|
+
flag. [#1030](https://github.com/CocoaPods/CocoaPods/pull/1030)
|
78
|
+
* Fixed issues with the `:head` option of the Podfile.
|
79
|
+
[#1046](https://github.com/CocoaPods/CocoaPods/issues/1046)
|
80
|
+
[#1039](https://github.com/CocoaPods/CocoaPods/issues/1039)
|
81
|
+
|
7
82
|
## 0.19.1
|
8
83
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.19.0...0.19.1)
|
9
84
|
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.19.0...0.19.1)
|
@@ -29,6 +104,9 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
29
104
|
* CocoaPods now defines the `COCOAPODS=1` macro in the Pod and the Client
|
30
105
|
targets. This is useful for libraries which conditionally expose interfaces.
|
31
106
|
[#903](https://github.com/CocoaPods/CocoaPods/issues/903)
|
107
|
+
* Added support for the `private_header_files` attribute of the Specification
|
108
|
+
DSL.
|
109
|
+
[#998](https://github.com/CocoaPods/CocoaPods/issues/998)
|
32
110
|
* CocoaPods now defines the deployment target of the Pods project computed as
|
33
111
|
the minimum deployment target of the Pods libraries.
|
34
112
|
[#556](https://github.com/CocoaPods/CocoaPods/issues/556)
|
@@ -46,8 +124,8 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
46
124
|
|
47
125
|
###### Deprecations
|
48
126
|
|
49
|
-
* The `:local` flag in Podfile has been renamed to `:path` and
|
50
|
-
deprecated.
|
127
|
+
* The `:local` flag in Podfile has been renamed to `:path` and the old syntax
|
128
|
+
has been deprecated.
|
51
129
|
[#971](https://github.com/CocoaPods/CocoaPods/issues/971)
|
52
130
|
|
53
131
|
###### Bug fixes
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# CocoaPods – an Objective-C library manager
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/cocoapods.png)](http://badge.fury.io/rb/cocoapods)
|
4
|
-
[![Dependency Status](https://gemnasium.com/CocoaPods/CocoaPods.png)](https://gemnasium.com/CocoaPods/CocoaPods)
|
5
3
|
[![Build Status](https://travis-ci.org/CocoaPods/CocoaPods.png?branch=master)](https://travis-ci.org/CocoaPods/CocoaPods)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/CocoaPods/CocoaPods.png)](https://codeclimate.com/github/CocoaPods/CocoaPods)
|
5
|
+
[![Dependency Status](https://gemnasium.com/CocoaPods/CocoaPods.png)](https://gemnasium.com/CocoaPods/CocoaPods)
|
6
|
+
[![Gem Version](https://badge.fury.io/rb/cocoapods.png)](http://badge.fury.io/rb/cocoapods)
|
6
7
|
|
7
8
|
CocoaPods manages library dependencies for your Xcode project.
|
8
9
|
|
data/bin/sandbox-pod
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# This bin wrapper runs the `pod` command in a OS X sandbox. The reason for this
|
4
|
+
# is to ensure that people can’t use malicious code from pod specifications.
|
5
|
+
#
|
6
|
+
# It does this by creating a ‘seatbelt’ profile on the fly and executing the
|
7
|
+
# given command through `/usr/bin/sandbox-exec`. This profile format is an
|
8
|
+
# undocumented format, which uses TinyScheme to implement its DSL.
|
9
|
+
#
|
10
|
+
# Even though it uses a undocumented format, it’s actually very self-explanatory.
|
11
|
+
# Because we use a whitelist approach, `(deny default)`, any action that is
|
12
|
+
# denied is logged to `/var/log/system.log`. So tailing that should provide
|
13
|
+
# enough information on steps that need to be take to get something to work.
|
14
|
+
#
|
15
|
+
# For more information see:
|
16
|
+
#
|
17
|
+
# * https://github.com/CocoaPods/CocoaPods/issues/939
|
18
|
+
# * http://reverse.put.as/wp-content/uploads/2011/08/The-Apple-Sandbox-BHDC2011-Slides.pdf
|
19
|
+
# * http://reverse.put.as/wp-content/uploads/2011/08/The-Apple-Sandbox-BHDC2011-Paper.pdf
|
20
|
+
# * https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles
|
21
|
+
# * `$ man sandbox-exec`
|
22
|
+
# * `$ ls /usr/share/sandbox`
|
23
|
+
|
24
|
+
if $0 == __FILE__
|
25
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
26
|
+
end
|
27
|
+
require 'pathname'
|
28
|
+
require 'cocoapods/config'
|
29
|
+
|
30
|
+
|
31
|
+
pod_bin = File.expand_path('../pod', __FILE__)
|
32
|
+
pod_prefix = File.expand_path('../..', pod_bin)
|
33
|
+
|
34
|
+
require 'rbconfig'
|
35
|
+
ruby_bin = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
36
|
+
ruby_prefix = RbConfig::CONFIG['prefix']
|
37
|
+
|
38
|
+
prefixes = ['/bin', '/usr/bin', '/usr/libexec']
|
39
|
+
prefixes << `brew --prefix`.strip unless `which brew`.strip.empty?
|
40
|
+
# From asking people, it seems MacPorts does not have a `prefix` command, like
|
41
|
+
# Homebrew does, so make an educated guess:
|
42
|
+
unless (port = `which port`.strip).empty?
|
43
|
+
prefixes << File.dirname(File.dirname(port))
|
44
|
+
end
|
45
|
+
|
46
|
+
developer_prefix = `xcode-select --print-path`.strip
|
47
|
+
xcode_app_path = File.expand_path('../..', developer_prefix)
|
48
|
+
|
49
|
+
require 'erb'
|
50
|
+
profile = ERB.new(DATA.read, 0, '>').result(TOPLEVEL_BINDING)
|
51
|
+
#puts profile
|
52
|
+
|
53
|
+
command = ['/usr/bin/sandbox-exec', '-p', profile, pod_bin, *ARGV]
|
54
|
+
exec *command
|
55
|
+
|
56
|
+
|
57
|
+
__END__
|
58
|
+
(version 1)
|
59
|
+
(debug allow)
|
60
|
+
|
61
|
+
(import "mDNSResponder.sb")
|
62
|
+
|
63
|
+
(allow file-ioctl)
|
64
|
+
(allow sysctl-read)
|
65
|
+
(allow mach-lookup)
|
66
|
+
(allow ipc-posix-shm)
|
67
|
+
(allow process-fork)
|
68
|
+
(allow system-socket)
|
69
|
+
|
70
|
+
; TODO make this stricter if possible
|
71
|
+
(allow network-outbound)
|
72
|
+
|
73
|
+
(allow process-exec
|
74
|
+
(literal
|
75
|
+
"<%= pod_bin %>"
|
76
|
+
"<%= ruby_bin %>"
|
77
|
+
"<%= File.join(developer_prefix, 'usr/bin/xcrun') %>"
|
78
|
+
"<%= File.join(developer_prefix, 'usr/bin/xcodebuild') %>"
|
79
|
+
)
|
80
|
+
(regex
|
81
|
+
<% prefixes.each do |prefix| %>
|
82
|
+
#"^<%= prefix %>/*"
|
83
|
+
<% end %>
|
84
|
+
)
|
85
|
+
)
|
86
|
+
|
87
|
+
(allow file-read-metadata)
|
88
|
+
(allow file-read*
|
89
|
+
; This is currenly only added because using `xcodebuild` to build a resource
|
90
|
+
; bundle target starts a FSEvents stream on `/`. No idea why that would be
|
91
|
+
; needed, but for now it doesn’t seem like a real problem.
|
92
|
+
(literal "/")
|
93
|
+
(regex
|
94
|
+
; TODO see if we can restrict this more, but it's going to be hard
|
95
|
+
#"^/Users/[^.]+/*"
|
96
|
+
;#"^/Users/[^.]+/.netrc"
|
97
|
+
;#"^/Users/[^.]+/.gemrc"
|
98
|
+
;#"^/Users/[^.]+/.gem/*"
|
99
|
+
;#"^/Users/[^.]+/Library/.*"
|
100
|
+
#"^/Library/*"
|
101
|
+
#"^/System/Library/*"
|
102
|
+
#"^/usr/lib/*"
|
103
|
+
#"^/usr/share/*"
|
104
|
+
#"^/private/*"
|
105
|
+
#"^/dev/*"
|
106
|
+
#"^<%= ruby_prefix %>"
|
107
|
+
#"^<%= pod_prefix %>"
|
108
|
+
#"^<%= xcode_app_path %>"
|
109
|
+
#"^<%= Pod::Config.instance.repos_dir %>"
|
110
|
+
<% prefixes.each do |prefix| %>
|
111
|
+
#"^<%= prefix %>/*"
|
112
|
+
<% end %>
|
113
|
+
)
|
114
|
+
)
|
115
|
+
|
116
|
+
(allow file-write*
|
117
|
+
(literal
|
118
|
+
"/dev/dtracehelper"
|
119
|
+
"/dev/null"
|
120
|
+
)
|
121
|
+
(regex
|
122
|
+
#"^<%= Pod::Config.instance.project_root %>"
|
123
|
+
#"^<%= Pod::Config.instance.repos_dir %>"
|
124
|
+
#"^/Users/[^.]+/Library/Caches/CocoaPods/*"
|
125
|
+
#"^/dev/tty"
|
126
|
+
#"^/private/var"
|
127
|
+
)
|
128
|
+
)
|
129
|
+
|
130
|
+
(deny default)
|
data/lib/cocoapods.rb
CHANGED
@@ -9,8 +9,7 @@ module Pod
|
|
9
9
|
require 'cocoapods-core'
|
10
10
|
require 'cocoapods/file_list'
|
11
11
|
require 'cocoapods/config'
|
12
|
-
|
13
|
-
autoload :Downloader, 'cocoapods/downloader'
|
12
|
+
require 'cocoapods/downloader'
|
14
13
|
|
15
14
|
# Indicates an user error. This is defined in cocoapods-core.
|
16
15
|
#
|
@@ -55,7 +54,6 @@ module Pod
|
|
55
54
|
autoload :Acknowledgements, 'cocoapods/generator/acknowledgements'
|
56
55
|
autoload :BridgeSupport, 'cocoapods/generator/bridge_support'
|
57
56
|
autoload :CopyResourcesScript, 'cocoapods/generator/copy_resources_script'
|
58
|
-
autoload :Documentation, 'cocoapods/generator/documentation'
|
59
57
|
autoload :DummySource, 'cocoapods/generator/dummy_source'
|
60
58
|
autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
|
61
59
|
autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
|
data/lib/cocoapods/command.rb
CHANGED
@@ -5,7 +5,7 @@ module Pod
|
|
5
5
|
self.arguments = '[COMMAND]'
|
6
6
|
|
7
7
|
def initialize(argv)
|
8
|
-
@help_command = Pod::Command.parse(argv)
|
8
|
+
@help_command = Pod::Command.parse(argv)
|
9
9
|
super
|
10
10
|
end
|
11
11
|
|
@@ -16,7 +16,7 @@ module Pod
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def help_command
|
19
|
-
@help_command
|
19
|
+
@help_command
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -9,7 +9,6 @@ module Pod
|
|
9
9
|
def options
|
10
10
|
[
|
11
11
|
["--no-clean", "Leave SCM dirs like `.git' and `.svn' intact after downloading"],
|
12
|
-
["--no-doc", "Skip documentation generation with appledoc"],
|
13
12
|
["--no-integrate", "Skip integration of the Pods libraries in the Xcode project(s)"],
|
14
13
|
["--no-repo-update", "Skip running `pod repo update` before install"],
|
15
14
|
].concat(super)
|
@@ -22,7 +21,6 @@ module Pod
|
|
22
21
|
|
23
22
|
def initialize(argv)
|
24
23
|
config.clean = argv.flag?('clean', config.clean)
|
25
|
-
config.generate_docs = argv.flag?('doc', config.generate_docs)
|
26
24
|
config.integrate_targets = argv.flag?('integrate', config.integrate_targets)
|
27
25
|
config.skip_repo_update = !argv.flag?('repo-update', !config.skip_repo_update)
|
28
26
|
super
|
@@ -12,12 +12,12 @@ module Pod
|
|
12
12
|
self.arguments = '[QUERY]'
|
13
13
|
|
14
14
|
def self.options
|
15
|
-
[
|
16
|
-
"--full", "Search by name, summary, and description",
|
17
|
-
"--stats", "Show additional stats (like GitHub watchers and forks)",
|
18
|
-
"--ios", "Restricts the search to Pods supported on iOS",
|
19
|
-
"--osx", "Restricts the search to Pods supported on OS X"
|
20
|
-
]
|
15
|
+
[
|
16
|
+
["--full", "Search by name, summary, and description"],
|
17
|
+
["--stats", "Show additional stats (like GitHub watchers and forks)"],
|
18
|
+
["--ios", "Restricts the search to Pods supported on iOS"],
|
19
|
+
["--osx", "Restricts the search to Pods supported on OS X"]
|
20
|
+
].concat(super)
|
21
21
|
end
|
22
22
|
|
23
23
|
def initialize(argv)
|
data/lib/cocoapods/config.rb
CHANGED
@@ -11,8 +11,7 @@ module Pod
|
|
11
11
|
#
|
12
12
|
# ---
|
13
13
|
# skip_repo_update: true
|
14
|
-
#
|
15
|
-
# install_docs: false
|
14
|
+
# new_version_message: false
|
16
15
|
#
|
17
16
|
DEFAULTS = {
|
18
17
|
:verbose => false,
|
@@ -21,13 +20,13 @@ module Pod
|
|
21
20
|
:aggressive_cache => false,
|
22
21
|
|
23
22
|
:clean => true,
|
24
|
-
:generate_docs => true,
|
25
|
-
:install_docs => true,
|
26
23
|
:integrate_targets => true,
|
27
24
|
:new_version_message => true,
|
28
25
|
}
|
29
26
|
|
30
|
-
|
27
|
+
public
|
28
|
+
|
29
|
+
#-------------------------------------------------------------------------#
|
31
30
|
|
32
31
|
# @!group UI
|
33
32
|
|
@@ -42,13 +41,13 @@ module Pod
|
|
42
41
|
attr_accessor :silent
|
43
42
|
alias_method :silent?, :silent
|
44
43
|
|
45
|
-
# @return [Bool] Whether
|
46
|
-
#
|
44
|
+
# @return [Bool] Whether a message should be printed when a new version of
|
45
|
+
# CocoaPods is available.
|
47
46
|
#
|
48
47
|
attr_accessor :new_version_message
|
49
48
|
alias_method :new_version_message?, :new_version_message
|
50
49
|
|
51
|
-
|
50
|
+
#-------------------------------------------------------------------------#
|
52
51
|
|
53
52
|
# @!group Installation
|
54
53
|
|
@@ -57,18 +56,6 @@ module Pod
|
|
57
56
|
attr_accessor :clean
|
58
57
|
alias_method :clean?, :clean
|
59
58
|
|
60
|
-
# @return [Bool] Whether the documentation should be generated for the
|
61
|
-
# installed Pods.
|
62
|
-
#
|
63
|
-
attr_accessor :generate_docs
|
64
|
-
alias_method :generate_docs?, :generate_docs
|
65
|
-
|
66
|
-
# @return [Bool] Whether the generated documentation should be installed to
|
67
|
-
# Xcode.
|
68
|
-
#
|
69
|
-
attr_accessor :install_docs
|
70
|
-
alias_method :install_docs?, :install_docs
|
71
|
-
|
72
59
|
# @return [Bool] Whether CocoaPods should integrate a user target and build
|
73
60
|
# the workspace or just create the Pods project.
|
74
61
|
#
|
@@ -81,13 +68,24 @@ module Pod
|
|
81
68
|
attr_accessor :skip_repo_update
|
82
69
|
alias_method :skip_repo_update?, :skip_repo_update
|
83
70
|
|
71
|
+
# Allows to set whether the downloader should use more aggressive caching
|
72
|
+
# options.
|
73
|
+
#
|
74
|
+
# @note The aggressive cache has lead to issues if a tag is updated to
|
75
|
+
# point to another commit.
|
76
|
+
#
|
77
|
+
attr_writer :aggressive_cache
|
78
|
+
|
84
79
|
# @return [Bool] Whether the downloader should use more aggressive caching
|
85
80
|
# options.
|
86
81
|
#
|
87
|
-
|
88
|
-
|
82
|
+
def aggressive_cache?
|
83
|
+
@aggressive_cache || (ENV['CP_AGGRESSIVE_CACHE'] != 'FALSE')
|
84
|
+
end
|
85
|
+
|
86
|
+
public
|
89
87
|
|
90
|
-
|
88
|
+
#-------------------------------------------------------------------------#
|
91
89
|
|
92
90
|
# @!group Initialization
|
93
91
|
|
@@ -105,7 +103,9 @@ module Pod
|
|
105
103
|
@verbose && !silent
|
106
104
|
end
|
107
105
|
|
108
|
-
|
106
|
+
public
|
107
|
+
|
108
|
+
#-------------------------------------------------------------------------#
|
109
109
|
|
110
110
|
# @!group Paths
|
111
111
|
|
@@ -121,7 +121,22 @@ module Pod
|
|
121
121
|
# Podfile is located.
|
122
122
|
#
|
123
123
|
def installation_root
|
124
|
-
|
124
|
+
current_path = Pathname.pwd
|
125
|
+
unless @installation_root
|
126
|
+
while(!current_path.root?)
|
127
|
+
if podfile_path_in_dir(current_path)
|
128
|
+
@installation_root = current_path
|
129
|
+
unless current_path == Pathname.pwd
|
130
|
+
UI.puts ("[in #{current_path}]")
|
131
|
+
end
|
132
|
+
break
|
133
|
+
else
|
134
|
+
current_path = current_path.parent
|
135
|
+
end
|
136
|
+
end
|
137
|
+
@installation_root ||= Pathname.pwd
|
138
|
+
end
|
139
|
+
@installation_root
|
125
140
|
end
|
126
141
|
|
127
142
|
attr_writer :installation_root
|
@@ -143,23 +158,46 @@ module Pod
|
|
143
158
|
end
|
144
159
|
|
145
160
|
# @return [Podfile] The Podfile to use for the current execution.
|
161
|
+
# @return [Nil] If no Podfile is available.
|
146
162
|
#
|
147
163
|
def podfile
|
148
|
-
@podfile ||= Podfile.from_file(podfile_path) if podfile_path
|
164
|
+
@podfile ||= Podfile.from_file(podfile_path) if podfile_path
|
149
165
|
end
|
150
166
|
attr_writer :podfile
|
151
167
|
|
152
168
|
# @return [Lockfile] The Lockfile to use for the current execution.
|
169
|
+
# @return [Nil] If no Lockfile is available.
|
153
170
|
#
|
154
171
|
def lockfile
|
155
|
-
@lockfile ||= Lockfile.from_file(lockfile_path) if lockfile_path
|
172
|
+
@lockfile ||= Lockfile.from_file(lockfile_path) if lockfile_path
|
173
|
+
end
|
174
|
+
|
175
|
+
# Returns the path of the Podfile.
|
176
|
+
#
|
177
|
+
# @note The Podfile can be named either `CocoaPods.podfile.yaml`,
|
178
|
+
# `CocoaPods.podfile` or `Podfile`. The first two are preferred as
|
179
|
+
# they allow to specify an OS X UTI.
|
180
|
+
#
|
181
|
+
# @return [Pathname]
|
182
|
+
# @return [Nil]
|
183
|
+
#
|
184
|
+
def podfile_path
|
185
|
+
@podfile_path ||= podfile_path_in_dir(installation_root)
|
186
|
+
end
|
187
|
+
|
188
|
+
# Returns the path of the Lockfile.
|
189
|
+
#
|
190
|
+
# @note The Lockfile is named `Podfile.lock`.
|
191
|
+
#
|
192
|
+
def lockfile_path
|
193
|
+
@lockfile_path ||= installation_root + 'Podfile.lock'
|
156
194
|
end
|
157
195
|
|
158
|
-
|
196
|
+
private
|
159
197
|
|
160
|
-
|
198
|
+
#-------------------------------------------------------------------------#
|
161
199
|
|
162
|
-
#
|
200
|
+
# @!group Private helpers
|
163
201
|
|
164
202
|
# @return [Pathname] The path of the file which contains the user settings.
|
165
203
|
#
|
@@ -181,30 +219,38 @@ module Pod
|
|
181
219
|
end
|
182
220
|
end
|
183
221
|
|
184
|
-
#
|
222
|
+
# @return [Array<String>] The filenames that the Podfile can have ordered
|
223
|
+
# by priority.
|
185
224
|
#
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
path = installation_root + 'CocoaPods.podfile.yaml'
|
192
|
-
path = installation_root + 'CocoaPods.podfile' unless path.exist?
|
193
|
-
path = installation_root + 'Podfile' unless path.exist?
|
194
|
-
@podfile_path = path
|
195
|
-
end
|
196
|
-
@podfile_path
|
197
|
-
end
|
225
|
+
PODFILE_NAMES = [
|
226
|
+
'CocoaPods.podfile.yaml',
|
227
|
+
'CocoaPods.podfile',
|
228
|
+
'Podfile',
|
229
|
+
]
|
198
230
|
|
199
|
-
# Returns the path of the
|
231
|
+
# Returns the path of the Podfile in the given dir if any exists.
|
200
232
|
#
|
201
|
-
# @
|
233
|
+
# @param [Pathname] dir
|
234
|
+
# The directory where to look for the Podfile.
|
202
235
|
#
|
203
|
-
|
204
|
-
|
236
|
+
# @return [Pathname] The path of the Podfile.
|
237
|
+
# @return [Nil] If not Podfile was found in the given dir
|
238
|
+
#
|
239
|
+
def podfile_path_in_dir(dir)
|
240
|
+
PODFILE_NAMES.each do |filename|
|
241
|
+
candidate = dir + filename
|
242
|
+
if candidate.exist?
|
243
|
+
return candidate
|
244
|
+
end
|
245
|
+
end
|
246
|
+
nil
|
205
247
|
end
|
206
248
|
|
207
|
-
|
249
|
+
public
|
250
|
+
|
251
|
+
#-------------------------------------------------------------------------#
|
252
|
+
|
253
|
+
# @!group Singleton
|
208
254
|
|
209
255
|
# @return [Config] the current config instance creating one if needed.
|
210
256
|
#
|
@@ -223,8 +269,6 @@ module Pod
|
|
223
269
|
@instance = instance
|
224
270
|
end
|
225
271
|
|
226
|
-
#-------------------------------------------------------------------------#
|
227
|
-
|
228
272
|
# Provides support for accessing the configuration instance in other
|
229
273
|
# scopes.
|
230
274
|
#
|